From 799695a72e6a9d13ceb80d3959b2baee5d1c286c Mon Sep 17 00:00:00 2001 From: Oleksandr Mordyk Date: Thu, 14 Nov 2024 04:01:38 -0800 Subject: [PATCH 1/3] Add ocs-api-swagger.json Dynamic scanning requires this file. Signed-off-by: Oleksandr Mordyk --- docs/ocs-api-swagger.json | 372 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 372 insertions(+) create mode 100644 docs/ocs-api-swagger.json diff --git a/docs/ocs-api-swagger.json b/docs/ocs-api-swagger.json new file mode 100644 index 0000000..3ce86fb --- /dev/null +++ b/docs/ocs-api-swagger.json @@ -0,0 +1,372 @@ +{ + "swagger": "2.0", + "info": { + "description": "[Intel FDO](https://software.intel.com/en-us/secure-device-onboard) (FIDO Device Onboard) is a technology that is created by Intel to make it easy and secure to configure edge devices and associate them with an Open Horizon Management Hub instance. Open Horizon has added support for FDO-enabled devices so that the agent will be installed on the device and registered to the Open Horizon Management Hub with zero touch (by simply powering on the device).

Examples of using this API:

`curl -sS $HZN_FDO_SVC_URL/version && echo`
`curl -sS -w %{http_code} -u $HZN_ORG_ID/$HZN_EXCHANGE_USER_AUTH $HZN_FDO_SVC_URL/orgs/$HZN_ORG_ID/fdo/vouchers | jq`

Note: Some of these APIs can also be run via the `hzn` command.", + "version": "1.2.0", + "title": "Open Horizon Support for FDO", + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "host": "open-horizon-mgmt-hub", + "basePath": "/api", + "tags": [ + { + "name": "version", + "description": "Get version number" + }, + { + "name": "vouchers", + "description": "Manage device ownership vouchers" + }, + { + "name": "keys", + "description": "Manage device owner keys" + }, + { + "name": "To0", + "description": "Manage Transfer of Ownership protocol 0" + }, + { + "name": "To2", + "description": "Manage Transfer of Ownership protocol 2" + } + ], + "schemes": [ + "https", + "http" + ], + "paths": { + "/version": { + "get": { + "tags": [ + "version" + ], + "summary": "Get OCS API version", + "description": "Note: This API does not require credentials.", + "operationId": "getVersion", + "produces": [ + "text/plain" + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/Version" + } + } + } + } + }, + "/fdo/version": { + "get": { + "tags": [ + "version" + ], + "summary": "Get FDO Owner service version", + "description": "Note: This API does not require credentials.", + "operationId": "getFdoVersion", + "produces": [ + "text/plain" + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/Version" + } + } + } + } + }, + "/orgs/{org-id}/fdo/vouchers": { + "get": { + "tags": [ + "vouchers" + ], + "summary": "Get list of imported voucher IDs", + "description": "Get list of imported voucher IDs", + "operationId": "getVouchers", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the vouchers you want", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/VoucherIdList" + } + }, + "401": { + "description": "Invalid credentials" + }, + "403": { + "description": "Permission denied" + } + } + }, + "post": { + "tags": [ + "vouchers" + ], + "summary": "Import a voucher into the management hub", + "description": "Import a voucher into the management hub", + "operationId": "importVoucher", + "consumes": [ + "text/plain" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the voucher you are importing", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "description": "Voucher to be imported", + "required": true, + "schema": { + "$ref": "#/definitions/Voucher" + } + } + ], + "responses": { + "200": { + "description": "Voucher imported" + }, + "400": { + "description": "Invalid input" + }, + "401": { + "description": "Invalid credentials" + }, + "403": { + "description": "Permission denied" + }, + "500": { + "description": "Unknown error importing voucher" + } + } + } + }, + "/orgs/{org-id}/fdo/vouchers/{device-id}": { + "get": { + "tags": [ + "vouchers" + ], + "summary": "Get one imported voucher", + "description": "Get one imported voucher", + "operationId": "getVoucher", + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the device you want the voucher for", + "required": true, + "type": "string" + }, + { + "name": "device-id", + "in": "path", + "description": "ID of the device you want the voucher for", + "required": true, + "type": "string" + } + ], + "produces": [ + "text/plain" + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/Voucher" + } + }, + "401": { + "description": "Invalid credentials" + }, + "403": { + "description": "Permission denied" + }, + "404": { + "description": "Voucher not found" + } + } + } + }, + "/orgs/{org-id}/fdo/certificate/{alias}": { + "get": { + "tags": [ + "keys" + ], + "summary": "Get a public key", + "description": "Get a specific public key based off the device alias returned during device initialization", + "operationId": "getKeys", + "produces": [ + "text/plain" + ], + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the keys you want", + "required": true, + "type": "string" + }, + { + "name": "alias", + "in": "path", + "description": "", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/KeyList" + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Invalid credentials" + }, + "403": { + "description": "Permission denied" + } + } + } + }, + "/orgs/{org-id}/fdo/to0/{device-id}": { + "get": { + "tags": [ + "To0" + ], + "summary": "Initiate To0", + "description": "Initiate To0 for a specific device id", + "operationId": "getTo0", + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the key you want", + "required": true, + "type": "string" + }, + { + "name": "device-id", + "in": "path", + "description": "ID of the device you want the voucher for", + "required": true, + "type": "string" + } + ], + "produces": [ + "text/plain" + ], + "responses": { + "200": { + "description": "Successful. To0 has been initiated.", + "schema": { + "$ref": "#/definitions/To0" + } + }, + "401": { + "description": "Invalid credentials" + }, + "403": { + "description": "Permission denied" + }, + "404": { + "description": "Device ID not found" + } + } + } + }, + "/orgs/{org-id}/fdo/redirect": { + "get": { + "tags": [ + "To2" + ], + "summary": "Get To2 Address", + "description": "Get the To2 address that has been set by the OCS", + "operationId": "getTo2", + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the key you want", + "required": true, + "type": "string" + } + ], + "produces": [ + "text/plain" + ], + "responses": { + "200": { + "description": "Successful. Returns To2 address.", + "schema": { + "$ref": "#/definitions/To0" + } + }, + "401": { + "description": "Invalid credentials" + }, + "403": { + "description": "Permission denied" + } + } + } + } + }, + "definitions": { + "Version": { + "type": "string" + }, + "Voucher": { + "type": "object", + "xml": { + "name": "Voucher" + } + }, + "VoucherIdList": { + "type": "array", + "items": { + "type": "string", + "description": "voucher device id" + } + }, + "PublicKeyFile": { + "type": "string" + }, + "To0": { + "type": "string", + "description": "To0" + } + }, + "externalDocs": { + "description": "Find out more about Open Horizon Support for FDO", + "url": "https://github.com/open-horizon/FDO-support" + } +} \ No newline at end of file From 327d7261543e7fbc30e02ec6969be2ce8dba99a8 Mon Sep 17 00:00:00 2001 From: Oleksandr Mordyk Date: Thu, 14 Nov 2024 04:25:24 -0800 Subject: [PATCH 2/3] Update json with the latest changes Signed-off-by: Oleksandr Mordyk --- docs/ocs-api-swagger.json | 757 ++++++++++++++++++++------------------ 1 file changed, 400 insertions(+), 357 deletions(-) diff --git a/docs/ocs-api-swagger.json b/docs/ocs-api-swagger.json index 3ce86fb..972d18c 100644 --- a/docs/ocs-api-swagger.json +++ b/docs/ocs-api-swagger.json @@ -1,372 +1,415 @@ { - "swagger": "2.0", - "info": { - "description": "[Intel FDO](https://software.intel.com/en-us/secure-device-onboard) (FIDO Device Onboard) is a technology that is created by Intel to make it easy and secure to configure edge devices and associate them with an Open Horizon Management Hub instance. Open Horizon has added support for FDO-enabled devices so that the agent will be installed on the device and registered to the Open Horizon Management Hub with zero touch (by simply powering on the device).

Examples of using this API:

`curl -sS $HZN_FDO_SVC_URL/version && echo`
`curl -sS -w %{http_code} -u $HZN_ORG_ID/$HZN_EXCHANGE_USER_AUTH $HZN_FDO_SVC_URL/orgs/$HZN_ORG_ID/fdo/vouchers | jq`

Note: Some of these APIs can also be run via the `hzn` command.", - "version": "1.2.0", - "title": "Open Horizon Support for FDO", - "license": { - "name": "Apache 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0.html" - } - }, - "host": "open-horizon-mgmt-hub", - "basePath": "/api", - "tags": [ - { - "name": "version", - "description": "Get version number" - }, - { - "name": "vouchers", - "description": "Manage device ownership vouchers" - }, - { - "name": "keys", - "description": "Manage device owner keys" + "openapi": "3.0.1", + "info": { + "title": "Open Horizon Support for FDO", + "description": "[FDO](https://software.intel.com/en-us/secure-device-onboard) (FIDO Device Onboard) is a technology that is contributed by Intel to make it easy and secure to configure edge devices and associate them with an Open Horizon Management Hub instance. Open Horizon has added support for FDO-enabled devices so that the agent will be installed on the device and registered to the Open Horizon Management Hub with zero touch (by simply powering on the device).

Examples of using this API:

`curl -sS $HZN_FDO_SVC_URL/api/version && echo`
`curl -sS -w %{http_code} -u $HZN_EXCHANGE_USER_AUTH $HZN_FDO_SVC_URL/api/orgs/$HZN_ORG_ID/fdo/vouchers | jq`

Note: Some of these APIs can also be run via the `hzn` command.", + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "1.4.0" }, - { - "name": "To0", - "description": "Manage Transfer of Ownership protocol 0" + "externalDocs": { + "description": "Find out more about Open Horizon Support for FDO", + "url": "https://github.com/open-horizon/FDO-support" }, - { - "name": "To2", - "description": "Manage Transfer of Ownership protocol 2" - } - ], - "schemes": [ - "https", - "http" - ], - "paths": { - "/version": { - "get": { - "tags": [ - "version" - ], - "summary": "Get OCS API version", - "description": "Note: This API does not require credentials.", - "operationId": "getVersion", - "produces": [ - "text/plain" - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/Version" - } - } + "servers": [ + { + "url": "https://localhost:9008" + }, + { + "url": "http://localhost:9008" } - } - }, - "/fdo/version": { - "get": { - "tags": [ - "version" - ], - "summary": "Get FDO Owner service version", - "description": "Note: This API does not require credentials.", - "operationId": "getFdoVersion", - "produces": [ - "text/plain" - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/Version" - } - } + ], + "tags": [ + { + "name": "version", + "description": "Get version number" + }, + { + "name": "vouchers", + "description": "Manage device ownership vouchers" + }, + { + "name": "keys", + "description": "Manage device owner keys" + }, + { + "name": "To0", + "description": "Manage Transfer of Ownership protocol 0" + }, + { + "name": "To2", + "description": "Manage Transfer of Ownership protocol 2" } - } - }, - "/orgs/{org-id}/fdo/vouchers": { - "get": { - "tags": [ - "vouchers" - ], - "summary": "Get list of imported voucher IDs", - "description": "Get list of imported voucher IDs", - "operationId": "getVouchers", - "produces": [ - "application/json" - ], - "parameters": [ - { - "name": "org-id", - "in": "path", - "description": "org ID of the vouchers you want", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/VoucherIdList" + ], + "paths": { + "/api/version": { + "get": { + "tags": [ + "version" + ], + "summary": "Get Owner Companion Service (OCS) API version", + "description": "Note: This API does not require credentials.", + "operationId": "getVersion", + "responses": { + "200": { + "description": "successful operation", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Version" + } + } + } + } + } } - }, - "401": { - "description": "Invalid credentials" - }, - "403": { - "description": "Permission denied" - } - } - }, - "post": { - "tags": [ - "vouchers" - ], - "summary": "Import a voucher into the management hub", - "description": "Import a voucher into the management hub", - "operationId": "importVoucher", - "consumes": [ - "text/plain" - ], - "produces": [ - "application/json" - ], - "parameters": [ - { - "name": "org-id", - "in": "path", - "description": "org ID of the voucher you are importing", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "description": "Voucher to be imported", - "required": true, - "schema": { - "$ref": "#/definitions/Voucher" + }, + "/api/fdo/version": { + "get": { + "tags": [ + "version" + ], + "summary": "Get FDO Owner service version", + "description": "Note: This API does not require credentials.", + "operationId": "getFdoVersion", + "responses": { + "200": { + "description": "successful operation", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Version" + } + } + } + } + } } - } - ], - "responses": { - "200": { - "description": "Voucher imported" - }, - "400": { - "description": "Invalid input" - }, - "401": { - "description": "Invalid credentials" - }, - "403": { - "description": "Permission denied" - }, - "500": { - "description": "Unknown error importing voucher" - } - } - } - }, - "/orgs/{org-id}/fdo/vouchers/{device-id}": { - "get": { - "tags": [ - "vouchers" - ], - "summary": "Get one imported voucher", - "description": "Get one imported voucher", - "operationId": "getVoucher", - "parameters": [ - { - "name": "org-id", - "in": "path", - "description": "org ID of the device you want the voucher for", - "required": true, - "type": "string" - }, - { - "name": "device-id", - "in": "path", - "description": "ID of the device you want the voucher for", - "required": true, - "type": "string" - } - ], - "produces": [ - "text/plain" - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/Voucher" + }, + "/api/orgs/{org-id}/fdo/vouchers": { + "get": { + "tags": [ + "vouchers" + ], + "summary": "Get list of imported voucher IDs", + "description": "Get list of imported voucher IDs", + "operationId": "getVouchers", + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the vouchers you want", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VoucherIdList" + } + } + } + }, + "401": { + "description": "Invalid credentials", + "content": {} + }, + "403": { + "description": "Permission denied", + "content": {} + } + } + }, + "post": { + "tags": [ + "vouchers" + ], + "summary": "Import a voucher into the management hub", + "description": "Import a voucher into the management hub", + "operationId": "importVoucher", + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the voucher you are importing", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Voucher to be imported", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Voucher" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Voucher imported", + "content": {} + }, + "400": { + "description": "Invalid input", + "content": {} + }, + "401": { + "description": "Invalid credentials", + "content": {} + }, + "403": { + "description": "Permission denied", + "content": {} + }, + "500": { + "description": "Unknown error importing voucher", + "content": {} + } + }, + "x-codegen-request-body-name": "body" } - }, - "401": { - "description": "Invalid credentials" - }, - "403": { - "description": "Permission denied" - }, - "404": { - "description": "Voucher not found" - } - } - } - }, - "/orgs/{org-id}/fdo/certificate/{alias}": { - "get": { - "tags": [ - "keys" - ], - "summary": "Get a public key", - "description": "Get a specific public key based off the device alias returned during device initialization", - "operationId": "getKeys", - "produces": [ - "text/plain" - ], - "parameters": [ - { - "name": "org-id", - "in": "path", - "description": "org ID of the keys you want", - "required": true, - "type": "string" - }, - { - "name": "alias", - "in": "path", - "description": "", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "successful operation", - "schema": { - "$ref": "#/definitions/KeyList" + }, + "/api/orgs/{org-id}/fdo/vouchers/{device-id}": { + "get": { + "tags": [ + "vouchers" + ], + "summary": "Get one imported voucher", + "description": "Get one imported voucher", + "operationId": "getVoucher", + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the device you want the voucher for", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "device-id", + "in": "path", + "description": "ID of the device you want the voucher for", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Voucher" + } + } + } + }, + "401": { + "description": "Invalid credentials", + "content": {} + }, + "403": { + "description": "Permission denied", + "content": {} + }, + "404": { + "description": "Voucher not found", + "content": {} + } + } } - }, - "400": { - "description": "Bad Request" - }, - "401": { - "description": "Invalid credentials" - }, - "403": { - "description": "Permission denied" - } - } - } - }, - "/orgs/{org-id}/fdo/to0/{device-id}": { - "get": { - "tags": [ - "To0" - ], - "summary": "Initiate To0", - "description": "Initiate To0 for a specific device id", - "operationId": "getTo0", - "parameters": [ - { - "name": "org-id", - "in": "path", - "description": "org ID of the key you want", - "required": true, - "type": "string" - }, - { - "name": "device-id", - "in": "path", - "description": "ID of the device you want the voucher for", - "required": true, - "type": "string" - } - ], - "produces": [ - "text/plain" - ], - "responses": { - "200": { - "description": "Successful. To0 has been initiated.", - "schema": { - "$ref": "#/definitions/To0" + }, + "/api/orgs/{org-id}/fdo/certificate/{alias}": { + "get": { + "tags": [ + "keys" + ], + "summary": "Get a public key", + "description": "Get a specific public key based off the device alias returned during device initialization", + "operationId": "getKeys", + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the keys you want", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "alias", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/PublicKeyFile" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": {} + }, + "401": { + "description": "Invalid credentials", + "content": {} + }, + "403": { + "description": "Permission denied", + "content": {} + } + } + } + }, + "/api/orgs/{org-id}/fdo/to0/{device-id}": { + "get": { + "tags": [ + "To0" + ], + "summary": "Initiate To0", + "description": "Initiate To0 for a specific device id", + "operationId": "getTo0", + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the key you want", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "device-id", + "in": "path", + "description": "ID of the device you want the voucher for", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful. To0 has been initiated.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/To0" + } + } + } + }, + "401": { + "description": "Invalid credentials", + "content": {} + }, + "403": { + "description": "Permission denied", + "content": {} + }, + "404": { + "description": "Device ID not found", + "content": {} + } + } + } + }, + "/api/orgs/{org-id}/fdo/redirect": { + "get": { + "tags": [ + "To2" + ], + "summary": "Get To2 Address", + "description": "Get the To2 address that has been set by the OCS", + "operationId": "getTo2", + "parameters": [ + { + "name": "org-id", + "in": "path", + "description": "org ID of the key you want", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful. Returns To2 address.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/To0" + } + } + } + }, + "401": { + "description": "Invalid credentials", + "content": {} + }, + "403": { + "description": "Permission denied", + "content": {} + } + } } - }, - "401": { - "description": "Invalid credentials" - }, - "403": { - "description": "Permission denied" - }, - "404": { - "description": "Device ID not found" - } } - } }, - "/orgs/{org-id}/fdo/redirect": { - "get": { - "tags": [ - "To2" - ], - "summary": "Get To2 Address", - "description": "Get the To2 address that has been set by the OCS", - "operationId": "getTo2", - "parameters": [ - { - "name": "org-id", - "in": "path", - "description": "org ID of the key you want", - "required": true, - "type": "string" - } - ], - "produces": [ - "text/plain" - ], - "responses": { - "200": { - "description": "Successful. Returns To2 address.", - "schema": { - "$ref": "#/definitions/To0" + "components": { + "schemas": { + "Version": { + "type": "string" + }, + "Voucher": { + "type": "object", + "xml": { + "name": "Voucher" + } + }, + "VoucherIdList": { + "type": "array", + "items": { + "type": "string", + "description": "voucher device id" + } + }, + "PublicKeyFile": { + "type": "string" + }, + "To0": { + "type": "string", + "description": "To0" } - }, - "401": { - "description": "Invalid credentials" - }, - "403": { - "description": "Permission denied" - } } - } - } - }, - "definitions": { - "Version": { - "type": "string" - }, - "Voucher": { - "type": "object", - "xml": { - "name": "Voucher" - } - }, - "VoucherIdList": { - "type": "array", - "items": { - "type": "string", - "description": "voucher device id" - } - }, - "PublicKeyFile": { - "type": "string" - }, - "To0": { - "type": "string", - "description": "To0" } - }, - "externalDocs": { - "description": "Find out more about Open Horizon Support for FDO", - "url": "https://github.com/open-horizon/FDO-support" - } -} \ No newline at end of file +} From 06043a29061e4fab0d5bf0aea675094d2405221e Mon Sep 17 00:00:00 2001 From: Oleksandr Mordyk Date: Tue, 19 Nov 2024 02:20:36 -0800 Subject: [PATCH 3/3] Change FDO description link Signed-off-by: Oleksandr Mordyk --- docs/ocs-api-swagger.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ocs-api-swagger.json b/docs/ocs-api-swagger.json index 972d18c..30fd51c 100644 --- a/docs/ocs-api-swagger.json +++ b/docs/ocs-api-swagger.json @@ -2,7 +2,7 @@ "openapi": "3.0.1", "info": { "title": "Open Horizon Support for FDO", - "description": "[FDO](https://software.intel.com/en-us/secure-device-onboard) (FIDO Device Onboard) is a technology that is contributed by Intel to make it easy and secure to configure edge devices and associate them with an Open Horizon Management Hub instance. Open Horizon has added support for FDO-enabled devices so that the agent will be installed on the device and registered to the Open Horizon Management Hub with zero touch (by simply powering on the device).

Examples of using this API:

`curl -sS $HZN_FDO_SVC_URL/api/version && echo`
`curl -sS -w %{http_code} -u $HZN_EXCHANGE_USER_AUTH $HZN_FDO_SVC_URL/api/orgs/$HZN_ORG_ID/fdo/vouchers | jq`

Note: Some of these APIs can also be run via the `hzn` command.", + "description": "[FDO](https://fidoalliance.org/device-onboarding-overview/) (FIDO Device Onboard) is a technology that is contributed by Intel to make it easy and secure to configure edge devices and associate them with an Open Horizon Management Hub instance. Open Horizon has added support for FDO-enabled devices so that the agent will be installed on the device and registered to the Open Horizon Management Hub with zero touch (by simply powering on the device).

Examples of using this API:

`curl -sS $HZN_FDO_SVC_URL/api/version && echo`
`curl -sS -w %{http_code} -u $HZN_EXCHANGE_USER_AUTH $HZN_FDO_SVC_URL/api/orgs/$HZN_ORG_ID/fdo/vouchers | jq`

Note: Some of these APIs can also be run via the `hzn` command.", "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html"