メインコンテンツまでスキップ

Appendix A. JSON Schema Representation

この節では SCIM device schema extensions の RFC 原文を保持し, Device and EndpointApp resource types, BLE, DPP, Ethernet MAB, FDO, Zigbee, endpointAppsExt, JSON Schema, OpenAPI, IANA registrations, security considerations を含めます.

Appendix A.  JSON Schema Representation

A.1.  Resource Schema

   <CODE BEGINS>
   [
     {
       "schemas": ["urn:ietf:params:scim:schemas:core:2.0:ResourceType"\
                                                                      ],
       "id": "Device",
       "name": "Device",
       "endpoint": "/Devices",
       "description": "Device account.",
       "schema": "urn:ietf:params:scim:schemas:core:2.0:Device",
       "meta": {
         "location": "https://example.com/v2/ResourceTypes/Device",
         "resourceType": "ResourceType"
       }
     },
     {
       "schemas": ["urn:ietf:params:scim:schemas:core:2.0:ResourceType"\
                                                                      ],
       "id": "EndpointApp",
       "name": "EndpointApp",
       "endpoint": "/EndpointApps",
       "description": "Endpoint application such as device control and \
                                                            telemetry.",
       "schema": "urn:ietf:params:scim:schemas:core:2.0:EndpointApp",
       "meta": {
        "location": "https://example.com/v2/ResourceTypes/EndpointApps",
        "resourceType": "ResourceType"
       }
     }
   ]
   <CODE ENDS>

A.2.  Core Device Schema

   <CODE BEGINS>
   {
     "id": "urn:ietf:params:scim:schemas:core:2.0:Device",
     "name": "Device",
     "description": "Entry containing attributes about a device.",
     "attributes" : [
       {
         "name": "displayName",
         "type": "string",
         "description": "Human-readable name of the device, suitable \
    for displaying to end users, for example, 'BLE Heart Monitor' etc.",
         "multiValued": false,
         "required": false,
         "caseExact": false,
         "mutability": "readWrite",
         "returned": "default",
         "uniqueness": "none"
       },
       {
         "name": "active",
         "type": "boolean",
         "description": "A mutable boolean value indicating the device \
   administrative status. If true, the commands (such as connect, \
   disconnect, subscribe) that control app sends to the controller for \
   the devices will be processed by the controller. If false, any \
   command coming from the control app for the device will be \
                                           rejected by the controller.",
         "multiValued": false,
         "required": true,
         "caseExact": false,
         "mutability": "readWrite",
         "returned": "default",
         "uniqueness": "none"
       },
       {
         "name": "mudUrl",
         "type": "reference",
         "description": "A URL to MUD file of the device (RFC 8520).",
         "multiValued": false,
         "required": false,
         "caseExact": true,
         "mutability": "readWrite",
         "returned": "default",
         "uniqueness": "none"
       },
       {
         "name": "groups",
         "type": "complex",
         "multiValued": true,
         "description": "A list of groups to which the device belongs, \
   either through direct membership, through nested groups, or \
                                               dynamically calculated.",
         "required": false,
         "subAttributes": [
           {
             "name": "value",
             "type": "string",
             "multiValued": false,
             "description": "The identifier of the device's group.",
             "required": false,
             "caseExact": false,
             "mutability": "readOnly",
             "returned": "default",
             "uniqueness": "none"
           },
           {
             "name": "$ref",
             "type": "reference",
             "referenceTypes": [
               "Group"
             ],
             "multiValued": false,
             "description": "The URI of the corresponding 'Group' \
                                 resource to which the device belongs.",
             "required": false,
             "caseExact": false,
             "mutability": "readOnly",
             "returned": "default",
             "uniqueness": "none"
           },
           {
             "name": "display",
             "type": "string",
             "multiValued": false,
             "description": "A human-readable name, primarily used for \
                                         display purposes.  READ-ONLY.",
             "required": false,
             "caseExact": false,
             "mutability": "readOnly",
             "returned": "default",
             "uniqueness": "none"
           },
           {
             "name": "type",
             "type": "string",
             "multiValued": false,
             "description": "A label indicating the attribute's \
                               function, e.g., 'direct' or 'indirect'.",
             "required": false,
             "caseExact": false,
             "canonicalValues": [
               "direct",
               "indirect"
             ],
             "mutability": "readOnly",
             "returned": "default",
             "uniqueness": "none"
           }
         ],
         "mutability": "readOnly",
         "returned": "default"
       }
   ],
     "meta" : {
       "resourceType" : "Schema",
       "location" :
         "/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:Device"
     }
   }
   <CODE ENDS>

A.3.  EndpointApp Schema

   <CODE BEGINS>
   {
     "id": "urn:ietf:params:scim:schemas:core:2.0:EndpointApp",
     "name": "EndpointApp",
     "description": "Endpoint application and their credentials.",
     "attributes" : [
       {
         "name": "applicationType",
         "type": "string",
         "description": "This attribute will only contain two values: \
                                        deviceControl or telemetry.",
         "multiValued": false,
         "required": true,
         "caseExact": false,
         "mutability": "readOnly",
         "returned": "default",
         "uniqueness": "none"
       },
       {
         "name": "applicationName",
         "type": "string",
         "description": "Human-readable name of the application.",
         "multiValued": false,
         "required": true,
         "caseExact": false,
         "mutability": "readWrite",
         "returned": "default",
         "uniqueness": "none"
       },
       {
         "name": "certificateInfo",
         "type": "complex",
         "description": "Contains X.509 certificate's subject name and \
   root CA information associated with the device control or telemetry \
                                                                  app.",
         "multiValued": false,
         "required": false,
         "caseExact": false,
         "mutability": "readWrite",
         "returned": "default",
         "uniqueness": "none",
         "subAttributes" : [
           {
             "name" : "rootCA",
             "type" : "string",
             "description" : "The base64 encoding of the DER encoding \
                                               of the CA certificate.",
             "multiValued" : false,
             "required" : false,
             "caseExact" : true,
             "mutability" : "readWrite",
             "returned" : "default",
             "uniqueness" : "none"
           },
           {
             "name" : "subjectName",
             "type" : "string",
             "description" : "A Common Name (CN) of the form of CN = \
                                                            dnsName.",
             "multiValued" : false,
             "required" : true,
             "caseExact" : true,
             "mutability" : "readWrite",
             "returned" : "default",
             "uniqueness" : "none"
           }
         ]
       },
       {
         "name": "clientToken",
         "type": "string",
         "description": "This attribute contains a token that the \
   client will use to authenticate itself.  Each token may be a string \
                                       up to 500 characters in length.",
         "multiValued": false,
         "required": false,
         "caseExact": true,
         "mutability": "readOnly",
         "returned": "default",
         "uniqueness": "none"
       },
       {
         "name": "groups",
         "type": "complex",
         "multiValued": true,
         "description": "A list of groups to which an endpoint \
   application belongs, either through direct membership, through \
                             nested groups, or dynamically calculated.",
         "required": false,
         "subAttributes": [
           {
             "name": "value",
             "type": "string",
             "multiValued": false,
             "description": "The identifier of the endpoint application\
                                                             's group.",
             "required": false,
             "caseExact": false,
             "mutability": "readOnly",
             "returned": "default",
             "uniqueness": "none"
           },
           {
             "name": "$ref",
             "type": "reference",
             "referenceTypes": [
               "Group"
             ],
             "multiValued": false,
             "description": "The URI of the corresponding 'Group' \
                   resource to which the endpoint application belongs.",
             "required": false,
             "caseExact": false,
             "mutability": "readOnly",
             "returned": "default",
             "uniqueness": "none"
           },
           {
             "name": "display",
             "type": "string",
             "multiValued": false,
             "description": "A human-readable name, primarily used for \
                                         display purposes.  READ-ONLY.",
             "required": false,
             "caseExact": false,
             "mutability": "readOnly",
             "returned": "default",
             "uniqueness": "none"
           },
           {
             "name": "type",
             "type": "string",
             "multiValued": false,
             "description": "A label indicating the attribute's \
                               function, e.g., 'direct' or 'indirect'.",
             "required": false,
             "caseExact": false,
             "canonicalValues": [
               "direct",
               "indirect"
             ],
             "mutability": "readOnly",
             "returned": "default",
             "uniqueness": "none"
           }
         ],
         "mutability": "readOnly",
         "returned": "default"
       }
     ],
     "meta" : {
       "resourceType" : "Schema",
       "location" :
         "/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:EndpointApp"
     }
   }
   <CODE ENDS>

A.4.  BLE Extension Schema

   <CODE BEGINS>
   [
     {
       "id": "urn:ietf:params:scim:schemas:extension:ble:2.0:Device",
       "name": "bleExtension",
       "description": "BLE extension for device account.",
       "attributes" : [
         {
           "name": "versionSupport",
           "type": "string",
           "description": "Provides a list of all the BLE versions \
   supported by the device, for example, [4.1, 4.2, 5.0, 5.1, 5.2, 5.4]\
                                                                     .",
           "multiValued": true,
           "required": true,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         },
         {
           "name": "deviceMacAddress",
           "type": "string",
           "pattern": "^[0-9A-Fa-f]{2}(:[0-9A-Fa-f]{2}){5}$",
           "description": "A unique public MAC address assigned by the \
                                                         manufacturer.",
           "multiValued": false,
           "required": true,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "Manufacturer"
         },
         {
           "name": "isRandom",
           "type": "boolean",
             "description": "The isRandom flag is taken from the BLE \
   core specifications 5.4. If true, device is using a random address\
                                            .  Default value is false.",
           "multiValued": false,
           "required": false,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         },
         {
           "name": "separateBroadcastAddress",
           "type": "string",
           "description": "When present, this address is used for \
   broadcasts/advertisements.  This value MUST NOT be set when an IRK \
              is provided.  Its form is the same as deviceMacAddress.",
           "multiValued": true,
           "required": false,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         },
         {
           "name": "irk",
           "type": "string",
           "description": "Identity Resolving Key (IRK), which is \
   unique for every device. It is used to resolve a random address. \
     This value MUST NOT be set when separateBroadcastAddress is set.",
           "multiValued": false,
           "required": false,
           "caseExact": false,
           "mutability": "writeOnly",
           "returned": "never",
           "uniqueness": "Manufacturer"
         },
         {
           "name": "mobility",
           "type": "boolean",
           "description": "If set to true, the BLE device will \
   automatically connect to the closest AP. For example, if a BLE \
   device is connected with AP-1 and moves out of range but comes in \
          range of AP-2, it will be disconnected with AP-1 and \
          connected with AP-2.",
           "multiValued": false,
           "required": false,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         },
         {
           "name": "pairingMethods",
           "type": "string",
           "description": "List of pairing methods associated with the \
                                     BLE device, stored as schema URI.",
           "multiValued": true,
           "required": true,
           "caseExact": true,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         }
       ],
       "meta" : {
         "resourceType" : "Schema",
         "location" : "/v2/Schemas/urn:ietf:params:scim:schemas:\
                                               extension:ble:2.0:Device"
       }
     },
     {
       "id": "urn:ietf:params:scim:schemas:extension:pairingNull:2.0:\
                                                                Device",
       "name": "nullPairing",
       "description": "Null pairing method for BLE. It is included for \
                        the devices that do not have a pairing method.",
       "meta" : {
         "resourceType" : "Schema",
         "location" : "/v2/Schemas/urn:ietf:params:scim:schemas:\
                                       extension:pairingNull:2.0:Device"
       }
     },
     {
       "id": "urn:ietf:params:scim:schemas:extension:pairingJustWorks:2\
                                                             .0:Device",
       "name": "pairingJustWorks",
       "description": "Just Works pairing method for BLE.",
       "attributes" : [
         {
           "name": "key",
           "type": "integer",
           "description": "Just Works does not have any key value. For \
                    completeness, it is added with a key value 'null'.",
           "multiValued": false,
           "required": false,
           "caseExact": false,
           "mutability": "immutable",
           "returned": "default",
           "uniqueness": "none"
         }
       ],
       "meta" : {
         "resourceType" : "Schema",
         "location" : "/v2/Schemas/urn:ietf:params:scim:schemas:\
                                  extension:pairingJustWorks:2.0:Device"
       }
     },
     {
       "id": "urn:ietf:params:scim:schemas:extension:pairingPassKey:2.0\
                                                               :Device",
       "name": "pairingPassKey",
       "description": "Pass key pairing method for BLE.",
       "attributes" : [
         {
           "name": "key",
           "type": "integer",
           "description": "A six-digit passkey for BLE a device. The \
                                         pattern of key is ^[0-9]{6}$.",
           "multiValued": false,
           "required": true,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         }
       ],
       "meta" : {
         "resourceType" : "Schema",
         "location" : "/v2/Schemas/urn:ietf:params:scim:schemas:\
                                    extension:pairingPassKey:2.0:Device"
       }
     },
     {
       "id": "urn:ietf:params:scim:schemas:extension:pairingOOB:2.0:\
                                                                Device",
       "name": "pairingOOB",
       "description": "Out-of-band pairing method for BLE.",
       "attributes" : [
         {
           "name": "key",
           "type": "string",
           "description": "A key value retrieved from out-of-band \
                                                   source such as NFC.",
           "multiValued": false,
           "required": true,
           "caseExact": true,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         },
         {
           "name": "randomNumber",
           "type": "integer",
           "description": "Nonce added to the key.",
           "multiValued": false,
           "required": true,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         },
         {
           "name": "confirmationNumber",
           "type": "integer",
           "description": "Some solutions require confirmation number \
                                          in RESTful message exchange.",
           "multiValued": false,
           "required": false,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         }
       ],
       "meta" : {
         "resourceType" : "Schema",
         "location" : "/v2/Schemas/urn:ietf:params:scim:schemas:\
                                        extension:pairingOOB:2.0:Device"
       }
     }
   ]
   <CODE ENDS>

A.5.  DPP Extension Schema

   <CODE BEGINS>
   {
       "id": "urn:ietf:params:scim:schemas:extension:dpp:2.0:Device",
       "name": "dppExtension",
       "description": "Device extension schema for Wi-Fi Easy \
                       Connect / Device Provisioning Protocol (DPP).",
       "attributes" : [
         {
           "name": "dppVersion",
           "type": "integer",
           "description": "Version of DPP this device supports.",
           "multiValued": false,
           "required": true,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         },
         {
           "name": "bootstrappingMethod",
           "type": "string",
           "description": "The list of all the bootstrapping methods \
             available on the enrollee device, for example, [QR, NFC].",
           "multiValued": true,
           "required": false,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         },
         {
           "name": "bootstrapKey",
           "type": "string",
           "description": "A base64-encoded Elliptic Curve Diffie-\
                   Hellman public key (may be P-256, P-384, or P-521).",
           "multiValued": false,
           "required": true,
           "caseExact": true,
           "mutability": "writeOnly",
           "returned": "never",
           "uniqueness": "none"
         },
         {
           "name": "deviceMacAddress",
           "type": "string",
           "pattern": "^[0-9A-Fa-f]{2}(:[0-9A-Fa-f]{2}){5}$",
           "description": "A unique public MAC address assigned by the \
                                                         manufacturer.",
           "multiValued": false,
           "required": false,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "Manufacturer"
         },
         {
           "name": "classChannel",
           "type": "string",
           "description": "A list of global operating class and \
   channel shared as bootstrapping information. It is formatted as \
                         class/channel, for example, '81/1', '115/36'.",
           "multiValued": true,
           "required": false,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         },
         {
           "name": "serialNumber",
           "type": "string",
           "description": "An alphanumeric serial number that may also \
                               be passed as bootstrapping information.",
           "multiValued": false,
           "required": false,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "none"
         }

       ],
       "meta" : {
         "resourceType" : "Schema",
         "location" : "/v2/Schemas/urn:ietf:params:scim:schemas:\
                                               extension:dpp:2.0:Device"
       }
     }
   <CODE ENDS>

A.6.  Ethernet MAB Extension Schema

   <CODE BEGINS>
   {
     "id": "urn:ietf:params:scim:schemas:extension:ethernet-mab:2.0:\
                                                                Device",
     "name": "ethernetMabExtension",
     "description": "Device extension schema for MAC Authentication \
                                                               Bypass.",
     "attributes" : [
         {
           "name": "deviceMacAddress",
           "type": "string",
           "pattern": "^[0-9A-Fa-f]{2}(:[0-9A-Fa-f]{2}){5}$",
           "description": "A MAC address assigned by the manufacturer.",
           "multiValued": false,
           "required": true,
           "caseExact": false,
           "mutability": "readWrite",
           "returned": "default",
           "uniqueness": "Manufacturer"
         }
     ],
     "meta" : {
       "resourceType" : "Schema",
       "location" : "/v2/Schemas/urn:ietf:params:scim:schemas:extension\
                                               :ethernet-mab:2.0:Device"
     }
   }
   <CODE ENDS>

A.7.  FDO Extension Schema

   <CODE BEGINS>
   {
     "id": "urn:ietf:params:scim:schemas:extension:fido-device-onboard:\
                                                           2.0:Device",
     "name": "FDOExtension",
     "description": "Device extension schema for FIDO Device Onboard (\
                                                                 FDO).",
     "attributes" : [
         {
           "name": "fdoVoucher",
           "type": "string",
           "description": "A voucher as defined in the FDO \
                                                        specification.",
           "multiValued": false,
           "required": true,
           "caseExact": false,
           "mutability": "writeOnly",
           "returned": "never",
           "uniqueness": "Manufacturer"
         }
     ],
     "meta" : {
       "resourceType" : "Schema",
       "location" : "/v2/Schemas/urn:ietf:params:scim:schemas:extension\
                                       :fido-device-onboard:2.0:Device"
     }
   }
   <CODE ENDS>

A.8.  Zigbee Extension Schema

   <CODE BEGINS>
   {
     "id": "urn:ietf:params:scim:schemas:extension:zigbee:2.0:Device",
     "name": "zigbeeExtension",
     "description": "Device extension schema for Zigbee.",
     "attributes" : [
       {
         "name": "versionSupport",
         "type": "string",
         "description": "Provides a list of all the Zigbee versions \
                          supported by the device, for example, [3.0].",
         "multiValued": true,
         "required": true,
         "caseExact": false,
         "mutability": "readWrite",
         "returned": "default",
         "uniqueness": "none"
       },
       {
         "name": "deviceEui64Address",
         "type": "string",
         "pattern": "^[0-9A-Fa-f]{2}(:[0-9A-Fa-f]{2}){7}$",
         "description": "The 64-bit Extended Unique Identifier \
                                             (EUI-64) device address.",
         "multiValued": false,
         "required": true,
         "caseExact": false,
         "mutability": "readWrite",
         "returned": "default",
         "uniqueness": "none"
       }
     ],
     "meta" : {
       "resourceType" : "Schema",
       "location" : "/v2/Schemas/urn:ietf:params:scim:schemas:extension\
                                                     :zigbee:2.0:Device"
     }
   }
   <CODE ENDS>

A.9.  endpointAppsExt Extension Schema

   <CODE BEGINS>
   {
     "id": "urn:ietf:params:scim:schemas:extension:endpointAppsExt:2.0:\
                                                                Device",
     "name": "endpointAppsExt",
     "description": "Extension for partner endpoint applications that \
                can onboard, control, and communicate with the device.",
     "attributes" : [
       {
         "name": "applications",
         "type": "complex",
         "description": "Includes references to two types of \
   applications that connect with enterprise, i.e., deviceControl and \
                                                            telemetry.",
         "multiValued": true,
         "required": true,
         "caseExact": false,
         "mutability": "readWrite",
         "returned": "default",
         "uniqueness": "none",
         "subAttributes" : [
           {
             "name" : "value",
             "type" : "string",
             "description" : "The identifier of the EndpointApp.",
             "multiValued" : false,
             "required" : true,
             "caseExact" : false,
             "mutability" : "readWrite",
             "returned" : "default",
             "uniqueness" : "none"
           },
           {
             "name" : "$ref",
             "type" : "reference",
             "referenceTypes" : "EndpointApps",
             "description" : "The URI of the corresponding EndpointApp\
            resource that will control or obtain data from the device.",
             "multiValued" : false,
             "required" : true,
             "caseExact" : true,
             "mutability" : "readOnly",
             "returned" : "default",
             "uniqueness" : "none"
           }
         ]
       },
       {
         "name": "deviceControlEnterpriseEndpoint",
         "type": "reference",
         "description": "The URL of the enterprise endpoint that \
          device control apps use to reach enterprise network gateway.",
         "multiValued": false,
         "required": true,
         "caseExact": true,
         "mutability": "readOnly",
         "returned": "default",
         "uniqueness": "Enterprise"
       },
       {
         "name": "telemetryEnterpriseEndpoint",
         "type": "reference",
         "description": "The URL of the enterprise endpoint that \
               telemetry apps use to reach enterprise network gateway.",
         "multiValued": false,
         "required": false,
         "caseExact": true,
         "mutability": "readOnly",
         "returned": "default",
         "uniqueness": "Enterprise"
       }
     ],
     "meta" : {
       "resourceType" : "Schema",
       "location" : "/v2/Schemas/urn:ietf:params:scim:schemas:extension\
                                            :endpointAppsExt:2.0:Device"
     }
   }
   <CODE ENDS>