From 46d0cdfef117d0a08091fd0937a7cd293fe21cbb Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 24 Jan 2022 12:04:36 +0100 Subject: [PATCH 001/279] Add events delete request to clear event log --- JSON_for_IO-Link_2.0.yaml | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link_2.0.yaml b/JSON_for_IO-Link_2.0.yaml index 54db1bc..9580586 100644 --- a/JSON_for_IO-Link_2.0.yaml +++ b/JSON_for_IO-Link_2.0.yaml @@ -506,6 +506,31 @@ paths: $ref: '#/components/responses/HTTP_403' '500': $ref: '#/components/responses/HTTP_500' + + delete: + tags: + - gateway + summary: Delete events of Gateway, Masters, Ports and Devices from EventLog according to filter query. + parameters: + - $ref: '#/components/parameters/eventOrigin' + - $ref: '#/components/parameters/eventMasterNumber' + - $ref: '#/components/parameters/eventPortNumber' + - $ref: '#/components/parameters/eventdeviceAlias' + - $ref: '#/components/parameters/eventTop' + - $ref: '#/components/parameters/eventBottom' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/gatewayEventsGet' + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' + '403': + $ref: '#/components/responses/HTTP_403' + '500': + $ref: '#/components/responses/HTTP_500' '/mqtt/configuration': get: @@ -5022,7 +5047,7 @@ components: name: top in: query description: >- - Delivers the oldest n events of the event buffer. top is mutually + Delivers or removes the oldest n events of the event buffer. top is mutually exclusive to bottom. schema: $ref: '#/components/schemas/eventTop' @@ -5030,7 +5055,7 @@ components: name: bottom in: query description: >- - Delivers the youngest n events of the event buffer. bottom is mutually + Delivers or removes the youngest n events of the event buffer. bottom is mutually exclusive to top. schema: $ref: '#/components/schemas/eventBottom' From f0d8aeeb51d22fc772b908f7eff88eb9b8328ece Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 26 Jan 2022 14:47:15 +0100 Subject: [PATCH 002/279] Remove content for request. --- JSON_for_IO-Link_2.0.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/JSON_for_IO-Link_2.0.yaml b/JSON_for_IO-Link_2.0.yaml index 9580586..58fab1e 100644 --- a/JSON_for_IO-Link_2.0.yaml +++ b/JSON_for_IO-Link_2.0.yaml @@ -520,11 +520,7 @@ paths: - $ref: '#/components/parameters/eventBottom' responses: '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/gatewayEventsGet' + description: Successful operation '400': # code 305, 306 $ref: '#/components/responses/HTTP_400' '403': From a706a308db8f6cda2c6a28804be0d9b81fbd516c Mon Sep 17 00:00:00 2001 From: Benjamin Vervoort Date: Thu, 27 Jan 2022 10:58:06 +0100 Subject: [PATCH 003/279] remove release version, rename draft version --- JSON_for_IO-Link.yaml | 5972 ++++++++++++++++--------------------- JSON_for_IO-Link_2.0.yaml | 5304 -------------------------------- 2 files changed, 2532 insertions(+), 8744 deletions(-) delete mode 100644 JSON_for_IO-Link_2.0.yaml diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 408b72c..4c7b3f1 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1,164 +1,42 @@ -openapi: 3.0.1 +openapi: 3.0.3 info: description: >- This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description - - ## Error messages - - ### General errors - - * [101] HTTP Status 500: Internal server error - - * [102] HTTP Status 500: Internal communication error - - * [103] HTTP Status 404: Operation not supported - - * [104] HTTP Status 400: Action locked by another client - - Remark: Fieldbus controller or another gateway protocol has claimed priority - - * [105] HTTP Status 501: IODD feature not supported - - * [106] HTTP Status 501: MQTT feature not supported - - * [150] HTTP Status 403: Permission denied - - Remark: due to user management restrictions - - - ### JSON Parsing errors - - * [201] HTTP Status 400: JSON parsing failed - - Remark: Error while parsing the incoming JSON object - - * [202] HTTP Status 400: JSON data value invalid - - Remark: Error while parsing a specific JSON value, e.g. malformed IP address - - * [203] HTTP Status 400: JSON data type invalid - - Remark: e.g. string instead of number - - * [204] HTTP Status 400: Enumeration value unknown - - * [205] HTTP Status 400: JSON data value out of range - - Remark: Exceeds the minimum or maximum value - - * [206] HTTP Status 400: JSON data value out of bounds - - Remark: An array/string was accessed exceeding its maximum length - - * [207] HTTP Status 400: deviceAlias is not unique - - * [208] HTTP Status 400: POST request without content - - ### Resource access errors - - * [301] HTTP Status 404: Resource not found - - Remark: e.g. wrong URL - - * [302] HTTP Status 404: masterNumber not found - - * [303] HTTP Status 404: portNumber not found - - * [304] HTTP Status 404: deviceAlias not found - - * [305] HTTP Status 400: Query parameter name invalid - - * [306] HTTP Status 400: Query parameter value invalid - - * [307] HTTP Status 400: Port is not configured to IO-Link - - Remark: e.g. not in IOLINK_MANUAL or IOLINK_AUTOSTART mode - - * [308] HTTP Status 404: IO-Link Device is not accessible - - Remark: e.g. not connected or communication error - - * [309] HTTP Status 404: IO-Link parameter not found - - * [310] HTTP Status 404: IO-Link parameter access not supported by the Device - - * [311] HTTP Status 400: IO-Link parameter access error - - Remark: The additional iolinkErrorCode and iolinkErrorMessage fields contain - the IO-Link error code and the incident text from the ErrorTypes table - - * [312] HTTP Status 404: IO-Link parameter name is not unique - - Remark: Please use the {name}_{index} format - - ### Data Storage errors - - * [401] HTTP Status 400: Data storage mismatch - - Remark: Mismatch between meta data of device and data storage - - ### Process Data handling - - * [501] HTTP Status 400: I/Q is not configured as DIGITAL_OUTPUT - - * [502] HTTP Status 400: C/Q is not configured as DIGITAL_OUTPUT - - * [503] HTTP Status 400: IO-Link device has no output process data - - - ### IODD errors - - * [601] HTTP Status 400: IODD (representation) is not available - - Remark: IODD representation for this IO-Link Device is not available - - * [602] HTTP Status 500: IODD upload failed: not enough memory - - * [603] HTTP Status 400: IODD upload failed: IODD XML invalid - - Remark: Check the file content superficially to ensure that the - IODD is an XML and an IODD (e.g. vendorId, deviceId, VendorName, ProductName - and other mandatory elements or attributes) - - * [604] HTTP Status 400: IODD upload failed: CRC error - - * [605] HTTP Status 400: IODD upload failed: parsing error - - Remark: All those systems that do not want to store the IODD have to parse - it immediately - - - ### Data content errors - - * [701] HTTP Status 400: Data set incomplete - - * [702] HTTP Status 400: Data set not applicable - - Remark: whole data set is rejected - - * [703] HTTP Status 400: Data set combination incompatible - - Remark: whole data set is rejected - - - ### Implementation hints: - - * If there is more than one error in the request, the parsing is stopped and - just the first detected error is returned. - - * Errors [101], [150] can be returned to every request. - - * Error [103] can be returned to every request which is not included - in the base facet. - - * Specific error messages have to be provided only if the corresponding - operation is supported. So you do not need to give specific errors for bad - IODDs if you do not support the IODD Facet, just indicate error [105]. - - * Error [301] can be returned to every request where there is a - variable in the URL. - - * If the request was successful and no body is specified, the response - contains nothing in the body. - - version: 1.0.0 + + * Draft for version 1.x + + version: 1.1.0 title: Swagger IO-Link Master contact: - email: lorand.molnar@teconcept.de + email: benjamin.vervoort@balluff.de license: - name: Apache 2.0 - url: 'http://www.apache.org/licenses/LICENSE-2.0.html' + name: tbd + url: 'http://www.io-link.com' + servers: - url: 'http://iolmaster.io-link.com/{basePath}' + - url: '{scheme}://{host}/{basePath}' variables: + host: + default: 'iolmaster.io-link.com' basePath: - default: iolink/v1 + enum: + - 'iolink' + - 'iolink/v1' + default: iolink + scheme: + description: 'The IO-Link gateway can expose the API over https and/or http' + enum: + - 'https' + - 'http' + default: 'http' + tags: + - name: general + description: Access to general informations - name: gateway description: Access to parameters of the JSON gateway - name: mqtt @@ -167,84 +45,240 @@ tags: description: Access to the IODDs - name: masters description: Access to parameters of the IO-Link master itself + - name: tracks + description: Access to the tracks (radios) of the IO-Link wireless master - name: ports description: Access to the IO-Link ports of the IO-Link master - name: devices description: Access to the IO-Link Devices connected ot the Master + + paths: - '/gateway/identification': +################################################################################ + '/login': get: tags: - - gateway - summary: Read the identification of the Gateway. + - general + summary: Returns the login status of the user + description: >- + Returns the login status of the user as a boolean value + operationId: getUsersLogin responses: '200': - description: Successful operation + description: OK content: application/json: schema: - $ref: '#/components/schemas/gatewayIdentificationGet' - '403': - description: Forbidden + properties: + isLoggedIn: + type: boolean + userRole: + type: string + description: 'Is true in case of a valid user, that is logged in.' + example: + isLoggedIn: true + userRole: 'Operator' + post: + tags: + - general + summary: Logs in with credentials and returns the session bearer token. + description: >- + Credentials based authentication - Depending on technical feasibility, the HTTP cookie header shall be used. If the backend does not support cookies, the session bearer token shall be sent in the JSON body. The client has to support both mechanisms. + operationId: postUsersLogin + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - username + - password + properties: + username: + type: string + password: + type: string + example: + username: fred + password: '12345678' + security: [] + responses: + '200': + description: > + Successfully authenticated.

The set cookie header is only + sent if the server supports HTTP cookies. Otherwise, the session ID + is also sent in the JSON body. + headers: + Set-Cookie: + schema: + type: string + example: SESSIONID=abcde12345; Path=/; HttpOnly; Secure; content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + required: + - userRole + properties: + SESSIONID: + type: string + userRole: + type: string + enum: + - Operator + - Maintenance + - Specialist + examples: + without cookie handling: + value: + SESSIONID: abc123abc123 + userRole: Maintenance + with cookie handling: + value: + userRole: Maintenance + + '401': + $ref: '#/components/responses/HTTP_401' + '403': + $ref: '#/components/responses/HTTP_403' '500': - description: Internal server error + $ref: '#/components/responses/HTTP_500' + + '/logout': + post: + tags: + - general + summary: Logs out and invalidates the Session-Token. + description: >- + This command does not discern between a logged out or a logged in user. + operationId: postUsersLogout + responses: + '204': + description: | + Successfully logged out. Session-Token is now invalid. + '401': + description: | + Session-Token invalid or not found. No action. content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - '/gateway/capabilities': + $ref: '#/components/schemas/eventObject' + example: + code: 141 + message: 'Unknown SESSIONID' + '/specs': get: tags: - - gateway - summary: Read the capabilities of the Gateway. + - general + summary: Read the version information as list of specification references. + description: >- + This command is mandatory. responses: '200': description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayCapabilitiesGet' + type: array + items: + required: + - specUri + properties: + specUri: + type: string + specDesc: + type: string + example: # Wireless Master with Profinet + - specUri: "http://www.io-link.com/io-link/10.222/V2.0" + specDesc: "JSON Integration for IO-Link - Draft V2.0" + - specUri: "http://www.io-link.com/io-link/10.222/V1.0" + specDesc: "JSON Integration for IO-Link V1.0" + - specUri: "http://www.io-link.com/io-link/10.002/V1.13" + specDesc: "IO-Link Interface and System Specification V1.13" + - specUri: "http://www.io-link.com/io-link/10.122/V1.1" + specDesc: "IO-Link Wireless System Extensions V1.1" + - specUri: "http://profibus.com/profinet/2.722/V2.4MU2" + specDesc: "Application Layer protocol for decentralized periphery - Technical Specification for PROFINET IO" + - specUri: "http://profibus.com/profinet/2.712/V2.4MU2" + specDesc: "Application Layer services for decentralized periphery - Technical Specification for PROFINET IO" + '/gateways': + get: + tags: + - general + summary: Read the known IO-Link gateways as list of URLs. + description: >- + This command is optional. + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + type: object + required: + - gatewayUrl + properties: + gatewayUrl: + type: string + masterNumber: + type: integer + minimum: 1 + portNumber: + type: integer + minimum: 1 + example: + - gatewayAlias: gateway1 + gatewayUrl: 'http://gateway1' + - gatewayAlias: gatewayXYZ + gatewayUrl: 'http://gatewayXYZ' + - gatewayAlias: BNI_IOL + gatewayUrl: 'https://BNI_IOL/' + - gatewayAlias: master1 + gatewayUrl: 'https://192.168.88.191' '403': - description: Forbidden + $ref: '#/components/responses/HTTP_403' + '500': + $ref: '#/components/responses/HTTP_500' + + '/gateway/identification': + get: + tags: + - gateway + summary: Read the identification of the Gateway. + responses: + '200': + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/schemas/gatewayIdentificationGet' + '403': + $ref: '#/components/responses/HTTP_403' '500': - description: Internal server error + $ref: '#/components/responses/HTTP_500' + '/gateway/capabilities': + get: + tags: + - gateway + summary: Read the capabilities of the Gateway. + responses: + '200': + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/schemas/gatewayCapabilitiesGet' + '403': + $ref: '#/components/responses/HTTP_403' + '500': + $ref: '#/components/responses/HTTP_500' '/gateway/configuration': get: tags: - gateway - summary: Read the network configuration of the Gateway . + summary: Read the configuration of the Gateway . responses: '200': description: Successful operation @@ -283,31 +317,13 @@ paths: subnetMask: 255.255.255.0 standardGateway: 192.168.200.1 '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' post: tags: - gateway - summary: Write the network configuration of the Gateway. + summary: Write the configuration of the Gateway. requestBody: required: true content: @@ -341,80 +357,13 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 701: - value: - code: 701 - message: Data set incomplete - 702: - value: - code: 702 - message: Data set not applicable - 703: - value: - code: 703 - message: Data set combination incompatible - + '400': # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' + '/gateway/reset': post: tags: @@ -423,39 +372,13 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client + '400': # code 104 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' + '/gateway/reboot': post: tags: @@ -464,39 +387,13 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client + '400': # code 104 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' + '/gateway/events': get: tags: @@ -603,43 +500,13 @@ paths: code: 20480 mode: APPEARS text: Device hardware fault – Device exchange - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' + '/mqtt/configuration': get: tags: @@ -661,7 +528,7 @@ paths: username: iolink_json password: '1234' lastwill: - - topic: process_data + topic: process_data message: Process data transfer stopped. qos: 0_ONLY_ONCE retain: true @@ -670,49 +537,14 @@ paths: value: clientMode: "INACTIVE" '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 106: - value: - code: 106 - message: MQTT feature not supported + $ref: '#/components/responses/HTTP_501' + post: tags: - mqtt @@ -732,7 +564,7 @@ paths: username: iolink_json password: '1234' lastwill: - - topic: process_data + topic: process_data message: Process data transfer stopped. qos: 0_ONLY_ONCE retain: true @@ -743,101 +575,15 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 701: - value: - code: 701 - message: Data set incomplete - 702: - value: - code: 702 - message: Data set not applicable - 703: - value: - code: 703 - message: Data set combination incompatible + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 106: - value: - code: 106 - message: MQTT feature not supported + $ref: '#/components/responses/HTTP_500' + '/mqtt/topics': get: tags: @@ -877,49 +623,13 @@ paths: format: iodd onChange: true '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 106: - value: - code: 106 - message: MQTT feature not supported + $ref: '#/components/responses/HTTP_501' post: tags: - mqtt @@ -953,96 +663,16 @@ paths: application/json: schema: type: integer - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 701: - value: - code: 701 - message: Data set incomplete - 702: - value: - code: 702 + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 106: - value: - code: 106 - message: MQTT feature not supported + $ref: '#/components/responses/HTTP_501' '/mqtt/topics/{topicId}': get: tags: @@ -1078,53 +708,13 @@ paths: deviceAlias: TAD081 event: {} '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 301: - value: - code: 301 - message: Resource not found + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 106: - value: - code: 106 - message: MQTT feature not supported + $ref: '#/components/responses/HTTP_501' delete: tags: - mqtt @@ -1134,65 +724,16 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client + '400': # code 104 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 301: - value: - code: 301 - message: Resource not found + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 106: - value: - code: 106 - message: MQTT feature not supported + $ref: '#/components/responses/HTTP_501' '/mqtt/connectionstatus': get: tags: @@ -1206,49 +747,13 @@ paths: schema: $ref: '#/components/schemas/mqttConnectionStatusGet' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '150': - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '103': - value: - code: 103 - message: Operation not supported + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '101': - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 106: - value: - code: 106 - message: MQTT feature not supported + $ref: '#/components/responses/HTTP_501' '/iodds': get: tags: @@ -1269,65 +774,16 @@ paths: application/json: schema: $ref: '#/components/schemas/ioddsGet' - '400': - description: Bad Request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' delete: tags: - iodds @@ -1339,73 +795,16 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad Request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid + '400': # code 104, 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 301: - value: - code: 301 - message: Resource not found + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' '/iodds/file': get: tags: @@ -1425,69 +824,16 @@ paths: $ref: '#/components/schemas/ioddFile' example: - IODD XML file - '400': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 301: - value: - code: 301 - message: Resource not found + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' post: tags: - iodds @@ -1506,81 +852,16 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 208: - value: - code: 208 - message: POST request without content - 603: - value: - code: 603 - message: IODD upload failed. IODD XML invalid - 604: - value: - code: 604 - message: IODD upload failed. CRC error - 605: - value: - code: 605 - message: IODD upload failed. Parsing error + '400': # code 104, 208, 603, 604, 605 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 602: - value: - code: 602 - message: IODD upload failed. Not enough memory + $ref: '#/components/responses/HTTP_404' + '500': # code 101, 602 + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' '/masters': get: tags: @@ -1596,31 +877,9 @@ paths: schema: $ref: '#/components/schemas/identificationMasters' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/capabilities': get: tags: @@ -1635,43 +894,23 @@ paths: application/json: schema: $ref: '#/components/schemas/masterCapabilitiesGet' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' examples: - 150: + wired: value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 302: + numberOfPorts: 8 + maxPowerSupply: #overall power consumption + value: 0.3 + unit: A + wireless: value: - code: 302 - message: masterNumber not found + masterType: Wireless_Master + numberOfPorts: 40 + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/identification': get: tags: @@ -1687,42 +926,11 @@ paths: schema: $ref: '#/components/schemas/identificationGet' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 302: - value: - code: 302 - message: masterNumber not found + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' post: tags: - masters @@ -1741,6 +949,48 @@ paths: applicationSpecificTag: Fallback reader at the end of the belt locationTag: Down under functionTag: Code reading + responses: + '204': + description: Successful operation + '400': # code 104, 201, 202, 203, 206, 208 + $ref: '#/components/responses/HTTP_400' + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + + '/masters/{masterNumber}/configuration': + get: + tags: + - masters + summary: Read the actual configuration of the specified Master. + parameters: + - $ref: '#/components/parameters/masterNumber' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/masterConfiguration' + '403': + $ref: '#/components/responses/HTTP_403' + '500': + $ref: '#/components/responses/HTTP_500' + post: + tags: + - masters + summary: Write the configuration of the specified Master. + parameters: + - $ref: '#/components/parameters/masterNumber' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/masterConfiguration' responses: '204': description: Successful operation @@ -1748,8 +998,6 @@ paths: description: Bad request content: application/json: - schema: - $ref: '#/components/schemas/errorObject' examples: 104: value: @@ -1776,322 +1024,363 @@ paths: code: 208 message: POST request without content '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 302: - value: - code: 302 - message: masterNumber not found + $ref: '#/components/responses/HTTP_403' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/ports': + $ref: '#/components/responses/HTTP_500' + +################################################################################ +# tracks +################################################################################ + '/masters/{masterNumber}/tracks': get: tags: - - ports - summary: Read all the available portNumber keys with the corresponding identification information. + - tracks + summary: Read the information about the available wireless tracks. Mandatory for W-Masters. + parameters: - $ref: '#/components/parameters/masterNumber' + description: >- + A W-Master can handle up to 5 transmission tracks in parallel, each trackNumber can handle a maximum of 8 W-Devices, thus supporting up to 40 W-Devices per W-Master. responses: '200': description: Successful operation content: application/json: schema: - type: array items: type: object required: - - portNumber + - trackNumber - statusInfo - - deviceAlias properties: - portNumber: + trackNumber: type: integer minimum: 1 + maximum: 5 statusInfo: type: string - deviceAlias: - type: string + enum: + - STOP + - CYCLIC + - ROAMING + - SCANNING + - PAIRING example: - - portNumber: 1 - statusInfo: "DEVICE_ONLINE" - deviceAlias: "Distance_Sensor" - - portNumber: 2 - statusInfo: "DEVICE_ONLINE" - deviceAlias: "Pressure_Sensor" - - portnumber: 3 - statusInfo: "DIGITAL_INPUT_C/Q" - deviceAlias: "Switching_Sensor" - - portnumber: 4 - statusInfo: "DEACTIVATED" - deviceAlias: "Empty_port" + tracksInfo: + - trackNumber: 1 + statusInfo: "STOP" + - trackNumber: 2 + statusInfo: "CYCLIC" + - trackNumber: 3 + statusInfo: "ROAMING" + - trackNumber: 4 + statusInfo: "SCANNING" + - trackNumber: 5 + statusInfo: "PAIRING" '403': - description: Forbidden + $ref: '#/components/responses/HTTP_403' + '500': + $ref: '#/components/responses/HTTP_500' + + '/masters/{masterNumber}/tracks/scan': + post: + tags: + - tracks + summary: Start scanning on the specified trackNumber. Mandatory for W-Masters. + parameters: + - $ref: '#/components/parameters/masterNumber' + description: >- + Discover unpaired W-Devices in the proximity of the W-Master. + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + txPower: + type: integer + minimum: 1 + maximum: 31 + example: + txPower: 31 + responses: + '204': + description: Successful operation + '400': + description: Bad request content: application/json: - schema: - $ref: '#/components/schemas/errorObject' examples: - 150: + 104: value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 302: + code: 104 + message: Action locked by another client + 201: value: - code: 302 - message: masterNumber not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: + code: 201 + message: JSON parsing failed + 202: value: - code: 101 - message: Internal server error - 102: + code: 202 + message: JSON data value invalid + 203: value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/ports/{portNumber}/capabilities': + code: 203 + message: JSON data type invalid + 205: + value: + code: 205 + message: JSON data value out of range + 208: + value: + code: 208 + message: POST request without content + 701: + value: + code: 701 + message: Data set incomplete + 702: + value: + code: 702 + message: Data set not applicable + 703: + value: + code: 703 + message: Data set combination incompatible + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + '503': + $ref: '#/components/responses/HTTP_503' get: tags: - - ports - summary: Read the capability information of the specified port. + - tracks + summary: Read back the last scan result. Mandatory for W-Masters. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: '#/components/parameters/masterNumber' + description: >- + List the unique identifiers (UniqueID) of the discovered unpaired W-Devices. responses: '200': description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/portCapabilitiesGet' + items: + type: object + properties: + SlotType: + type: string + enum: + - SSLOT + - DSLOT + revisionId: + type: string + uniqueId: + type: string + example: + scanResult: + - slotType: SSLOT + revisionId: 1.1 + uniqueId: 03:78:00:00:01:32:50:60:46 + lastSeen: "2019-02-19T08:02:51.786Z" + - slotType: DSLOT + revisionId: 1.1 + uniqueId: 03:78:00:00:01:32:50:60:47 + lastSeen: "2019-02-19T08:02:51.786Z" + - slotType: SSLOT + revisionId: 1.1 + uniqueId: 03:78:00:00:01:32:50:60:48 + lastSeen: "2019-02-19T08:02:51.786Z" '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 302: - value: - code: 302 - message: masterNumber not found - 303: - value: - code: 303 - message: portNumber not found + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/ports/{portNumber}/status': + $ref: '#/components/responses/HTTP_500' + '503': + $ref: '#/components/responses/HTTP_503' + '/masters/{masterNumber}/tracks/{trackNumber}/status': get: tags: - - ports - summary: Read the actual status of the selected port. + - tracks + summary: Read the status of the selected trackNumber. Mandatory for W-Masters. parameters: - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: '#/components/parameters/trackNumber' + description: >- + Indicates the actual operational mode of the trackNumber (STOP, CYCLIC, SCAN, PAIRING, ROAMING) and the transmission power of the trackNumber radio. responses: '200': description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/portStatusGet' + type: object + required: + - trackNumber + - statusInfo + - txPower + properties: + trackNumber: + type: integer + minimum: 1 + maximum: 5 + statusInfo: + type: string + enum: + - STOP + - CYCLIC + - ROAMING + - SCANNING + - PAIRING + txPower: + type: integer + minimum: 1 + maximum: 31 + example: + trackNumber: 2 + statusInfo: "STOP" + txPower: 31 '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 302: - value: - code: 302 - message: masterNumber not found - 303: - value: - code: 303 - message: portNumber not found + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/ports/{portNumber}/configuration': + $ref: '#/components/responses/HTTP_500' + + '/masters/{masterNumber}/tracks/{trackNumber}/statistics': get: tags: - - ports + - tracks + summary: Read the statistics (Errors and PEP) of the selected trackNumber. Optional for W-Masters. parameters: - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' - summary: Read the actual configuration of the specified port. + - $ref: '#/components/parameters/trackNumber' + description: >- + Monitoring the wireless environment regarding reliability indicating link quality. responses: '200': description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/portConfigurationGet' + type: object + required: + - trackNumber + - errors + - PEP + properties: + trackNumber: + type: integer + minimum: 1 + maximum: 5 + errors: + type: integer + minimum: 0 + maximum: 65535 # 65535 = no data available + PEP: + type: string + example: + trackNumber: 2 + slots: + - slotNumber: 0 + errors: "-" + PEP: "-" + - slotNumber: 1 + errors: "-" + PEP: "-" + - slotNumber: 2 + errors: "-" + PEP: "-" + - slotNumber: 3 + errors: "-" + PEP: "-" + - slotNumber: 4 + errors: "-" + PEP: "-" + - slotNumber: 5 + errors: 63 + PEP: 1.5380859375 + - slotNumber: 6 + errors: "-" + PEP: "-" + - slotNumber: 7 + errors: "-" + PEP: "-" '403': - description: Forbidden + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + + '/masters/{masterNumber}/tracks/{trackNumber}/statisticsChannel': + get: + tags: + - tracks + summary: Read the channel statistics (Errors %) of the selected trackNumber. Optional for W-Masters. + parameters: + - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/trackNumber' + description: >- + Monitoring the wireless channel regarding reliability indicating link quality. 100 transmissions per channel are computed. + responses: + '200': + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/schemas/tracksStatisticsChannel' + '403': + $ref: '#/components/responses/HTTP_403' '404': - description: Not found + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + + '/masters/{masterNumber}/tracks/{trackNumber}/configuration': + get: + tags: + - tracks + summary: Read the configuration of the specified trackNumber. Mandatory for W-Masters. + parameters: + - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/trackNumber' + description: >- + + responses: + '200': + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - 302: - value: - code: 302 - message: masterNumber not found - 303: - value: - code: 303 - message: portNumber not found + $ref: '#/components/schemas/trackConfiguration' + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' post: tags: - - ports - summary: Write the configuration of the specified port. + - tracks + summary: Write the configuration of the specified trackNumber. Mandatory for W-Masters. parameters: - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: '#/components/parameters/trackNumber' + description: >- + requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/portConfigurationPost' - examples: - Complete configuration: - value: - mode: IOLINK_MANUAL - validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - cycleTime: - value: 2.3 - unit: ms - vendorId: 26 - deviceId: 333 - iqConfiguration: DIGITAL_INPUT - deviceAlias: Distance_sensor_1 - Change CQ mode: - value: - mode: IOLINK_AUTOSTART - Change iqConfiguration: - value: - iqConfiguration: DIGITAL_OUTPUT - Change the deviceAlias: - value: - deviceAlias: Flow_control_1 + $ref: '#/components/schemas/trackConfigurationPost' responses: '204': description: Successful operation @@ -2099,8 +1388,6 @@ paths: description: Bad request content: application/json: - schema: - $ref: '#/components/schemas/errorObject' examples: 104: value: @@ -2126,10 +1413,6 @@ paths: value: code: 205 message: JSON data value out of range - 207: - value: - code: 207 - message: deviceAlias is not unique 208: value: code: 208 @@ -2147,46 +1430,340 @@ paths: code: 703 message: Data set combination incompatible '403': - description: Forbidden + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + +################################################################################ +# ports +################################################################################ + '/masters/{masterNumber}/ports': + get: + tags: + - ports + summary: Read all the available portNumber keys with the corresponding identification information. + parameters: + - $ref: '#/components/parameters/masterNumber' + responses: + '200': + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + type: array + items: + type: object + required: + - portNumber + - statusInfo + - deviceAlias + properties: + portNumber: + type: number + deviceAlias: + type: string + statusInfo: + type: string + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + slotNumber: + type: number + trackNumber: + type: number + slotType: + type: string + enum: + - SSLOT + - DSLOT + items: + type: object + properties: + vendorId: + type: number + deviceId: + type: number + productName: + type: string + example: + - portNumber: 1 + statusInfo: "DEVICE_ONLINE" + deviceAlias: "Distance_Sensor" + - portNumber: 2 + statusInfo: "DIGITAL_INPUT_C/Q" + deviceAlias: "Switching_Sensor" + - portNumber: 3 + trackNumber: 1 + slotNumber: 2 + slotType: "SSLOT" + statusInfo: "DEVICE_ONLINE" + deviceAlias: "Wireless_Bridge" + deviceInfo: + vendorId: 888 + deviceId: 10485760 + productName: "BNI IOW-302-W01-K080" + - portNumber: 4 + statusInfo: "DEACTIVATED" + deviceAlias: "Empty_port" + '403': + $ref: '#/components/responses/HTTP_403' '404': - description: Not found + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + '/masters/{masterNumber}/ports/{portNumber}/capabilities': + get: + tags: + - ports + summary: Read the capability information of the specified port. + parameters: + - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/portNumber' + responses: + '200': + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: '#/components/schemas/portCapabilitiesGet' examples: - 302: - value: - code: 302 - message: masterNumber not found - 303: - value: - code: 303 - message: portNumber not found + CLASS_A: + value: + maxPowerSupply: + value: 0.3 + unit: A + portType: CLASS_A + CLASS_B: + value: + maxPowerSupply: + value: 2.0 + unit: A + portType: CLASS_B + CLASS_A_WITH_PORT_POWER_OFF_ON: + value: + maxPowerSupply: + value: 0.3 + unit: A + portType: CLASS_A_WITH_PORT_POWER_OFF_ON + FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS: + value: + maxPowerSupply: + value: 0.2 + unit: A + portType: FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS + FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS: + value: + maxPowerSupply: + value: 0.2 + unit: A + portType: FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS + FAILSAFE_PORT_B: + value: + maxPowerSupply: + value: 2.0 + unit: A + portType: FAILSAFE_PORT_B + WIRELESS: + value: + portType: WIRELESS + slotType: "DSLOT" + + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error + $ref: '#/components/responses/HTTP_500' + + '/masters/{masterNumber}/ports/{portNumber}/status': + get: + tags: + - ports + summary: Read the actual status of the selected port. + parameters: + - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/portNumber' + responses: + '200': + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: + # $ref: '#/components/schemas/portStatusGet' + type: object + required: + - statusInfo + properties: + statusInfo: + type: string + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + + ioLinkRevision: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. + type: string + enum: + - '1.0' + - '1.1' + transmissionRate: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. + type: string + enum: + - COM1 + - COM2 + - COM3 + - WIRELESS + masterCycleTime: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. + type: object + allOf: + - $ref: '#/components/schemas/cycleTime' + portQualityInfo: + type: object + required: + - value + - unit + properties: + value: + type: integer + minimum: 0 + maximum: 100 + unit: + type: string + enum: + - "%" + examples: + wired: value: - code: 101 - message: Internal server error - 102: + statusInfo: "DEVICE_ONLINE" + ioLinkRevision: "1.1" + transmissionRate: COM2 + masterCycleTime: + value: 2.3 + unit: ms + wireless: value: - code: 102 - message: Internal communication error + statusInfo: "DEVICE_ONLINE" + ioLinkRevision: "1.1" + transmissionRate: WIRELESS + masterCycleTime: + value: 5 + unit: "ms" + portQuality: + value: 100 + unit: "%" + + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + '/masters/{masterNumber}/ports/{portNumber}/configuration': + get: + tags: + - ports + parameters: + - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/portNumber' + summary: Read the actual configuration of the specified port. + responses: + '200': + description: Successful operation + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/wirelessPortConfigurationGet' + - $ref: '#/components/schemas/portConfigurationGet' + example: + mode: IOLINK_MANUAL + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + iqConfiguration: ANALOG_INPUT + cycleTime: + value: 2.3 + unit: ms + vendorId: 26 + deviceId: 333 + deviceAlias: Distance_sensor_1 + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + post: + tags: + - ports + summary: Write the configuration of the specified port. + parameters: + - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/portNumber' + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/wirelessPortConfigurationPost' + - $ref: '#/components/schemas/portConfigurationPost' + examples: + Complete configuration: + value: + mode: IOLINK_MANUAL + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + cycleTime: + value: 2.3 + unit: ms + vendorId: 26 + deviceId: 333 + iqConfiguration: DIGITAL_INPUT + deviceAlias: Distance_sensor_1 + Change CQ mode: + value: + mode: IOLINK_AUTOSTART + Change iqConfiguration: + value: + iqConfiguration: DIGITAL_OUTPUT + Change the deviceAlias: + value: + deviceAlias: Flow_control_1 + responses: + '204': + description: Successful operation + '400': # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 + $ref: '#/components/responses/HTTP_400' + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/ports/{portNumber}/datastorage': get: tags: @@ -2216,46 +1793,11 @@ paths: header: {} content: '' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 302: - value: - code: 302 - message: masterNumber not found - 303: - value: - code: 303 - message: portNumber not found + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' post: tags: - ports @@ -2285,102 +1827,26 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 401: - value: - msgcode: 401 - message: Data storage mismatch - 701: - value: - code: 701 - message: Data set incomplete - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 302: - value: - code: 302 - message: masterNumber not found - 303: - value: - code: 303 - message: portNumber not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error - '/devices': - get: - tags: - - devices - summary: Get all available deviceAlias keys and the location by Master number and Port number. - responses: - '200': - description: Successful operation + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 + $ref: '#/components/responses/HTTP_400' + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' +################################################################################ +# devices +################################################################################ + + '/devices': + get: + tags: + - devices + summary: Get all available deviceAlias keys and the location by Master number and Port number. + responses: + '200': + description: Successful operation content: application/json: schema: @@ -2414,31 +1880,9 @@ paths: masterNumber: 1 portNumber: 4 '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '/devices/{deviceAlias}/capabilities': get: tags: @@ -2458,58 +1902,14 @@ paths: value: 2.3 unit: ms supportedProfiles: [10, 32770] - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 307: - value: - code: 307 - message: Port is not configured to IO-Link + '400': # code 307 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '101': - value: - code: 101 - message: Internal server error - '102': - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '/devices/{deviceAlias}/identification': get: tags: @@ -2528,58 +1928,14 @@ paths: application/json: schema: $ref: '#/components/schemas/deviceIdentificationGet' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 307: - value: - code: 307 - message: Port is not configured to IO-Link + '400': # code 307 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' post: tags: - devices @@ -2601,90 +1957,14 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 307: - value: - code: 307 - message: Port is not configured to IO-Link + '400': # code 104, 201, 202, 203, 206, 208, 307 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 309: - value: - code: 309 - message: IO-Link parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '/devices/{deviceAlias}/processdata/value': get: tags: @@ -2729,81 +2009,16 @@ paths: value: Buzzer: value: 5 - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available + '400': # code 305, 306, 601 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '101': - value: - code: 101 - message: Internal server error - '102': - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' post: tags: - devices @@ -2839,141 +2054,17 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - msgcode: 306 - message: Query parameter value invalid - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 501: - value: - code: 501 - message: I/Q is not configured as DIGITAL_OUTPUT - 502: - value: - code: 502 - message: C/Q is not configured as DIGITAL_OUTPUT - 503: - value: - code: 503 - message: IO-Link Device has no output process data - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - 701: - value: - code: 701 - message: Data set incomplete - 702: - value: - code: 702 - message: Data set not applicable - 703: - value: - code: 703 - message: Data set combination incompatible + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/processdata/getdata/value': get: tags: @@ -3010,82 +2101,17 @@ paths: Quality: value: 12 iqValue: true - - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available + '400': # code 305, 306, 601 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '101': - value: - code: 101 - message: Internal server error - '102': - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/processdata/setdata/value': get: tags: @@ -3115,85 +2141,17 @@ paths: value: true Valve_2: value: false - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '305': - value: - code: 305 - message: Query parameter name invalid - '306': - value: - code: 306 - message: Query parameter value invalid - '601': - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available + '400': # code 305, 306, 601 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '150': - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 503: - value: - code: 503 - message: IO-Link Device has no output process data + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '101': - value: - code: 101 - message: Internal server error - '102': - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters': get: tags: @@ -3210,77 +2168,17 @@ paths: application/json: schema: $ref: '#/components/schemas/deviceParametersGet' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 305 - message: Query parameter value invalid - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available + '400': # code 305, 306, 601 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{index}/value': get: tags: @@ -3316,97 +2214,17 @@ paths: value: 15 Quality: value: 12 - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 311: - value: - code: 311 - message: IO-Link parameter access error - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available + '400': # code 305, 306, 307, 311, 601 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 309: - value: - code: 309 - message: IO-Link parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + post: tags: - devices @@ -3442,133 +2260,17 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 311: - value: - code: 311 - message: IO-Link parameter access error - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - 701: - value: - code: 701 - message: Data set incomplete + '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 309: - value: - code: 309 - message: IO-Link parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{parameterName}/value': get: tags: @@ -3606,101 +2308,17 @@ paths: value: 15 Quality: value: 12 - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 311: - value: - code: 311 - message: IO-Link parameter access error - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available + + '400': # code 305, 306, 307, 311, 601 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 309: - value: - code: 309 - message: IO-Link parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device - 312: - value: - code: 312 - message: IO-Link parameter name is not unique + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' post: tags: - devices @@ -3738,129 +2356,17 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 311: - value: - code: 311 - message: IO-Link parameter access error - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - 701: - value: - code: 701 - message: Data set incomplete + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 309: - value: - code: 309 - message: IO-Link parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device - 312: - value: - code: 312 - message: IO-Link parameter name is not unique + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{index}/subindices': get: tags: @@ -3878,77 +2384,17 @@ paths: application/json: schema: $ref: '#/components/schemas/deviceSubParametersGet' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available + '400': # code 601 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 309: - value: - code: 309 - message: IO-Link parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{parameterName}/subindices': get: tags: @@ -3966,73 +2412,17 @@ paths: application/json: schema: $ref: '#/components/schemas/deviceSubParametersGet' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available + '400': # code 601 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 312: - value: - code: 312 - message: IO-Link parameter name is not unique + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value': get: tags: @@ -4064,97 +2454,17 @@ paths: format=iodd: value: value: 15.2 - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 311: - value: - code: 311 - message: IO-Link parameter access error - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available + + '400': # code 305, 306, 307, 311, 601 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 309: - value: - code: 309 - message: IO-Link parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' post: tags: - devices @@ -4186,125 +2496,17 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 311: - value: - code: 311 - message: IO-Link parameter access error - 601: - value: - code: 601 - message: IODD is not availabl - 701: - value: - code: 701 - message: Data set incomplete + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 309: - value: - code: 309 - message: IO-Link parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value': get: tags: @@ -4337,101 +2539,17 @@ paths: format=iodd: value: value: 15.2 - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 311: - value: - code: 311 - message: IO-Link parameter access error - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available + + '400': # code 305, 306, 307, 311, 601 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 309: - value: - code: 309 - message: IO-Link parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device - 312: - value: - code: 312 - message: IO-Link parameter name is not unique + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' post: tags: - devices @@ -4464,133 +2582,17 @@ paths: responses: '204': description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 311: - value: - code: 311 - message: IO-Link parameter access error - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - 701: - value: - code: 701 - message: Data set incomplete + '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 309: - value: - code: 309 - message: IO-Link parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device - 312: - value: - code: 312 - message: IO-Link parameter name is not unique + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/blockparameterization': post: tags: @@ -4752,137 +2754,17 @@ paths: iolinkError: code: 32817 message: Parameter value above limit - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 311: - value: - code: 311 - message: IO-Link parameter access error - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - 701: - value: - code: 701 - message: Data set incomplete - 702: - value: - code: 702 - message: Data set not applicable - 703: - value: - code: 703 - message: Data set combination incompatible + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 304: - value: - code: 304 - message: deviceAlias not found - 308: - value: - code: 308 - message: IO-Link Device is not accessible - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the device + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/events': get: tags: @@ -4901,58 +2783,14 @@ paths: application/json: schema: $ref: '#/components/schemas/deviceEventsGet' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - value: - code: 150 - message: Permission denied + $ref: '#/components/responses/HTTP_403' '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 304: - value: - code: 304 - message: deviceAlias not found + $ref: '#/components/responses/HTTP_404' '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error + $ref: '#/components/responses/HTTP_500' components: schemas: cycleTime: @@ -5049,10 +2887,10 @@ components: example: - masterNumber: 1 serialNumber: A12345678B - locationTag: slot 5 + locationTag: slotNumber 5 - masterNumber: 2 serialNumber: 123A45B783 - locationTag: slot 6 + locationTag: slotNumber 6 identificationGet: required: - vendorName @@ -5095,6 +2933,10 @@ components: type: string manualUrl: type: string + productInstanceUri: + type: string + gsdUri: + type: string applicationSpecificTag: type: string locationTag: @@ -5105,14 +2947,16 @@ components: vendorName: Vendor GmbH vendorId: 26 masterId: 42 - masterType: Master acc. V1.0 - serialNumber: IOLM123456 - orderCode: PROD-123456 - productName: IO-Link Master - productId: PROD-123456 + masterType: Wireless_Master + serialNumber: IOLWM123456 + orderCode: PROD123456 + productName: IO-Link Wireless Master + productId: PROD123456 hardwareRevision: 3.2.1.444R firmwareRevision: 3.2.1.888R - vendorUrl: 'http://www.io-link.com/io-link-master' + vendorUrl: 'http://www.io-link.com' + productInstanceUri: 'http://www.io-link.com/PROD123456/IOLWM123456' + gsdUri: 'https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml' manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' applicationSpecificTag: Fallback reader at the end of the belt locationTag: Down under @@ -5158,11 +3002,6 @@ components: type: number unit: type: string - example: - numberOfPorts: 8 - maxPowerSupply: - value: 0.3 - unit: A eventTime: description: >- Timestamp (format defined in DIN ISO 8601). This field can give an @@ -5359,18 +3198,28 @@ components: type: string serialNumber: type: string - productId: - type: string - vendorName: + orderCode: type: string productName: type: string + productId: + type: string hardwareRevision: type: string firmwareRevision: type: string + vendorUrl: + type: string + manualUrl: + type: string productInstanceUri: + type: string + applicationSpecificTag: type: string + locationTag: + type: string + functionTag: + type: string example: macAddress: '00:02:72:CE:A6:49' serialNumber: 'C134A746' @@ -5533,15 +3382,17 @@ components: properties: statusInfo: type: string - enum: - - COMMUNICATION_LOST - - DEACTIVATED - - INCORRECT_DEVICE - - DEVICE_STARTING - - DEVICE_ONLINE - - DIGITAL_INPUT_C/Q - - DIGITAL_OUTPUT_C/Q - - NOT_AVAILABLE + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE ioLinkRevision: description: >- Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or @@ -5559,6 +3410,7 @@ components: - COM1 - COM2 - COM3 + - WIRELESS masterCycleTime: description: >- Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or @@ -5566,13 +3418,21 @@ components: type: object allOf: - $ref: '#/components/schemas/cycleTime' - example: - statusInfo: DEVICE_ONLINE - ioLinkRevision: '1.1' - transmissionRate: COM2 - masterCycleTime: - value: 2.3 - unit: ms + example: #TODO + wired: + statusInfo: DEVICE_ONLINE + ioLinkRevision: '1.1' + transmissionRate: COM2 + masterCycleTime: + value: 2.3 + unit: ms + wireless: + statusInfo: DEVICE_ONLINE + ioLinkRevision: '1.1' + transmissionRate: WIRELESS + masterCycleTime: + value: 5 + unit: ms deviceCapabilitiesGet: required: - minimumCycleTime @@ -5600,157 +3460,1172 @@ components: type: integer minimum: 1 maximum: 16777215 - ioLinkRevision: - type: string - enum: - - '1.0' - - '1.1' - vendorName: - description: Mandatory if the Device suports the ISDU. - type: string - vendorText: - type: string - productName: - description: Mandatory if the Device suports the ISDU. - type: string - productId: - type: string - productText: - type: string - serialNumber: - type: string - hardwareRevision: - type: string - firmwareRevision: - type: string - applicationSpecificTag: - type: string - locationTag: - type: string - functionTag: - type: string - example: - vendorId: 26 - deviceId: 42 - ioLinkRevision: '1.1' - vendorName: SICK AG - vendorText: Sensor Intelligence. - productName: WTxx16 - productId: PROD-123456 - productText: Light switch - serialNumber: IOLM123456 - hardwareRevision: 3.2.1.444R - firmwareRevision: 3.2.1.888R - applicationSpecificTag: Fallback light switch at the end of the belt - locationTag: Down under - functionTag: Check end of belt - portIdentificationPost: - type: object - properties: - applicationSpecificTag: - type: string - example: Fallback light switch at the end of the belt - locationTag: - type: string - example: Down under - functionTag: - type: string - example: Check start of belt - portCapabilitiesGet: - type: object - required: - - maxPowerSupply - - portType - properties: - maxPowerSupply: + ioLinkRevision: + type: string + enum: + - '1.0' + - '1.1' + vendorName: + description: Mandatory if the Device suports the ISDU. + type: string + vendorText: + type: string + vendorUrl: + type: string + productName: + description: Mandatory if the Device suports the ISDU. + type: string + productId: + type: string + productText: + type: string + serialNumber: + type: string + hardwareRevision: + type: string + firmwareRevision: + type: string + productInstanceUri: + type: string + ioddUri: + type: string + applicationSpecificTag: + type: string + locationTag: + type: string + functionTag: + type: string + example: + vendorId: 26 + deviceId: 8389226 + ioLinkRevision: '1.1' + vendorName: SICK AG + vendorText: Sensor Intelligence. + productName: SLG-2 + productId: SLG-2 + productText: The SLG-2 IO-Link device is a smart lightgrid for space sensitive applications. + serialNumber: Serial123456 + hardwareRevision: 3.2.1.444R + firmwareRevision: 3.2.1.888R + vendorUrl: 'http://www.sick.com' + productInstanceUri: 'http://www.sick.com/SLG-2/Serial123456' + ioddUri: 'https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1' + # 'https://ioddfinder.io-link.com/api/vendors/26/iodds/11541/files/zip/rated' + # 'https://ioddfinder.io-link.com/productvariants/search/32872' + applicationSpecificTag: Fallback light switch at the end of the belt + locationTag: Down under + functionTag: Check end of belt + portIdentificationPost: + type: object + properties: + applicationSpecificTag: + type: string + example: Fallback light switch at the end of the belt + locationTag: + type: string + example: Down under + functionTag: + type: string + example: Check start of belt + portCapabilitiesGet: + type: object + required: + - portType + properties: + portType: + type: string + enum: + - CLASS_A + - CLASS_B + - CLASS_A_WITH_PORT_POWER_OFF_ON + - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS + - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS + - FAILSAFE_PORT_B + - WIRELESS + slotType: + type: string + enum: + - SSLOT + - DSLOT + maxPowerSupply: + type: object + required: + - value + - unit + properties: + value: + type: number + unit: + type: string + + portConfigurationGet: + type: object + required: + - mode + - iqConfiguration + - deviceAlias + properties: + mode: + type: string + enum: + - DEACTIVATED + - IOLINK_MANUAL + - IOLINK_AUTOSTART + - DIGITAL_INPUT + - DIGITAL_OUTPUT + + validationAndBackup: + description: Used by the IO-Link Master just when portMode is IOLINK_MANUAL. + type: string + enum: + - NO_DEVICE_CHECK + - TYPE_COMPATIBLE_DEVICE_V1.0 + - TYPE_COMPATIBLE_DEVICE_V1.1 + - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE + cycleTime: + description: >- + Used by the IO-Link Master just when portMode is IOLINK_MANUAL or + IOLINK_AUTOSTART. Default value is 0 ms which means as fast as + possible. + type: object + allOf: + - $ref: '#/components/schemas/cycleTime' + vendorId: + description: >- + Used by the IO-Link Master just when portMode is IOLINK_MANUAL and + validationAndBackup is not NO_DEVICE_CHECK. + type: integer + minimum: 1 + maximum: 65535 + deviceId: + description: >- + Used by the IO-Link Master just when portMode is IOLINK_MANUAL and + validationAndBackup is not NO_DEVICE_CHECK. + type: integer + minimum: 1 + maximum: 16777215 + iqConfiguration: + type: string + enum: + - NOT_SUPPORTED + - DIGITAL_INPUT + - DIGITAL_OUTPUT + deviceAlias: + type: string + example: + mode: IOLINK_MANUAL + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + iqConfiguration: ANALOG_INPUT + cycleTime: + value: 2.3 + unit: ms + vendorId: 26 + deviceId: 333 + deviceAlias: Distance_sensor_1 + + masterConfiguration: + properties: + masterId: + type: integer + minimum: 1 + maximum: 29 + ahtEnable: + type: boolean + default: false + pairingTimeout: + type: object + required: + - value + - unit + properties: + value: + type: integer + minimum: 5 + maximum: 65535 + unit: + type: string + enum: + - s + blacklist: + type: object + required: + - all + properties: + 2402: + type: boolean + default: false + 2403: + type: boolean + default: false + 2404: + type: boolean + default: false + 2405: + type: boolean + default: false + 2406: + type: boolean + default: false + 2407: + type: boolean + default: false + 2408: + type: boolean + default: false + 2409: + type: boolean + default: false + 2410: + type: boolean + default: false + 2411: + type: boolean + default: false + 2412: + type: boolean + default: false + 2413: + type: boolean + default: false + 2414: + type: boolean + default: false + 2415: + type: boolean + default: false + 2416: + type: boolean + default: false + 2417: + type: boolean + default: false + 2418: + type: boolean + default: false + 2419: + type: boolean + default: false + 2420: + type: boolean + default: false + 2421: + type: boolean + default: false + 2422: + type: boolean + default: false + 2423: + type: boolean + default: false + 2424: + type: boolean + default: false + 2425: + type: boolean + default: false + 2426: + type: boolean + default: false + 2427: + type: boolean + default: false + 2428: + type: boolean + default: false + 2429: + type: boolean + default: false + 2430: + type: boolean + default: false + 2431: + type: boolean + default: false + 2432: + type: boolean + default: false + 2433: + type: boolean + default: false + 2434: + type: boolean + default: false + 2435: + type: boolean + default: false + 2436: + type: boolean + default: false + 2437: + type: boolean + default: false + 2438: + type: boolean + default: false + 2439: + type: boolean + default: false + 2440: + type: boolean + default: false + 2441: + type: boolean + default: false + 2442: + type: boolean + default: false + 2443: + type: boolean + default: false + 2444: + type: boolean + default: false + 2445: + type: boolean + default: false + 2446: + type: boolean + default: false + 2447: + type: boolean + default: false + 2448: + type: boolean + default: false + 2449: + type: boolean + default: false + 2450: + type: boolean + default: false + 2451: + type: boolean + default: false + 2452: + type: boolean + default: false + 2453: + type: boolean + default: false + 2454: + type: boolean + default: false + 2455: + type: boolean + default: false + 2456: + type: boolean + default: false + 2457: + type: boolean + default: false + 2458: + type: boolean + default: false + 2459: + type: boolean + default: false + 2460: + type: boolean + default: false + 2461: + type: boolean + default: false + 2462: + type: boolean + default: false + 2463: + type: boolean + default: false + 2464: + type: boolean + default: false + 2465: + type: boolean + default: false + 2466: + type: boolean + default: false + 2467: + type: boolean + default: false + 2468: + type: boolean + default: false + 2469: + type: boolean + default: false + 2470: + type: boolean + default: false + 2471: + type: boolean + default: false + 2472: + type: boolean + default: false + 2473: + type: boolean + default: false + 2474: + type: boolean + default: false + 2475: + type: boolean + default: false + 2476: + type: boolean + default: false + 2477: + type: boolean + default: false + 2478: + type: boolean + default: false + 2479: + type: boolean + default: false + example: + masterId: 5 + ahtEnable: false + pairingTimeout: + value: 25 + unit: s + blackList: + 2402: false + 2403: false + 2404: false + 2405: false + 2406: false + 2407: false + 2408: false + 2409: false + 2410: false + 2411: false + 2412: false + 2413: false + 2414: false + 2415: false + 2416: false + 2417: false + 2418: false + 2419: false + 2420: false + 2421: false + 2422: false + 2423: false + 2424: false + 2425: false + 2426: false + 2427: false + 2428: false + 2429: false + 2430: false + 2431: false + 2432: false + 2433: false + 2434: false + 2435: false + 2436: false + 2437: false + 2438: false + 2439: false + 2440: false + 2441: false + 2442: false + 2443: false + 2444: false + 2445: false + 2446: false + 2447: false + 2448: false + 2449: false + 2450: false + 2451: false + 2452: false + 2453: false + 2454: false + 2455: false + 2456: false + 2457: false + 2458: false + 2459: false + 2460: false + 2461: false + 2462: false + 2463: false + 2464: false + 2465: false + 2466: false + 2467: false + 2468: false + 2469: false + 2470: false + 2471: false + 2472: false + 2473: false + 2474: false + 2475: false + 2476: false + 2477: false + 2478: false + 2479: false + + tracksStatisticsChannel: + properties: + trackNumber: + type: integer + minimum: 1 + maximum: 5 + channelErrors: + type: object + required: + - all + properties: + 2402: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2403: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2404: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2405: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2406: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2407: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2408: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2409: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2410: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2411: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2412: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2413: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2414: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2415: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2416: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2417: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2418: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2419: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2420: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2421: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2422: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2423: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2424: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2425: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2426: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2427: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2428: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2429: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2430: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2431: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2432: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2433: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2434: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2435: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2436: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2437: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2438: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2439: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2440: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2441: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2442: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2443: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2444: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2445: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2446: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2447: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2448: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2449: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2450: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2451: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2452: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2453: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2454: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2455: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2456: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2457: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2458: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2459: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2460: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2461: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2462: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2463: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2464: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2465: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2466: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2467: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2468: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2469: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2470: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2471: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2472: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2473: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2474: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2475: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2476: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2477: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2478: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + 2479: + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + example: + trackNumber: 2 + channelErrors: + 2402: 0 + 2403: 0 + 2404: 0 + 2405: 0 + 2406: 0 + 2407: 3 + 2408: 1 + 2409: 5 + 2410: 9 + 2411: 6 + 2412: 4 + 2413: 1 + 2414: 0 + 2415: 0 + 2416: 0 + 2417: 0 + 2418: 0 + 2419: 0 + 2420: 0 + 2421: 0 + 2422: 0 + 2423: 0 + 2424: 0 + 2425: 0 + 2426: 0 + 2427: 0 + 2428: 0 + 2429: 0 + 2430: 0 + 2431: 0 + 2432: 0 + 2433: 0 + 2434: 0 + 2435: 3 + 2436: 2 + 2437: 5 + 2438: 2 + 2439: 0 + 2440: 0 + 2441: 0 + 2442: 0 + 2443: 0 + 2444: 0 + 2445: 0 + 2446: 0 + 2447: 0 + 2448: 0 + 2449: 0 + 2450: 0 + 2451: 0 + 2452: 0 + 2453: 0 + 2454: 0 + 2455: 0 + 2456: 0 + 2457: 0 + 2458: 0 + 2459: 0 + 2460: 0 + 2461: 0 + 2462: 0 + 2463: 0 + 2464: 0 + 2465: 0 + 2466: 0 + 2467: 0 + 2468: 0 + 2469: 0 + 2470: 0 + 2471: 0 + 2472: 0 + 2473: 0 + 2474: 0 + 2475: 0 + 2476: 0 + 2477: 0 + 2478: 0 + 2479: 0 + + trackConfiguration: + properties: + statusInfo: + type: string + enum: + - STOP + - CYCLIC + - ROAMING + - SERVICE + txPower: + type: integer + minimum: 1 + maximum: 31 + example: + trackMode: CYCLIC + + trackConfigurationPost: + properties: + statusInfo: + type: string + enum: + - STOP + - CYCLIC + - ROAMING + - SERVICE + txPower: + type: integer + minimum: 1 + maximum: 31 + example: + trackMode: CYCLIC + txPower: 20 + + wirelessPortConfigurationGet: + properties: + portMode: + type: string + enum: + - DEACTIVATED + - CYCLIC + - ROAMING + validationBackup: + type: string + enum: + - NO_DEVICE_CHECK + - TYPE_COMPATIBLE_DEVICE_V1.1 + - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE + vendorId: + type: integer + minimum: 1 + maximum: 65535 + deviceId: + type: integer + minimum: 1 + maximum: 16777215 + portCycleTime: type: object required: - value - unit properties: value: - type: number + type: integer + minimum: 0 ## 0 means Freerunning + maximum: 315 ## Step size 5ms unit: type: string - portType: + enum: + - ms + trackNumber: + type: integer + minimum: 1 + maximum: 5 + slotNumber: + type: integer + minimum: 0 + maximum: 7 + slotType: type: string enum: - - CLASS_A - - CLASS_B - - CLASS_A_WITH_PORT_POWER_OFF_ON - - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_B - - WIRELESS_MASTER + - "SSLOT" + - "DSLOT" + maxRetry: + type: integer + minimum: 2 + maximum: 31 + imaTime: + type: object + required: + - base + - multiplier + properties: + base: + type: string + enum: + - "1664us" + - "5ms" + - "1s" + - "1min" + multiplier: + type: integer + minimum: 1 + maximum: 255 + deviceTxPower: + type: integer + minimum: 0 + maximum: 31 + lowPowerDevice: + type: string + enum: + - "NORMAL" + - "LOW_POWER" + maxPDSegLength: + type: integer + minimum: 0 + maximum: 32 + uniqueId: + type: string + deviceAlias: + type: string example: - maxPowerSupply: - value: 0.3 - unit: A - portType: CLASS_A - portConfigurationGet: - type: object - required: - - mode - - iqConfiguration - - deviceAlias + portMode: CYCLIC + validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + vendorId: 888 + deviceId: 1 + portCycleTime: + value: 0 + unit: ms + trackNumber: 5 + slotNumber: 1 + slotType: SSLOT + maxRetry: 20 + imaTime: + base: 1664us + multiplier: 60 + deviceTxPower: 31 + lowPowerDevice: NORMAL + maxPDSegLength: 0 + uniqueId: 03:78:00:00:01:32:50:60:46 + deviceAlias: "Port_X01" + + wirelessPortConfigurationPost: properties: - mode: + portMode: type: string enum: - DEACTIVATED - - IOLINK_MANUAL - - IOLINK_AUTOSTART - - DIGITAL_INPUT - - DIGITAL_OUTPUT - validationAndBackup: - description: Used by the IO-Link Master just when portMode is IOLINK_MANUAL. + - CYCLIC + - ROAMING + validationBackup: type: string enum: - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.0 - TYPE_COMPATIBLE_DEVICE_V1.1 - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - cycleTime: - description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL or - IOLINK_AUTOSTART. Default value is 0 ms which means as fast as - possible. - type: object - allOf: - - $ref: '#/components/schemas/cycleTime' vendorId: - description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL and - validationAndBackup is not NO_DEVICE_CHECK. type: integer minimum: 1 maximum: 65535 deviceId: - description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL and - validationAndBackup is not NO_DEVICE_CHECK. type: integer minimum: 1 maximum: 16777215 - iqConfiguration: + portCycleTime: + type: object + required: + - value + - unit + properties: + value: + type: integer + minimum: 0 ## 0 means Freerunning + maximum: 315 ## Step size 5ms + unit: + type: string + enum: + - ms + trackNumber: + type: integer + minimum: 1 + maximum: 5 + slotNumber: + type: integer + minimum: 0 + maximum: 7 + slotType: type: string enum: - - NOT_SUPPORTED - - DIGITAL_INPUT - - DIGITAL_OUTPUT - deviceAlias: + - "SSLOT" + - "DSLOT" + maxRetry: + type: integer + minimum: 2 + maximum: 31 + imaTime: + type: object + required: + - base + - multiplier + properties: + base: + type: string + enum: + - "1664us" + - "5ms" + - "1s" + - "1min" + multiplier: + type: integer + minimum: 1 + maximum: 255 + deviceTxPower: + type: integer + minimum: 0 + maximum: 31 + lowPowerDevice: + type: string + enum: + - "NORMAL" + - "LOW_POWER" + maxPDSegLength: + type: integer + minimum: 0 + maximum: 32 + uniqueId: type: string example: - mode: IOLINK_MANUAL - validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - iqConfiguration: ANALOG_INPUT - cycleTime: - value: 2.3 + portMode: CYCLIC + validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + vendorId: 888 + deviceId: 1 + portCycleTime: + value: 0 ##Or FreeRunning unit: ms - vendorId: 26 - deviceId: 333 - deviceAlias: Distance_sensor_1 + trackNumber: 5 + slotNumber: 1 + slotType: SSLOT + maxRetry: 20 + imaTime: + base: 1664us + multiplier: 60 + deviceTxPower: 31 + lowPowerDevice: NORMAL + maxPDSegLength: 0 + uniqueId: 03:78:00:00:01:32:50:60:46 + + portConfigurationPost: type: object properties: @@ -6062,6 +4937,8 @@ components: type: string iolinkError: $ref: '#/components/schemas/iolinkErrorObject' + + #--------------------------------------------------------------------------- parameters: vendorId: name: vendorId @@ -6104,6 +4981,14 @@ components: type: integer minimum: 1 required: true + trackNumber: + name: trackNumber + in: path + description: trackNumber identification number starting with 1 + schema: + type: integer + minimum: 1 + required: true portNumber: name: portNumber in: path @@ -6207,19 +5092,226 @@ components: type: string required: true responses: - errorResponse: - description: Error + HTTP_400: + description: Bad request content: application/json: schema: - type: object - required: - - code - - message - properties: - code: - type: integer - message: - type: string - iolError: - type: integer + $ref: '#/components/schemas/errorObject' + examples: + 104: + description: Fieldbus controller or another gateway protocol has claimed priority + value: + code: 104 + message: Action locked by another client + 201: + description: Error while parsing the incoming JSON object + value: + code: 201 + message: JSON parsing failed + 202: + description: Error while parsing a specific JSON value, e.g. a malformed IP address + value: + code: 202 + message: JSON data value invalid + 203: + description: e.g. string instead of number + value: + code: 203 + message: JSON data type invalid + 204: + value: + code: 204 + message: Enumeration value unknown + 205: + description: Exceeds the minimum or maximum value + value: + code: 205 + message: JSON data value out of range + 206: + description: An array or string was accessed exceeding its maximum length + value: + code: 206 + message: JSON data value out of bounds + 208: + value: + code: 208 + message: POST or PUT request without content + 305: + value: + code: 305 + message: Query parameter name invalid + 306: + value: + code: 306 + message: Query parameter value invalid + 307: + value: + code: 307 + message: Port is not configured to IO-Link + 311: + value: + code: 311 + message: IO-Link parameter access error + 401: + value: + code: 401 + message: Data storage mismatch + 501: + value: + code: 501 + message: I/Q is not configured as DIGITAL_OUTPUT + 502: + value: + code: 502 + message: C/Q is not configured as DIGITAL_OUTPUT + 503: + value: + code: 503 + message: IO-Link Device has no output process data + 601: + value: + code: 601 + message: IODD (representation) for this IO-Link device is not available + 603: + value: + code: 603 + message: IODD upload failed. IODD XML invalid + 604: + value: + code: 604 + message: IODD upload failed. CRC error + 605: + value: + code: 605 + message: IODD upload failed. Parsing error + 701: + value: + code: 701 + message: Data set incomplete + 702: + description: whole data set is rejected + value: + code: 702 + message: Data set not applicable + 703: + description: whole data set is rejected + value: + code: 703 + message: Data set combination incompatible + HTTP_401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/errorObject' + examples: + 150: + description: due to user management restrictions + value: + code: 140 + message: Invalid credentials + HTTP_403: + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/errorObject' + examples: + 150: + description: due to user management restrictions + value: + code: 150 + message: Permission denied + HTTP_404: + description: Not found + content: + application/json: + schema: + $ref: '#/components/schemas/errorObject' + examples: + 103: + value: + code: 103 + message: Operation not supported + 301: + description: e.g. wrong URL + value: + code: 301 + message: Resource not found + 302: + value: + code: 302 + message: masterNumber not found + 303: + value: + code: 303 + message: portNumber not found + 304: + value: + code: 304 + message: deviceAlias not found + 308: + description: e.g. not connected or communication error + value: + code: 308 + message: IO-Link Device is not accessible + 309: + value: + code: 309 + message: IO-Link Parameter not found + 310: + value: + code: 310 + message: IO-Link parameter access not supported by the Device + 312: + value: + code: 312 + message: IO-Link parameter name is not unique + HTTP_500: + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/errorObject' + examples: + 101: + value: + code: 101 + message: Internal server error + 102: + value: + code: 102 + message: Internal communication error + 602: + value: + code: 602 + message: IODD upload failed. Not enough memory + HTTP_501: + description: Not Implemented + content: + application/json: + schema: + $ref: '#/components/schemas/errorObject' + examples: + 105: + value: + code: 105 + message: IODD feature not supported + 106: + value: + code: 106 + message: MQTT feature not supported + HTTP_503: + description: Service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/errorObject' + examples: + 107: + value: + code: 107 + message: 'Service temporarily unavailable' + + \ No newline at end of file diff --git a/JSON_for_IO-Link_2.0.yaml b/JSON_for_IO-Link_2.0.yaml deleted file mode 100644 index 54db1bc..0000000 --- a/JSON_for_IO-Link_2.0.yaml +++ /dev/null @@ -1,5304 +0,0 @@ -openapi: 3.0.3 -info: - description: >- - This is a sample IO-Link Master server. You can find out more about IO-Link - at [http://www.io-link.com](http://www.io-link.com) - - # Description - - * Document version from 10.11.2021 - - version: 2.0.0 - title: Swagger IO-Link Master - contact: - email: benjamin.vervoort@balluff.de - license: - name: tbd - url: 'http://www.io-link.com' - -servers: - - url: 'http://iolmaster.io-link.com/{basePath}' - - url: '{scheme}://{host}/{basePath}' - variables: - host: - default: 'iolmaster.io-link.com' - basePath: - enum: - - 'iolink' - - 'iolink/v1' - default: iolink - scheme: - description: 'The IO-Link gateway can expose the API over https and/or http' - enum: - - 'https' - - 'http' - default: 'http' - -tags: - - name: general - description: Access to general informations - - name: gateway - description: Access to parameters of the JSON gateway - - name: mqtt - description: Access to the parameters of the MQTT client - - name: iodds - description: Access to the IODDs - - name: masters - description: Access to parameters of the IO-Link master itself - - name: tracks - description: Access to the tracks (radios) of the IO-Link wireless master - - name: ports - description: Access to the IO-Link ports of the IO-Link master - - name: devices - description: Access to the IO-Link Devices connected ot the Master - - -paths: -################################################################################ - '/login': - get: - tags: - - general - summary: Returns the login status of the user - description: >- - Returns the login status of the user as a boolean value - operationId: getUsersLogin - responses: - '200': - description: OK - content: - application/json: - schema: - properties: - isLoggedIn: - type: boolean - userRole: - type: string - description: 'Is true in case of a valid user, that is logged in.' - example: - isLoggedIn: true - userRole: 'Operator' - post: - tags: - - general - summary: Logs in with credentials and returns the session bearer token. - description: >- - Credentials based authentication - Depending on technical feasibility, the HTTP cookie header shall be used. If the backend does not support cookies, the session bearer token shall be sent in the JSON body. The client has to support both mechanisms. - operationId: postUsersLogin - requestBody: - required: true - content: - application/json: - schema: - type: object - required: - - username - - password - properties: - username: - type: string - password: - type: string - example: - username: fred - password: '12345678' - security: [] - responses: - '200': - description: > - Successfully authenticated.

The set cookie header is only - sent if the server supports HTTP cookies. Otherwise, the session ID - is also sent in the JSON body. - headers: - Set-Cookie: - schema: - type: string - example: SESSIONID=abcde12345; Path=/; HttpOnly; Secure; - content: - application/json: - schema: - required: - - userRole - properties: - SESSIONID: - type: string - userRole: - type: string - enum: - - Operator - - Maintenance - - Specialist - examples: - without cookie handling: - value: - SESSIONID: abc123abc123 - userRole: Maintenance - with cookie handling: - value: - userRole: Maintenance - - '401': - $ref: '#/components/responses/HTTP_401' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/logout': - post: - tags: - - general - summary: Logs out and invalidates the Session-Token. - description: >- - This command does not discern between a logged out or a logged in user. - operationId: postUsersLogout - responses: - '204': - description: | - Successfully logged out. Session-Token is now invalid. - '401': - description: | - Session-Token invalid or not found. No action. - content: - application/json: - schema: - $ref: '#/components/schemas/eventObject' - example: - code: 141 - message: 'Unknown SESSIONID' - '/specs': - get: - tags: - - general - summary: Read the version information as list of specification references. - description: >- - This command is mandatory. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: array - items: - required: - - specUri - properties: - specUri: - type: string - specDesc: - type: string - example: # Wireless Master with Profinet - - specUri: "http://www.io-link.com/io-link/10.222/V2.0" - specDesc: "JSON Integration for IO-Link - Draft V2.0" - - specUri: "http://www.io-link.com/io-link/10.222/V1.0" - specDesc: "JSON Integration for IO-Link V1.0" - - specUri: "http://www.io-link.com/io-link/10.002/V1.13" - specDesc: "IO-Link Interface and System Specification V1.13" - - specUri: "http://www.io-link.com/io-link/10.122/V1.1" - specDesc: "IO-Link Wireless System Extensions V1.1" - - specUri: "http://profibus.com/profinet/2.722/V2.4MU2" - specDesc: "Application Layer protocol for decentralized periphery - Technical Specification for PROFINET IO" - - specUri: "http://profibus.com/profinet/2.712/V2.4MU2" - specDesc: "Application Layer services for decentralized periphery - Technical Specification for PROFINET IO" - '/gateways': - get: - tags: - - general - summary: Read the known IO-Link gateways as list of URLs. - description: >- - This command is optional. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: array - items: - type: object - required: - - gatewayUrl - properties: - gatewayUrl: - type: string - masterNumber: - type: integer - minimum: 1 - portNumber: - type: integer - minimum: 1 - example: - - gatewayAlias: gateway1 - gatewayUrl: 'http://gateway1' - - gatewayAlias: gatewayXYZ - gatewayUrl: 'http://gatewayXYZ' - - gatewayAlias: BNI_IOL - gatewayUrl: 'https://BNI_IOL/' - - gatewayAlias: master1 - gatewayUrl: 'https://192.168.88.191' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/gateway/identification': - get: - tags: - - gateway - summary: Read the identification of the Gateway. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/gatewayIdentificationGet' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/gateway/capabilities': - get: - tags: - - gateway - summary: Read the capabilities of the Gateway. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/gatewayCapabilitiesGet' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/gateway/configuration': - get: - tags: - - gateway - summary: Read the configuration of the Gateway . - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/gatewayConfigurationGetPost' - examples: - Manual: - value: - ethIpv4: - - ipConfiguration: MANUAL - ipAddress: 192.168.1.13 - subnetMask: 255.255.255.0 - standardGateway: 192.168.1.1 - DHCP: - value: - ethIpv4: - - ipConfiguration: DHCP - ipAddress: 192.168.100.5 - subnetMask: 255.255.255.0 - standardGateway: 192.168.100.1 - Multiple ethernet interfaces: - value: - ethIpv4: - - ipConfiguration: MANUAL - ipAddress: 192.168.1.13 - subnetMask: 255.255.255.0 - standardGateway: 192.168.1.1 - - ipConfiguration: MANUAL - ipAddress: 192.168.2.10 - subnetMask: 255.255.255.0 - standardGateway: 192.168.2.1 - - ipConfiguration: DHCP - ipAddress: 192.168.200.7 - subnetMask: 255.255.255.0 - standardGateway: 192.168.200.1 - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - post: - tags: - - gateway - summary: Write the configuration of the Gateway. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/gatewayConfigurationGetPost' - examples: - Manual: - value: - ethIpv4: - - ipConfiguration: MANUAL - ipAddress: 192.168.1.13 - subnetMask: 255.255.255.0 - standardGateway: 192.168.1.1 - DHCP: - value: - ethIpv4: - - ipConfiguration: DHCP - Multiple ethernet interfaces: - value: - ethIpv4: - - ipConfiguration: MANUAL - ipAddress: 192.168.1.13 - subnetMask: 255.255.255.0 - standardGateway: 192.168.1.1 - - ipConfiguration: MANUAL - ipAddress: 192.168.2.10 - subnetMask: 255.255.255.0 - standardGateway: 192.168.2.1 - - ipConfiguration: DHCP - responses: - '204': - description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/gateway/reset': - post: - tags: - - gateway - summary: Reset the Gateway including all Masters. Optional. - responses: - '204': - description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/gateway/reboot': - post: - tags: - - gateway - summary: Reboot the Gateway including all Masters. Optional. - responses: - '204': - description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/gateway/events': - get: - tags: - - gateway - summary: Read the EventLog containing all events from Gateway, Masters, Ports and Devices. - parameters: - - $ref: '#/components/parameters/eventOrigin' - - $ref: '#/components/parameters/eventMasterNumber' - - $ref: '#/components/parameters/eventPortNumber' - - $ref: '#/components/parameters/eventdeviceAlias' - - $ref: '#/components/parameters/eventTop' - - $ref: '#/components/parameters/eventBottom' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/gatewayEventsGet' - examples: - origin=ALL: - value: - - time: '2018-05-18T07:31:54.123Z' - severity: WARNING - origin: - masterNumber: 1 - message: - text: IO-Link Master has restarted - - time: '2018-05-18T07:32:42.023Z' - severity: ERROR - origin: - masterNumber: 1 - portNumber: 1 - message: - code: 6163 - mode: APPEARS - text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:31:54.123Z' - severity: WARNING - origin: - masterNumber: 1 - portNumber: 1 - deviceAlias: Temp_sensor_1 - message: - code: 16912 - mode: APPEARS - text: Device temperature over-run – Clear source of heat - origin=MASTERS: - value: - - time: '2018-05-18T07:31:54.123Z' - severity: WARNING - origin: - masterNumber: 1 - message: - text: IO-Link Master has restarted - origin=PORTS: - value: - - time: '2018-05-18T07:32:42.023Z' - severity: ERROR - origin: - masterNumber: 1 - port: 1 - message: - code: 6163 - mode: APPEARS - text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:33:42.023Z' - severity: ERROR - origin: - masterNumber: 1 - portNumber: 1 - message: - code: 6163 - mode: DISAPPEARS - text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:35:54.123Z' - severity: NOTICE - origin: - masterNumber: 1 - portNumber: 2 - message: - code: 65313 - mode: SINGLESHOT - text: New slave - origin=DEVICES: - value: - - time: '2018-05-18T07:31:54.123Z' - severity: WARNING - origin: - masterNumber: 1 - portNumber: 1 - deviceAlias: Temp_sensor_1 - message: - code: 16912 - mode: APPEARS - text: Device temperature over-run – Clear source of heat - - time: '2018-05-18T08:31:54.123Z' - severity: ERROR - origin: - masterNumber: 1 - portNumber: 3 - deviceAlias: Distance_Laser_3 - message: - code: 20480 - mode: APPEARS - text: Device hardware fault – Device exchange - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/mqtt/configuration': - get: - tags: - - mqtt - summary: >- - Read the MQTT configuration of the Gateway. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/mqttConfigurationGetPost' - examples: - Active client: - value: - clientMode: "ACTIVE" - serverAddress: 192.168.2.1/mqttbroker - username: iolink_json - password: '1234' - lastwill: - - topic: process_data - message: Process data transfer stopped. - qos: 0_ONLY_ONCE - retain: true - keepAliveTime: 10 - Inactive client: - value: - clientMode: "INACTIVE" - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - post: - tags: - - mqtt - summary: >- - Update the MQTT configuration of the Gateway. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/mqttConfigurationGetPost' - examples: - Active Client: - value: - clientMode: ACTIVE - serverAddress: 192.168.2.1/mqttbroker - username: iolink_json - password: '1234' - lastwill: - - topic: process_data - message: Process data transfer stopped. - qos: 0_ONLY_ONCE - retain: true - keepAliveTime: 10 - Inactive Client: - value: - clientMode: INACTIVE - responses: - '204': - description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/mqtt/topics': - get: - tags: - - mqtt - summary: Get the list of MQTT topics. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/mqttConfigurationTopicGet' - example: - - topicId: 1 - topicName: Sensor34/processData - qos: 1_AT_LEAST_ONCE - deviceAlias: DT35 - processData: - direction: getData - format: iodd - interval: - value: 10 - unit: ms - - topicId: 2 - topicName: Sensor34/event - qos: 1_AT_LEAST_ONCE - deviceAlias: TAD081 - event: null - - topicId: 3 - topicName: PD - qos: 0_ONLY_ONCE - deviceAlias: BNI_IOL - processData: - direction: getSetData - format: iodd - onChange: true - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - post: - tags: - - mqtt - summary: Create a new MQTT topic. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/mqttConfigurationTopicPost' - examples: - Process Data: - value: - qos: 1_AT_LEAST_ONCE - deviceAlias: DT35 - processData: - direction: getData - format: iodd - interval: - value: 10 - unit: ms - Event: - value: - qos: 1_AT_LEAST_ONCE - deviceAlias: TAD081 - event: {} - responses: - '200': - description: Successful operation returning the topic ID - content: - application/json: - schema: - type: integer - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/mqtt/topics/{topicId}': - get: - tags: - - mqtt - summary: Get one MQTT topic. - parameters: - - $ref: '#/components/parameters/mqttTopicId' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/mqttConfigurationTopicGet' - examples: - Process Data: - value: - topicId: 1 - topicName: PD input - qos: 1_AT_LEAST_ONCE - deviceAlias: DT35 - processData: - direction: getData - format: iodd - interval: - value: 10 - unit: ms - Event: - value: - topicId: 2 - topicName: Event - qos: 1_AT_LEAST_ONCE - deviceAlias: TAD081 - event: {} - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - delete: - tags: - - mqtt - summary: Delete a specific MQTT topic. - parameters: - - $ref: '#/components/parameters/mqttTopicId' - responses: - '204': - description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/mqtt/connectionstatus': - get: - tags: - - mqtt - summary: Read the connection status of the MQTT client to the MQTT server. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/mqttConnectionStatusGet' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/iodds': - get: - tags: - - iodds - summary: >- - Get a list of all IODD (representations) that are available on the Gateway. - description: >- - Only one version of an IODD is stored on the webserver at the same time - for one vendorId-deviceId-ioLinkRevision-combination. - parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/ioddsGet' - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - delete: - tags: - - iodds - summary: Delete a specific IODD representation. - parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' - responses: - '204': - description: Successful operation - '400': # code 104, 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/iodds/file': - get: - tags: - - iodds - summary: Get a specific IODD. Optional. - description: All query parameters are mandatory. - parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' - responses: - '200': - description: Successful operation - content: - application/xml: - schema: - $ref: '#/components/schemas/ioddFile' - example: - - IODD XML file - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - post: - tags: - - iodds - summary: Store or update an IODD. - description: > - It is not needed to specifiy the identification data for this action as the - parser can read this information. - requestBody: - required: true - content: - application/xml: - schema: - $ref: '#/components/schemas/ioddFile' - example: - - IODD XML file - responses: - '204': - description: Successful operation - '400': # code 104, 208, 603, 604, 605 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': # code 101, 602 - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/masters': - get: - tags: - - masters - summary: >- - Read all the available masterNumber keys with the corresponding - identification information. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/identificationMasters' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/capabilities': - get: - tags: - - masters - summary: Read the capabilities of the Master. - parameters: - - $ref: '#/components/parameters/masterNumber' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/masterCapabilitiesGet' - examples: - wired: - value: - numberOfPorts: 8 - maxPowerSupply: #overall power consumption - value: 0.3 - unit: A - wireless: - value: - masterType: Wireless_Master - numberOfPorts: 40 - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/identification': - get: - tags: - - masters - summary: Read the identification of the Master. - parameters: - - $ref: '#/components/parameters/masterNumber' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/identificationGet' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - post: - tags: - - masters - summary: Write application specific identification to a Master. - parameters: - - $ref: '#/components/parameters/masterNumber' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/identificationPost' - examples: - All optional fiels: - value: - applicationSpecificTag: Fallback reader at the end of the belt - locationTag: Down under - functionTag: Code reading - responses: - '204': - description: Successful operation - '400': # code 104, 201, 202, 203, 206, 208 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/configuration': - get: - tags: - - masters - summary: Read the actual configuration of the specified Master. - parameters: - - $ref: '#/components/parameters/masterNumber' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/masterConfiguration' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - post: - tags: - - masters - summary: Write the configuration of the specified Master. - parameters: - - $ref: '#/components/parameters/masterNumber' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/masterConfiguration' - responses: - '204': - description: Successful operation - '400': - description: Bad request - content: - application/json: - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 206: - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST request without content - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - -################################################################################ -# tracks -################################################################################ - '/masters/{masterNumber}/tracks': - get: - tags: - - tracks - summary: Read the information about the available wireless tracks. Mandatory for W-Masters. - - parameters: - - $ref: '#/components/parameters/masterNumber' - description: >- - A W-Master can handle up to 5 transmission tracks in parallel, each trackNumber can handle a maximum of 8 W-Devices, thus supporting up to 40 W-Devices per W-Master. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - items: - type: object - required: - - trackNumber - - statusInfo - properties: - trackNumber: - type: integer - minimum: 1 - maximum: 5 - statusInfo: - type: string - enum: - - STOP - - CYCLIC - - ROAMING - - SCANNING - - PAIRING - example: - tracksInfo: - - trackNumber: 1 - statusInfo: "STOP" - - trackNumber: 2 - statusInfo: "CYCLIC" - - trackNumber: 3 - statusInfo: "ROAMING" - - trackNumber: 4 - statusInfo: "SCANNING" - - trackNumber: 5 - statusInfo: "PAIRING" - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/tracks/scan': - post: - tags: - - tracks - summary: Start scanning on the specified trackNumber. Mandatory for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - description: >- - Discover unpaired W-Devices in the proximity of the W-Master. - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - txPower: - type: integer - minimum: 1 - maximum: 31 - example: - txPower: 31 - responses: - '204': - description: Successful operation - '400': - description: Bad request - content: - application/json: - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 205: - value: - code: 205 - message: JSON data value out of range - 208: - value: - code: 208 - message: POST request without content - 701: - value: - code: 701 - message: Data set incomplete - 702: - value: - code: 702 - message: Data set not applicable - 703: - value: - code: 703 - message: Data set combination incompatible - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '503': - $ref: '#/components/responses/HTTP_503' - get: - tags: - - tracks - summary: Read back the last scan result. Mandatory for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - description: >- - List the unique identifiers (UniqueID) of the discovered unpaired W-Devices. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - items: - type: object - properties: - SlotType: - type: string - enum: - - SSLOT - - DSLOT - revisionId: - type: string - uniqueId: - type: string - example: - scanResult: - - slotType: SSLOT - revisionId: 1.1 - uniqueId: 03:78:00:00:01:32:50:60:46 - lastSeen: "2019-02-19T08:02:51.786Z" - - slotType: DSLOT - revisionId: 1.1 - uniqueId: 03:78:00:00:01:32:50:60:47 - lastSeen: "2019-02-19T08:02:51.786Z" - - slotType: SSLOT - revisionId: 1.1 - uniqueId: 03:78:00:00:01:32:50:60:48 - lastSeen: "2019-02-19T08:02:51.786Z" - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '503': - $ref: '#/components/responses/HTTP_503' - '/masters/{masterNumber}/tracks/{trackNumber}/status': - get: - tags: - - tracks - summary: Read the status of the selected trackNumber. Mandatory for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/trackNumber' - description: >- - Indicates the actual operational mode of the trackNumber (STOP, CYCLIC, SCAN, PAIRING, ROAMING) and the transmission power of the trackNumber radio. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: object - required: - - trackNumber - - statusInfo - - txPower - properties: - trackNumber: - type: integer - minimum: 1 - maximum: 5 - statusInfo: - type: string - enum: - - STOP - - CYCLIC - - ROAMING - - SCANNING - - PAIRING - txPower: - type: integer - minimum: 1 - maximum: 31 - example: - trackNumber: 2 - statusInfo: "STOP" - txPower: 31 - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/tracks/{trackNumber}/statistics': - get: - tags: - - tracks - summary: Read the statistics (Errors and PEP) of the selected trackNumber. Optional for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/trackNumber' - description: >- - Monitoring the wireless environment regarding reliability indicating link quality. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: object - required: - - trackNumber - - errors - - PEP - properties: - trackNumber: - type: integer - minimum: 1 - maximum: 5 - errors: - type: integer - minimum: 0 - maximum: 65535 # 65535 = no data available - PEP: - type: string - example: - trackNumber: 2 - slots: - - slotNumber: 0 - errors: "-" - PEP: "-" - - slotNumber: 1 - errors: "-" - PEP: "-" - - slotNumber: 2 - errors: "-" - PEP: "-" - - slotNumber: 3 - errors: "-" - PEP: "-" - - slotNumber: 4 - errors: "-" - PEP: "-" - - slotNumber: 5 - errors: 63 - PEP: 1.5380859375 - - slotNumber: 6 - errors: "-" - PEP: "-" - - slotNumber: 7 - errors: "-" - PEP: "-" - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/tracks/{trackNumber}/statisticsChannel': - get: - tags: - - tracks - summary: Read the channel statistics (Errors %) of the selected trackNumber. Optional for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/trackNumber' - description: >- - Monitoring the wireless channel regarding reliability indicating link quality. 100 transmissions per channel are computed. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/tracksStatisticsChannel' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/tracks/{trackNumber}/configuration': - get: - tags: - - tracks - summary: Read the configuration of the specified trackNumber. Mandatory for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/trackNumber' - description: >- - - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/trackConfiguration' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - post: - tags: - - tracks - summary: Write the configuration of the specified trackNumber. Mandatory for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/trackNumber' - description: >- - - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/trackConfigurationPost' - responses: - '204': - description: Successful operation - '400': - description: Bad request - content: - application/json: - examples: - 104: - value: - code: 104 - message: Action locked by another client - 201: - value: - code: 201 - message: JSON parsing failed - 202: - value: - code: 202 - message: JSON data value invalid - 203: - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - value: - code: 205 - message: JSON data value out of range - 208: - value: - code: 208 - message: POST request without content - 701: - value: - code: 701 - message: Data set incomplete - 702: - value: - code: 702 - message: Data set not applicable - 703: - value: - code: 703 - message: Data set combination incompatible - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - -################################################################################ -# ports -################################################################################ - '/masters/{masterNumber}/ports': - get: - tags: - - ports - summary: Read all the available portNumber keys with the corresponding identification information. - parameters: - - $ref: '#/components/parameters/masterNumber' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: array - items: - type: object - required: - - portNumber - - statusInfo - - deviceAlias - properties: - portNumber: - type: number - deviceAlias: - type: string - statusInfo: - type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - slotNumber: - type: number - trackNumber: - type: number - slotType: - type: string - enum: - - SSLOT - - DSLOT - items: - type: object - properties: - vendorId: - type: number - deviceId: - type: number - productName: - type: string - example: - - portNumber: 1 - statusInfo: "DEVICE_ONLINE" - deviceAlias: "Distance_Sensor" - - portNumber: 2 - statusInfo: "DIGITAL_INPUT_C/Q" - deviceAlias: "Switching_Sensor" - - portNumber: 3 - trackNumber: 1 - slotNumber: 2 - slotType: "SSLOT" - statusInfo: "DEVICE_ONLINE" - deviceAlias: "Wireless_Bridge" - deviceInfo: - vendorId: 888 - deviceId: 10485760 - productName: "BNI IOW-302-W01-K080" - - portNumber: 4 - statusInfo: "DEACTIVATED" - deviceAlias: "Empty_port" - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/ports/{portNumber}/capabilities': - get: - tags: - - ports - summary: Read the capability information of the specified port. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/portCapabilitiesGet' - examples: - CLASS_A: - value: - maxPowerSupply: - value: 0.3 - unit: A - portType: CLASS_A - CLASS_B: - value: - maxPowerSupply: - value: 2.0 - unit: A - portType: CLASS_B - CLASS_A_WITH_PORT_POWER_OFF_ON: - value: - maxPowerSupply: - value: 0.3 - unit: A - portType: CLASS_A_WITH_PORT_POWER_OFF_ON - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS: - value: - maxPowerSupply: - value: 0.2 - unit: A - portType: FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS: - value: - maxPowerSupply: - value: 0.2 - unit: A - portType: FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - FAILSAFE_PORT_B: - value: - maxPowerSupply: - value: 2.0 - unit: A - portType: FAILSAFE_PORT_B - WIRELESS: - value: - portType: WIRELESS - slotType: "DSLOT" - - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/ports/{portNumber}/status': - get: - tags: - - ports - summary: Read the actual status of the selected port. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - # $ref: '#/components/schemas/portStatusGet' - type: object - required: - - statusInfo - properties: - statusInfo: - type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - - ioLinkRevision: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - '1.0' - - '1.1' - transmissionRate: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - COM1 - - COM2 - - COM3 - - WIRELESS - masterCycleTime: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: object - allOf: - - $ref: '#/components/schemas/cycleTime' - portQualityInfo: - type: object - required: - - value - - unit - properties: - value: - type: integer - minimum: 0 - maximum: 100 - unit: - type: string - enum: - - "%" - examples: - wired: - value: - statusInfo: "DEVICE_ONLINE" - ioLinkRevision: "1.1" - transmissionRate: COM2 - masterCycleTime: - value: 2.3 - unit: ms - wireless: - value: - statusInfo: "DEVICE_ONLINE" - ioLinkRevision: "1.1" - transmissionRate: WIRELESS - masterCycleTime: - value: 5 - unit: "ms" - portQuality: - value: 100 - unit: "%" - - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/ports/{portNumber}/configuration': - get: - tags: - - ports - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' - summary: Read the actual configuration of the specified port. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/wirelessPortConfigurationGet' - - $ref: '#/components/schemas/portConfigurationGet' - - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - post: - tags: - - ports - summary: Write the configuration of the specified port. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' - requestBody: - required: true - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/wirelessPortConfigurationPost' - - $ref: '#/components/schemas/portConfigurationPost' - examples: - Complete configuration: - value: - mode: IOLINK_MANUAL - validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - cycleTime: - value: 2.3 - unit: ms - vendorId: 26 - deviceId: 333 - iqConfiguration: DIGITAL_INPUT - deviceAlias: Distance_sensor_1 - Change CQ mode: - value: - mode: IOLINK_AUTOSTART - Change iqConfiguration: - value: - iqConfiguration: DIGITAL_OUTPUT - Change the deviceAlias: - value: - deviceAlias: Flow_control_1 - responses: - '204': - description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/ports/{portNumber}/datastorage': - get: - tags: - - ports - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' - summary: Read the Data Storage content of a specific port. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/dataStorageGetPost' - examples: - Data Storage with valid content: - value: - header: - vendorId: 15 - deviceId: 65253 - ioLinkRevision: '1.1' - content: >- - TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl - Empty Data Storage: - value: - header: {} - content: '' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - post: - tags: - - ports - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' - summary: Write the Data Storage content to a specific port. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/dataStorageGetPost' - examples: - Data Storage with valid content: - value: - header: - vendorId: 15 - deviceId: 65253 - ioLinkRevision: '1.1' - content: >- - TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl - Empty Data Storage: - value: - header: {} - content: '' - responses: - '204': - description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/devices': - get: - tags: - - devices - summary: Get all available deviceAlias keys and the location by Master number and Port number. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: array - items: - type: object - required: - - deviceAlias - - masterNumber - - portNumber - properties: - deviceAlias: - type: string - masterNumber: - type: integer - minimum: 1 - portNumber: - type: integer - minimum: 1 - example: - - deviceAlias: DT35 - masterNumber: 1 - portNumber: 1 - - deviceAlias: TAD081 - masterNumber: 1 - portNumber: 2 - - deviceAlias: BNI_IOL - masterNumber: 1 - portNumber: 3 - - deviceAlias: master1port4 - masterNumber: 1 - portNumber: 4 - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/devices/{deviceAlias}/capabilities': - get: - tags: - - devices - summary: Read the capabililties from the specific Device. - parameters: - - $ref: '#/components/parameters/deviceAlias' - responses: - '200': - description: Successful opearation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceCapabilitiesGet' - example: - minimumCycleTime: - value: 2.3 - unit: ms - supportedProfiles: [10, 32770] - '400': # code 307 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/devices/{deviceAlias}/identification': - get: - tags: - - devices - summary: Read the identification from the specific Device. - description: >- - *Implementation hint*: You have to request the ISDU values of - applicationSpecificTag, locationTag and functionTag (if they are - supported by the device). - parameters: - - $ref: '#/components/parameters/deviceAlias' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceIdentificationGet' - '400': # code 307 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - post: - tags: - - devices - summary: Write application specific identification to the Device. - parameters: - - $ref: '#/components/parameters/deviceAlias' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/portIdentificationPost' - examples: - All optional fields: - value: - applicationSpecificTag: Fallback light switch at the end of the belt - locationTag: Down under - functionTag: Check start of belt - responses: - '204': - description: Successful operation - '400': # code 104, 201, 202, 203, 206, 208, 307 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/devices/{deviceAlias}/processdata/value': - get: - tags: - - devices - summary: Read the process data values (input and output) from the specified Device. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceProcessDataValueGet' - examples: - 'Format=byteArray, CQ in IO-Link (only input), IQ in digital output': - value: - getData: - ioLink: - valid: true - value: - - 12 - - 22 - - 216 - setData: - iqValue: true - 'Format=iodd, CQ in IO-Link (input and output), IQ in digital input': - value: - getData: - ioLink: - valid: true - value: - Distance: - value: 55 - Quality: - value: 12 - iqValue: true - setData: - ioLink: - valid: true - value: - Buzzer: - value: 5 - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - post: - tags: - - devices - summary: Write the process data output values to the specified Device. - parameters: - - $ref: '#/components/parameters/deviceAlias' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/deviceProcessDataValuePost' - examples: - 'format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output': - value: - ioLink: - valid: true - value: - - 15 - - 123 - - 126 - - 236 - iqValue: true - 'format=iodd, CQ (pin4) in IO-Link, IQ (pin2) not available': - value: - iolink: - valid: true - value: - Valve_1: - value: true - Valve_2: - value: false - responses: - '204': - description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/processdata/getdata/value': - get: - tags: - - devices - summary: >- - Read the process data input values from the specified Device. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/processDataValue' - examples: - 'Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input': - value: - ioLink: - valid: true - value: - - 12 - - 22 - - 216 - iqValue: true - 'Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input': - value: - ioLink: - valid: true - value: - Distance: - value: 55 - Quality: - value: 12 - iqValue: true - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/processdata/setdata/value': - get: - tags: - - devices - summary: >- - Read the process data output values from the specified Device. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/processDataValue' - examples: - 'Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input': - value: - cqValue: false - 'Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input': - value: - iolink: - valid: true - value: - Valve_1: - value: true - Valve_2: - value: false - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/parameters': - get: - tags: - - devices - summary: >- - Read all available parameter indices and parameter names from the specific Device. - IODD support is required. - parameters: - - $ref: '#/components/parameters/deviceAlias' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceParametersGet' - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/parameters/{index}/value': - get: - tags: - - devices - summary: Read a parameter value from the specific Device with the given index. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/format' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' - examples: - format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } - 'format=iodd, simple type': - value: - value: 15.2 - 'format=iodd, complex type': - value: - Distance: - value: 15 - Quality: - value: 12 - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - post: - tags: - - devices - summary: Write a parameter value with the given index to the specified Device. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' - examples: - format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } - 'format=iodd, simple type': - value: - value: 15.2 - 'format=iodd, complex type': - value: - Distance: - value: 15 - Quality: - value: 12 - responses: - '204': - description: Successful operation - '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/parameters/{parameterName}/value': - get: - tags: - - devices - summary: >- - Read a parameter value from the specific Device by parameter name. - IODD support is required. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/format' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' - examples: - format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } - 'format=iodd, simple type': - value: - value: 15.2 - 'format=iodd, complex type': - value: - Distance: - value: 15 - Quality: - value: 12 - - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - post: - tags: - - devices - summary: >- - Write a parameter value by name to the specified Device.IODD support is required. - IODD support is required. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' - examples: - format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } - 'format=iodd, simple type': - value: - value: 15.2 - 'format=iodd, complex type': - value: - Distance: - value: 15 - Quality: - value: 12 - responses: - '204': - description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/parameters/{index}/subindices': - get: - tags: - - devices - summary: >- - Read all available parameter sub-indices and sub-parameter names from the specific Device. - IODD support is required. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceSubParametersGet' - '400': # code 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/parameters/{parameterName}/subindices': - get: - tags: - - devices - summary: >- - Read all available parameter sub-indices and sub-parameter names from the specific Device (referenced by parameter name). - IODD support is required. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceSubParametersGet' - '400': # code 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value': - get: - tags: - - devices - summary: >- - Read a parameter value from the specific Device with the given index and subindex. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/subindex' - - $ref: '#/components/parameters/format' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' - examples: - format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } - format=iodd: - value: - value: 15.2 - - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - post: - tags: - - devices - summary: >- - Write the parameter with the given index and subindex. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/subindex' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' - examples: - format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } - format=iodd: - value: - value: 15.2 - responses: - '204': - description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value': - get: - tags: - - devices - summary: >- - Read a parameter value from the specific Device by parameter name and subname. - IODD support is required. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/subParameterName' - - $ref: '#/components/parameters/format' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' - examples: - format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } - format=iodd: - value: - value: 15.2 - - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - post: - tags: - - devices - summary: >- - Write a parameter value to the specific Device by the parameter name and subname.IODD support is required. - IODD support is required. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/subParameterName' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' - examples: - format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } - format=iodd: - value: - value: 15.2 - responses: - '204': - description: Successful operation - '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/blockparameterization': - post: - tags: - - devices - summary: >- - Write or read one or more parameters using the block parameterization method. - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/deviceBlockParameterizationPost' - examples: - 'read, format=byteArray': - value: - direction: READ - parameters: - - identifier: - index: 15 - - identifier: - index: 65 - subIndex: 2 - 'read, format=iodd': - value: - direction: READ - parameters: - - identifier: - parameterName: Application_tag - - identifier: - parameterName: Distance - subParameterName: Quality - 'write, format=byteArray': - value: - direction: WRITE - parameters: - - identifier: - index: 123 - content: - - 15 - - 232 - - 22 - - identifier: - index: 233 - subIndex: 2 - content: - - 23 - - 149 - - 206 - 'write, format=iodd': - value: - direction: WRITE - parameters: - - identifier: - parameterName: Application_tag - content: - value: 'Level 2, row 3' - - identifier: - parameterName: Hysteresis - subParameterName: Channel_B - content: - value: 123 - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceBlockParameterizationPostParametersAnswer' - examples: - 'read, format=byteArray': - value: - - identifier: - index: 123 - result: - parameterExchangeResult: READ_SUCCESS - content: - value: - - 15 - - 232 - - 22 - - identifier: - index: 233 - subIndex: 2 - result: - parameterExchangeResult: READ_SUCCESS - content: - value: - - 23 - - 149 - - 206 - 'read, format=iodd': - value: - - identifier: - parameterName: Application_tag - result: - parameterExchangeResult: READ_SUCCESS - content: - value: 'Level 2, row 3' - - identifier: - parameterName: Hysteresis - subParameterName: Channel_B - result: - parameterExchangeResult: READ_SUCCESS - content: - value: 123 - 'read, format=byteArray with error': - value: - - identifier: - index: 123 - result: - parameterExchangeResult: ERROR - iolinkError: - code: 32802 - message: Service temporarily not available – Device control - - identifier: - index: 233 - result: - parameterExchangeResult: ERROR - iolinkError: - code: 32803 - message: Access denied - 'write, format=byteArray': - value: - - identifier: - index: 123 - result: - parameterExchangeResult: WRITE_SUCCESS - - identifier: - index: 233 - result: - parameterExchangeResult: WRITE_SUCCESS - 'write, format=iodd': - value: - - identifier: - parameterName: Application_tag - result: - parameterExchangeResult: WRITE_SUCCESS - - identifier: - parameterName: Hysteresis - subParameterName: Channel_B - result: - parameterExchangeResult: WRITE_SUCCESS - 'write, format=byteArray, with error': - value: - - address: - index: 123 - result: - parameterExchangeResult: ERROR - iolinkError: - code: 32816 - message: Parameter value out of range - - address: - index: 233 - result: - parameterExchangeResult: ERROR - iolinkError: - code: 32817 - message: Parameter value above limit - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/events': - get: - tags: - - devices - parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/eventTop' - - $ref: '#/components/parameters/eventBottom' - summary: Reading the EventLog filtered for a specific Device. - responses: - '200': - description: >- - Successful operation. In case of empty event log, an empty array is - returned. - content: - application/json: - schema: - $ref: '#/components/schemas/deviceEventsGet' - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' -components: - schemas: - cycleTime: - type: object - required: - - value - - unit - properties: - value: - type: number - unit: - type: string - enum: - - ms - event: - type: object - ipConfiguration: - type: string - enum: - - MANUAL - - DHCP - processData: - allOf: - - type: object - required: - - direction - - format - properties: - direction: - $ref: '#/components/schemas/content' - format: - $ref: '#/components/schemas/format' - oneOf: - - type: object - required: - - interval - properties: - interval: - $ref: '#/components/schemas/cycleTime' - - type: object - required: - - onChange - properties: - onChange: - type: boolean - format: - type: string - enum: - - byteArray - - iodd - default: byteArray - content: - type: string - enum: - - getData - - setData - - getSetData - default: getData - eventOrigin: - type: string - enum: - - ALL - - GATEWAY - - MASTERS - - PORTS - - DEVICES - default: ALL - eventMasterNumber: - type: number - minimum: 1 - eventPortNumber: - type: integer - minimum: 1 - eventdeviceAlias: - type: string - eventTop: - type: number - eventBottom: - type: number - identificationMasters: - type: array - items: - type: object - required: - - masterNumber - properties: - masterNumber: - type: number - minimum: 1 - serialNumber: - type: string - locationTag: - type: string - example: - - masterNumber: 1 - serialNumber: A12345678B - locationTag: slotNumber 5 - - masterNumber: 2 - serialNumber: 123A45B783 - locationTag: slotNumber 6 - identificationGet: - required: - - vendorName - - vendorId - - masterId - - masterType - type: object - properties: - vendorName: - type: string - vendorId: - type: integer - minimum: 1 - maximum: 65535 - masterId: - type: integer - minimum: 1 - maximum: 4294967295 - masterType: - type: string - enum: - - Unspecific - - Master acc. V1.0 - - Master acc. V1.1 - - Failsafe_Master - - Wireless_Master - serialNumber: - type: string - orderCode: - type: string - productName: - type: string - productId: - type: string - hardwareRevision: - type: string - firmwareRevision: - type: string - vendorUrl: - type: string - manualUrl: - type: string - productInstanceUri: - type: string - gsdUri: - type: string - applicationSpecificTag: - type: string - locationTag: - type: string - functionTag: - type: string - example: - vendorName: Vendor GmbH - vendorId: 26 - masterId: 42 - masterType: Wireless_Master - serialNumber: IOLWM123456 - orderCode: PROD123456 - productName: IO-Link Wireless Master - productId: PROD123456 - hardwareRevision: 3.2.1.444R - firmwareRevision: 3.2.1.888R - vendorUrl: 'http://www.io-link.com' - productInstanceUri: 'http://www.io-link.com/PROD123456/IOLWM123456' - gsdUri: 'https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml' - manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' - applicationSpecificTag: Fallback reader at the end of the belt - locationTag: Down under - functionTag: Code reading - identificationPost: - type: object - properties: - applicationSpecificTag: - type: string - locationTag: - type: string - functionTag: - type: string - gatewayCapabilitiesGet: - required: - - ioddSupported - - mqttSupported - type: object - properties: - ioddSupported: - type: boolean - mqttSupported: - type: boolean - example: - ioddSupported: true - mqttSupported: true - masterCapabilitiesGet: - required: - - numberOfPorts - - maxPowerSupply - type: object - properties: - numberOfPorts: - type: integer - minimum: 1 - maxPowerSupply: - type: object - required: - - value - - unit - properties: - value: - type: number - unit: - type: string - eventTime: - description: >- - Timestamp (format defined in DIN ISO 8601). This field can give an - absolute time or a relative time. Both formats are defined in DIN ISO - 8601. - type: string - eventSeverity: - description: >- - Indicates the severity of the message. The IO-Link EventType - NOTIFICATION maps to NOTICE, WARNING to WARNING and ERROR to ERROR. - type: string - enum: - - EMERGENCY - - ALERT - - CRITICAL - - ERROR - - WARNING - - NOTICE - - INFO - - DEBUG - eventOriginObject: - type: object - properties: - gateway: - type: string - masterNumber: - description: >- - This property is mandatory for IO-Link Master Events, IO-Link Port - Events and IO-Link Device Events. Should not be used for other log - entries. - type: integer - minimum: 1 - portNumber: - description: >- - This property is mandatory for IO-Link Port Events and IO-Link - Device Events. Should not be used for other log entries. - type: integer - minimum: 1 - deviceAlias: - description: >- - This property is mandatory for IO-Link Device Events. Should not be - used for other log entries. - type: string - eventObject: - type: object - properties: - code: - description: >- - IO-Link Port EventCode or IO-Link Device EventCode. This property is - mandatory for IO-Link Port Events or IO-Link Device Events. - type: number - mode: - description: >- - IO-Link Port Event Mode or IO-Link Device EventMode. This property - is mandatory for IO-Link Port Events or IO-Link Device Events. - type: string - enum: - - SINGLESHOT - - APPEARS - - DISAPPEARS - text: - type: string - gatewayEventsGet: - type: array - items: - type: object - required: - - time - - severity - - origin - - message - properties: - time: - $ref: '#/components/schemas/eventTime' - severity: - $ref: '#/components/schemas/eventSeverity' - origin: - $ref: '#/components/schemas/eventOriginObject' - message: - $ref: '#/components/schemas/eventObject' - blockParameterizationPostParametersRequest: - type: array - items: - type: object - required: - - identifier - properties: - identifier: - oneOf: - - type: object - required: - - index - properties: - index: - type: number - subIndex: - type: number - - type: object - required: - - parameterName - properties: - parameterName: - type: string - subParameterName: - type: string - content: - $ref: '#/components/schemas/deviceParameterValueGetPost' - deviceBlockParameterizationPostParametersAnswer: - type: array - items: - type: object - required: - - identifier - - result - properties: - identifier: - oneOf: - - type: object - required: - - index - properties: - index: - type: number - subIndex: - type: number - - type: object - required: - - parameterName - properties: - parameterName: - type: string - subParameterName: - type: string - result: - type: object - required: - - parameterExchangeResult - properties: - parameterExchangeResult: - type: string - enum: - - WRITE_SUCCESS - - READ_SUCCESS - - ERROR - content: - $ref: '#/components/schemas/deviceParameterValueGetPost' - iolinkError: - $ref: '#/components/schemas/iolinkErrorObject' - deviceEventsGet: - type: array - items: - type: object - required: - - time - - severity - - origin - - message - properties: - time: - $ref: '#/components/schemas/eventTime' - severity: - $ref: '#/components/schemas/eventSeverity' - origin: - required: - - master - - port - - deviceAlias - allOf: - - $ref: '#/components/schemas/eventOriginObject' - message: - required: - - code - - mode - allOf: - - $ref: '#/components/schemas/eventObject' - example: - - time: '2018-05-18T07:31:54.123Z' - severity: WARNING - origin: - master: 1 - port: 1 - deviceAlias: Temperature_sensor_1 - message: - code: 16912 - mode: APPEARED - text: Device temperature over-run – Clear source of heat - gatewayIdentificationGet: - type: object - required: - - macAddress - - vendorName - properties: - macAddress: - type: string - serialNumber: - type: string - orderCode: - type: string - productName: - type: string - productId: - type: string - hardwareRevision: - type: string - firmwareRevision: - type: string - vendorUrl: - type: string - manualUrl: - type: string - productInstanceUri: - type: string - applicationSpecificTag: - type: string - locationTag: - type: string - functionTag: - type: string - example: - macAddress: '00:02:72:CE:A6:49' - serialNumber: 'C134A746' - productId: 'TMP34Z' - vendorName: 'SensorCompany' - productName: 'FlowSensor34' - hardwareRevision: 'V3.45' - firmwareRevision: 'V1.30' - productInstanceUri: 'sensor.tmp.23.com' - gatewayConfigurationGetPost: - type: object - required: - - ethIpv4 - properties: - ethIpv4: - type: array - items: - type: object - required: - - ipConfiguration - properties: - ipConfiguration: - $ref: '#/components/schemas/ipConfiguration' - ipAddress: - type: string - subnetMask: - type: string - standardGateway: - type: string - example: - ethIpv4: - - ipConfiguration: MANUAL - ipAddress: 192.168.1.13 - subnetMask: 255.255.255.0 - standardGateway: 192.168.1.1 - mqttConfigurationGetPost: - type: object - required: - - clientMode - properties: - clientMode: - type: string - serverAddress: - type: string - username: - type: string - password: - type: string - lastWill: - type: object - required: - - topic - - message - - qos - - retain - properties: - topic: - type: string - message: - type: string - qos: - type: string - enum: - - 0_ONLY_ONCE - - 1_AT_LEAST_ONCE - - 2_EXACTLY_ONCE - retain: - type: boolean - keepAliveTime: - type: integer - mqttConfigurationTopic: - allOf: - - type: object - required: - - qos - - deviceAlias - properties: - qos: - type: string - enum: - - 0_ONLY_ONCE - - 1_AT_LEAST_ONCE - - 2_EXACTLY_ONCE - deviceAlias: - type: string - description: Unique deviceAlias. - - oneOf: - - type: object - required: - - event - - processData - properties: - event: - $ref: '#/components/schemas/event' - processData: - $ref: '#/components/schemas/processData' - mqttConfigurationTopicPost: - allOf: - - type: object - properties: - topicName: - type: string - - $ref: '#/components/schemas/mqttConfigurationTopic' - mqttConfigurationTopicGet: - allOf: - - type: object - required: - - topicId - properties: - topicId: - type: integer - - type: object - required: - - topicName - properties: - topicName: - type: string - - $ref: '#/components/schemas/mqttConfigurationTopic' - example: - topicId: 1 - topicName: PD input - qos: 1_AT_LEAST_ONCE - deviceAlias: DT35 - processData: - direction: getData - format: iodd - interval: - value: 10 - unit: ms - mqttConnectionStatusGet: - allOf: - - type: object - required: - - connectionStatus - - serverAddress - - upTime - properties: - connectionStatus: - type: string - enum: - - CLIENT_INACTIVE - - CONNECTION_ACCEPTED - - UNACCEPTABLE_PROTOCOL_VERSION - - IDENTIFIER_REJECTED - - SERVER_UNAVAILABLE - - BAD_USERNAME_OR_PASSWORD - - NOT_AUTHORIZED - serverAddress: - type: string - upTime: - type: integer - example: - connectionStatus: CONNECTION_ACCEPTED - serverAddress: 'http://broker-address.com' - upTime: 1050 - portStatusGet: - type: object - required: - - statusInfo - properties: - statusInfo: - type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - ioLinkRevision: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - '1.0' - - '1.1' - transmissionRate: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - COM1 - - COM2 - - COM3 - - WIRELESS - masterCycleTime: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: object - allOf: - - $ref: '#/components/schemas/cycleTime' - example: #TODO - wired: - statusInfo: DEVICE_ONLINE - ioLinkRevision: '1.1' - transmissionRate: COM2 - masterCycleTime: - value: 2.3 - unit: ms - wireless: - statusInfo: DEVICE_ONLINE - ioLinkRevision: '1.1' - transmissionRate: WIRELESS - masterCycleTime: - value: 5 - unit: ms - deviceCapabilitiesGet: - required: - - minimumCycleTime - - supportedProfiles - type: object - properties: - minimumCycleTime: - $ref: '#/components/schemas/cycleTime' - supportedProfiles: - type: array - items: - type: integer - deviceIdentificationGet: - required: - - vendorId - - deviceId - - ioLinkRevision - type: object - properties: - vendorId: - type: integer - minimum: 1 - maximum: 65535 - deviceId: - type: integer - minimum: 1 - maximum: 16777215 - ioLinkRevision: - type: string - enum: - - '1.0' - - '1.1' - vendorName: - description: Mandatory if the Device suports the ISDU. - type: string - vendorText: - type: string - vendorUrl: - type: string - productName: - description: Mandatory if the Device suports the ISDU. - type: string - productId: - type: string - productText: - type: string - serialNumber: - type: string - hardwareRevision: - type: string - firmwareRevision: - type: string - productInstanceUri: - type: string - ioddUri: - type: string - applicationSpecificTag: - type: string - locationTag: - type: string - functionTag: - type: string - example: - vendorId: 26 - deviceId: 8389226 - ioLinkRevision: '1.1' - vendorName: SICK AG - vendorText: Sensor Intelligence. - productName: SLG-2 - productId: SLG-2 - productText: The SLG-2 IO-Link device is a smart lightgrid for space sensitive applications. - serialNumber: Serial123456 - hardwareRevision: 3.2.1.444R - firmwareRevision: 3.2.1.888R - vendorUrl: 'http://www.sick.com' - productInstanceUri: 'http://www.sick.com/SLG-2/Serial123456' - ioddUri: 'https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1' - # 'https://ioddfinder.io-link.com/api/vendors/26/iodds/11541/files/zip/rated' - # 'https://ioddfinder.io-link.com/productvariants/search/32872' - applicationSpecificTag: Fallback light switch at the end of the belt - locationTag: Down under - functionTag: Check end of belt - portIdentificationPost: - type: object - properties: - applicationSpecificTag: - type: string - example: Fallback light switch at the end of the belt - locationTag: - type: string - example: Down under - functionTag: - type: string - example: Check start of belt - portCapabilitiesGet: - type: object - required: - - portType - properties: - portType: - type: string - enum: - - CLASS_A - - CLASS_B - - CLASS_A_WITH_PORT_POWER_OFF_ON - - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_B - - WIRELESS - slotType: - type: string - enum: - - SSLOT - - DSLOT - maxPowerSupply: - type: object - required: - - value - - unit - properties: - value: - type: number - unit: - type: string - - portConfigurationGet: - type: object - required: - - mode - - iqConfiguration - - deviceAlias - properties: - mode: - type: string - enum: - - DEACTIVATED - - IOLINK_MANUAL - - IOLINK_AUTOSTART - - DIGITAL_INPUT - - DIGITAL_OUTPUT - - validationAndBackup: - description: Used by the IO-Link Master just when portMode is IOLINK_MANUAL. - type: string - enum: - - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.0 - - TYPE_COMPATIBLE_DEVICE_V1.1 - - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - cycleTime: - description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL or - IOLINK_AUTOSTART. Default value is 0 ms which means as fast as - possible. - type: object - allOf: - - $ref: '#/components/schemas/cycleTime' - vendorId: - description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL and - validationAndBackup is not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 65535 - deviceId: - description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL and - validationAndBackup is not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 16777215 - iqConfiguration: - type: string - enum: - - NOT_SUPPORTED - - DIGITAL_INPUT - - DIGITAL_OUTPUT - deviceAlias: - type: string - example: - mode: IOLINK_MANUAL - validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - iqConfiguration: ANALOG_INPUT - cycleTime: - value: 2.3 - unit: ms - vendorId: 26 - deviceId: 333 - deviceAlias: Distance_sensor_1 - - masterConfiguration: - properties: - masterId: - type: integer - minimum: 1 - maximum: 29 - ahtEnable: - type: boolean - default: false - pairingTimeout: - type: object - required: - - value - - unit - properties: - value: - type: integer - minimum: 5 - maximum: 65535 - unit: - type: string - enum: - - s - blacklist: - type: object - required: - - all - properties: - 2402: - type: boolean - default: false - 2403: - type: boolean - default: false - 2404: - type: boolean - default: false - 2405: - type: boolean - default: false - 2406: - type: boolean - default: false - 2407: - type: boolean - default: false - 2408: - type: boolean - default: false - 2409: - type: boolean - default: false - 2410: - type: boolean - default: false - 2411: - type: boolean - default: false - 2412: - type: boolean - default: false - 2413: - type: boolean - default: false - 2414: - type: boolean - default: false - 2415: - type: boolean - default: false - 2416: - type: boolean - default: false - 2417: - type: boolean - default: false - 2418: - type: boolean - default: false - 2419: - type: boolean - default: false - 2420: - type: boolean - default: false - 2421: - type: boolean - default: false - 2422: - type: boolean - default: false - 2423: - type: boolean - default: false - 2424: - type: boolean - default: false - 2425: - type: boolean - default: false - 2426: - type: boolean - default: false - 2427: - type: boolean - default: false - 2428: - type: boolean - default: false - 2429: - type: boolean - default: false - 2430: - type: boolean - default: false - 2431: - type: boolean - default: false - 2432: - type: boolean - default: false - 2433: - type: boolean - default: false - 2434: - type: boolean - default: false - 2435: - type: boolean - default: false - 2436: - type: boolean - default: false - 2437: - type: boolean - default: false - 2438: - type: boolean - default: false - 2439: - type: boolean - default: false - 2440: - type: boolean - default: false - 2441: - type: boolean - default: false - 2442: - type: boolean - default: false - 2443: - type: boolean - default: false - 2444: - type: boolean - default: false - 2445: - type: boolean - default: false - 2446: - type: boolean - default: false - 2447: - type: boolean - default: false - 2448: - type: boolean - default: false - 2449: - type: boolean - default: false - 2450: - type: boolean - default: false - 2451: - type: boolean - default: false - 2452: - type: boolean - default: false - 2453: - type: boolean - default: false - 2454: - type: boolean - default: false - 2455: - type: boolean - default: false - 2456: - type: boolean - default: false - 2457: - type: boolean - default: false - 2458: - type: boolean - default: false - 2459: - type: boolean - default: false - 2460: - type: boolean - default: false - 2461: - type: boolean - default: false - 2462: - type: boolean - default: false - 2463: - type: boolean - default: false - 2464: - type: boolean - default: false - 2465: - type: boolean - default: false - 2466: - type: boolean - default: false - 2467: - type: boolean - default: false - 2468: - type: boolean - default: false - 2469: - type: boolean - default: false - 2470: - type: boolean - default: false - 2471: - type: boolean - default: false - 2472: - type: boolean - default: false - 2473: - type: boolean - default: false - 2474: - type: boolean - default: false - 2475: - type: boolean - default: false - 2476: - type: boolean - default: false - 2477: - type: boolean - default: false - 2478: - type: boolean - default: false - 2479: - type: boolean - default: false - example: - masterId: 5 - ahtEnable: false - pairingTimeout: - value: 25 - unit: s - blackList: - 2402: false - 2403: false - 2404: false - 2405: false - 2406: false - 2407: false - 2408: false - 2409: false - 2410: false - 2411: false - 2412: false - 2413: false - 2414: false - 2415: false - 2416: false - 2417: false - 2418: false - 2419: false - 2420: false - 2421: false - 2422: false - 2423: false - 2424: false - 2425: false - 2426: false - 2427: false - 2428: false - 2429: false - 2430: false - 2431: false - 2432: false - 2433: false - 2434: false - 2435: false - 2436: false - 2437: false - 2438: false - 2439: false - 2440: false - 2441: false - 2442: false - 2443: false - 2444: false - 2445: false - 2446: false - 2447: false - 2448: false - 2449: false - 2450: false - 2451: false - 2452: false - 2453: false - 2454: false - 2455: false - 2456: false - 2457: false - 2458: false - 2459: false - 2460: false - 2461: false - 2462: false - 2463: false - 2464: false - 2465: false - 2466: false - 2467: false - 2468: false - 2469: false - 2470: false - 2471: false - 2472: false - 2473: false - 2474: false - 2475: false - 2476: false - 2477: false - 2478: false - 2479: false - - tracksStatisticsChannel: - properties: - trackNumber: - type: integer - minimum: 1 - maximum: 5 - channelErrors: - type: object - required: - - all - properties: - 2402: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2403: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2404: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2405: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2406: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2407: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2408: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2409: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2410: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2411: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2412: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2413: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2414: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2415: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2416: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2417: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2418: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2419: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2420: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2421: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2422: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2423: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2424: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2425: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2426: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2427: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2428: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2429: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2430: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2431: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2432: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2433: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2434: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2435: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2436: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2437: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2438: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2439: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2440: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2441: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2442: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2443: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2444: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2445: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2446: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2447: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2448: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2449: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2450: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2451: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2452: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2453: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2454: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2455: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2456: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2457: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2458: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2459: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2460: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2461: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2462: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2463: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2464: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2465: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2466: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2467: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2468: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2469: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2470: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2471: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2472: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2473: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2474: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2475: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2476: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2477: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2478: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - 2479: - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - example: - trackNumber: 2 - channelErrors: - 2402: 0 - 2403: 0 - 2404: 0 - 2405: 0 - 2406: 0 - 2407: 3 - 2408: 1 - 2409: 5 - 2410: 9 - 2411: 6 - 2412: 4 - 2413: 1 - 2414: 0 - 2415: 0 - 2416: 0 - 2417: 0 - 2418: 0 - 2419: 0 - 2420: 0 - 2421: 0 - 2422: 0 - 2423: 0 - 2424: 0 - 2425: 0 - 2426: 0 - 2427: 0 - 2428: 0 - 2429: 0 - 2430: 0 - 2431: 0 - 2432: 0 - 2433: 0 - 2434: 0 - 2435: 3 - 2436: 2 - 2437: 5 - 2438: 2 - 2439: 0 - 2440: 0 - 2441: 0 - 2442: 0 - 2443: 0 - 2444: 0 - 2445: 0 - 2446: 0 - 2447: 0 - 2448: 0 - 2449: 0 - 2450: 0 - 2451: 0 - 2452: 0 - 2453: 0 - 2454: 0 - 2455: 0 - 2456: 0 - 2457: 0 - 2458: 0 - 2459: 0 - 2460: 0 - 2461: 0 - 2462: 0 - 2463: 0 - 2464: 0 - 2465: 0 - 2466: 0 - 2467: 0 - 2468: 0 - 2469: 0 - 2470: 0 - 2471: 0 - 2472: 0 - 2473: 0 - 2474: 0 - 2475: 0 - 2476: 0 - 2477: 0 - 2478: 0 - 2479: 0 - - trackConfiguration: - properties: - statusInfo: - type: string - enum: - - STOP - - CYCLIC - - ROAMING - - SERVICE - txPower: - type: integer - minimum: 1 - maximum: 31 - example: - trackMode: CYCLIC - - trackConfigurationPost: - properties: - statusInfo: - type: string - enum: - - STOP - - CYCLIC - - ROAMING - - SERVICE - txPower: - type: integer - minimum: 1 - maximum: 31 - example: - trackMode: CYCLIC - txPower: 20 - - wirelessPortConfigurationGet: - properties: - portMode: - type: string - enum: - - DEACTIVATED - - CYCLIC - - ROAMING - validationBackup: - type: string - enum: - - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.1 - - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - vendorId: - type: integer - minimum: 1 - maximum: 65535 - deviceId: - type: integer - minimum: 1 - maximum: 16777215 - portCycleTime: - type: object - required: - - value - - unit - properties: - value: - type: integer - minimum: 0 ## 0 means Freerunning - maximum: 315 ## Step size 5ms - unit: - type: string - enum: - - ms - trackNumber: - type: integer - minimum: 1 - maximum: 5 - slotNumber: - type: integer - minimum: 0 - maximum: 7 - slotType: - type: string - enum: - - "SSLOT" - - "DSLOT" - maxRetry: - type: integer - minimum: 2 - maximum: 31 - imaTime: - type: object - required: - - base - - multiplier - properties: - base: - type: string - enum: - - "1664us" - - "5ms" - - "1s" - - "1min" - multiplier: - type: integer - minimum: 1 - maximum: 255 - deviceTxPower: - type: integer - minimum: 0 - maximum: 31 - lowPowerDevice: - type: string - enum: - - "NORMAL" - - "LOW_POWER" - maxPDSegLength: - type: integer - minimum: 0 - maximum: 32 - uniqueId: - type: string - deviceAlias: - type: string - example: - portMode: CYCLIC - validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - vendorId: 888 - deviceId: 1 - portCycleTime: - value: 0 - unit: ms - trackNumber: 5 - slotNumber: 1 - slotType: SSLOT - maxRetry: 20 - imaTime: - base: 1664us - multiplier: 60 - deviceTxPower: 31 - lowPowerDevice: NORMAL - maxPDSegLength: 0 - uniqueId: 03:78:00:00:01:32:50:60:46 - deviceAlias: "Port_X01" - - wirelessPortConfigurationPost: - properties: - portMode: - type: string - enum: - - DEACTIVATED - - CYCLIC - - ROAMING - validationBackup: - type: string - enum: - - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.1 - - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - vendorId: - type: integer - minimum: 1 - maximum: 65535 - deviceId: - type: integer - minimum: 1 - maximum: 16777215 - portCycleTime: - type: object - required: - - value - - unit - properties: - value: - type: integer - minimum: 0 ## 0 means Freerunning - maximum: 315 ## Step size 5ms - unit: - type: string - enum: - - ms - trackNumber: - type: integer - minimum: 1 - maximum: 5 - slotNumber: - type: integer - minimum: 0 - maximum: 7 - slotType: - type: string - enum: - - "SSLOT" - - "DSLOT" - maxRetry: - type: integer - minimum: 2 - maximum: 31 - imaTime: - type: object - required: - - base - - multiplier - properties: - base: - type: string - enum: - - "1664us" - - "5ms" - - "1s" - - "1min" - multiplier: - type: integer - minimum: 1 - maximum: 255 - deviceTxPower: - type: integer - minimum: 0 - maximum: 31 - lowPowerDevice: - type: string - enum: - - "NORMAL" - - "LOW_POWER" - maxPDSegLength: - type: integer - minimum: 0 - maximum: 32 - uniqueId: - type: string - example: - portMode: CYCLIC - validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - vendorId: 888 - deviceId: 1 - portCycleTime: - value: 0 ##Or FreeRunning - unit: ms - trackNumber: 5 - slotNumber: 1 - slotType: SSLOT - maxRetry: 20 - imaTime: - base: 1664us - multiplier: 60 - deviceTxPower: 31 - lowPowerDevice: NORMAL - maxPDSegLength: 0 - uniqueId: 03:78:00:00:01:32:50:60:46 - - - portConfigurationPost: - type: object - properties: - mode: - type: string - enum: - - DEACTIVATED - - IOLINK_MANUAL - - IOLINK_AUTOSTART - - DIGITAL_INPUT - - DIGITAL_OUTPUT - validationAndBackup: - description: >- - Mandatory if portMode is IOLINK_MANUAL. Must not be used with - portMode other than IOL_MANUAL. - type: string - enum: - - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.0 - - TYPE_COMPATIBLE_DEVICE_V1.1 - - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - cycleTime: - description: >- - If no cycleTime configured with portMode IOLINK_MANUAL or - IOLINK_AUTOSTART, the possible fastest cycle time is used by the - IO-Link Master. - type: object - allOf: - - $ref: '#/components/schemas/cycleTime' - vendorId: - description: >- - Mandatory if portMode is IOLINK_MANUAL and validationAndBackup is - not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 65535 - deviceId: - description: >- - Mandatory if portMode is IOLINK_MANUAL and validationAndBackup is - not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 16777215 - iqConfiguration: - type: string - enum: - - NOT_SUPPORTED - - DIGITAL_INPUT - - DIGITAL_OUTPUT - - ANALOG_INPUT - - ANALOG_OUTPUT - - POWER_2 - deviceAlias: - type: string - dataStorageGetPost: - description: >- - In case the Data Storage is empty, the header object is empty and the - content is an empty string. - type: object - required: - - header - - content - properties: - header: - oneOf: - - type: object - required: - - vendorId - - deviceId - - ioLinkRevision - properties: - vendorId: - type: integer - minimum: 1 - maximum: 65535 - deviceId: - type: integer - minimum: 1 - maximum: 16777215 - ioLinkRevision: - type: string - enum: - - '1.0' - - '1.1' - - type: object - content: - description: Base64 coded DS data Ojects. Max size = 2KB*1.33. - type: string - processDataValue: - type: object - properties: - ioLink: - type: object - description: > - Process data in IO-Link mode - required: - - valid - - value - properties: - valid: - type: boolean - description: > - Process data validity - value: - oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' - description: > - Process data value - cqValue: - type: boolean - description: > - IO-Link cable CQ (pin4) level if it is used as digital input or - output (SIO mode). (false - 0 V, true - 24 V) - iqValue: - type: boolean - description: > - IO-Link cable IQ (pin2) level if it is used as digital input or output. - (false - 0 V, true - 24 V) - example: - 'format=byteArray, pin4=IO-Link, pin2=sio': - ioLink: - valid: true - value: - - 15 - - 123 - - 126 - - 236 - iqValue: true - 'format=iodd, pin4=IO-Link, pin2=deactivated/not available': - iolink: - valid: true - value: - Valve_1: - value: true - Valve_2: - value: false - 'format=byteArray/iodd, pin4=sio, pin2=deactivated/not available': - cqValue: false - deviceProcessDataValueGet: - type: object - description: > - The cqValue is present in the 'getData' object if the CQ (pin4) is configured as - digital input. The cqValue is present in the 'setData' object if the CQ (pin4) - is configured as digital output. The ioLink is present either in the - 'getData' or 'setData' or both objects if the CQ (pin4) is configured to IO-Link mode. - The iqValue is present in the 'getData' object if the IQ (pin2) is configured as - digital input. The iqValue is present in the 'setData' object if the IQ (pin4) - is configured as digital output. - properties: - getData: - $ref: '#/components/schemas/processDataValue' - setData: - $ref: '#/components/schemas/processDataValue' - deviceProcessDataValuePost: - $ref: '#/components/schemas/processDataValue' - deviceByteArrayTypeValue: - type: object - required: - - value - properties: - value: - type: array - description: The value in byteArray format. - items: - type: number - minimum: 0 - maximum: 255 - deviceSimpleTypeValue: - type: object - properties: - value: - oneOf: - - type: boolean - - type: string - - type: number - description: The value (with simple type) in iodd format. - required: - - value - deviceComplexTypeValue: - type: object - minProperties: 1 - maxProperties: 255 - description: The value (with complex type) in iodd format. - additionalProperties: - $ref: '#/components/schemas/deviceSimpleTypeValue' - deviceParametersGet: - type: array - items: - type: object - required: - - index - - parameterName - properties: - index: - type: number - parameterName: - type: string - example: - - index: 0 - parameterName: Direct_Parameter_Page_1 - - index: 1 - parameterName: Direct_Parameter_Page_2 - - index: 2 - parameterName: System_Command - deviceSubParametersGet: - type: array - items: - type: object - required: - - subIndex - - subParameterName - properties: - subIndex: - type: number - subParameterName: - type: string - example: - - subIndex: 1 - subParameterName: Master_command - - subIndex: 2 - subParameterName: Master_cycle_time - - subIndex: 3 - subParameterName: Minimum_cycle_time - deviceParameterValueGetPost: - oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' - deviceParameterSubindexValueGetPost: - oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - deviceBlockParameterizationPost: - type: object - required: - - direction - - parameters - properties: - direction: - type: string - enum: - - WRITE - - READ - parameters: - $ref: '#/components/schemas/blockParameterizationPostParametersRequest' - ioddIdentification: - type: object - required: - - vendorId - - deviceId - - version - - releaseDate - - ioLinkRevision - properties: - vendorId: - type: number - deviceId: - type: number - version: - type: string - releaseDate: - type: string - ioLinkRevision: - type: string - enum: - - '1.0' - - '1.1' - ioddFile: - description: The IODD XML file. - type: string - format: binary - ioddsGet: - type: array - items: - $ref: '#/components/schemas/ioddIdentification' - example: - - vendorId: 1234 - deviceId: 4567 - version: '4.3' - releaseDate: '2018-01-02' - ioLinkRevision: '1.1' - - vendorId: 4321 - deviceId: 8765 - version: '2.1' - releaseDate: '2015-01-02' - ioLinkRevision: '1.1' - iolinkErrorObject: - type: object - required: - - code - - message - properties: - code: - type: integer - message: - type: string - errorObject: - type: object - required: - - code - - message - properties: - code: - type: integer - message: - type: string - iolinkError: - $ref: '#/components/schemas/iolinkErrorObject' - - #--------------------------------------------------------------------------- - parameters: - vendorId: - name: vendorId - in: query - description: IO-Link VendorID - required: false - schema: - type: integer - deviceId: - name: deviceId - in: query - description: IO-Link DeviceID - required: false - schema: - type: integer - revision: - name: revision - in: query - description: IO-Link Revision - required: false - schema: - type: string - enum: - - '1.0' - - '1.1' - mqttTopicId: - name: topicId - in: path - description: >- - ID of a configured MQTT topic. This the position of the topic in the - topics list. - required: true - schema: - type: integer - masterNumber: - name: masterNumber - in: path - description: Master identification number starting with 1 - schema: - type: integer - minimum: 1 - required: true - trackNumber: - name: trackNumber - in: path - description: trackNumber identification number starting with 1 - schema: - type: integer - minimum: 1 - required: true - portNumber: - name: portNumber - in: path - description: Port identification number starting with 1 - schema: - type: integer - minimum: 1 - required: true - deviceAlias: - name: deviceAlias - in: path - description: >- - Device Name configured with the port/configuration URL. Default Device - Name is 'masterNportM' where 'N' means the masterNumber and 'M' means - the portNumber. - schema: - type: string - required: true - eventOrigin: - name: origin - in: query - description: The event source to filter - schema: - $ref: '#/components/schemas/eventOrigin' - eventMasterNumber: - name: masterNumber - in: query - description: masterNumber is only applicable with origin=MASTERS and origin=PORTS - schema: - $ref: '#/components/schemas/eventMasterNumber' - eventPortNumber: - name: portNumber - in: query - description: portnumber is only applicable with origin=PORTS - schema: - $ref: '#/components/schemas/eventPortNumber' - eventdeviceAlias: - name: deviceAlias - in: query - description: deviceAlias is only applicable with origin=DEVICES - schema: - $ref: '#/components/schemas/eventdeviceAlias' - eventTop: - name: top - in: query - description: >- - Delivers the oldest n events of the event buffer. top is mutually - exclusive to bottom. - schema: - $ref: '#/components/schemas/eventTop' - eventBottom: - name: bottom - in: query - description: >- - Delivers the youngest n events of the event buffer. bottom is mutually - exclusive to top. - schema: - $ref: '#/components/schemas/eventBottom' - format: - name: format - in: query - description: Value format in response document - schema: - $ref: '#/components/schemas/format' - content: - name: content - in: query - description: Process data element(s) in respose document - schema: - $ref: '#/components/schemas/content' - index: - name: index - in: path - description: Index of ISDU variable - schema: - type: integer - required: true - subindex: - name: subindex - in: path - description: Subindex of ISDU variable with the given index - schema: - type: integer - required: true - parameterName: - name: parameterName - in: path - description: >- - Parameter name. Comes from the IODD but might be reformatted according - to the JSON mapping specification. - schema: - type: string - required: true - subParameterName: - name: subParameterName - in: path - description: >- - Sub-parameter name. Comes from the IODD but might be reformatted - according to the JSON mapping specification. - schema: - type: string - required: true - responses: - HTTP_400: - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 104: - description: Fieldbus controller or another gateway protocol has claimed priority - value: - code: 104 - message: Action locked by another client - 201: - description: Error while parsing the incoming JSON object - value: - code: 201 - message: JSON parsing failed - 202: - description: Error while parsing a specific JSON value, e.g. a malformed IP address - value: - code: 202 - message: JSON data value invalid - 203: - description: e.g. string instead of number - value: - code: 203 - message: JSON data type invalid - 204: - value: - code: 204 - message: Enumeration value unknown - 205: - description: Exceeds the minimum or maximum value - value: - code: 205 - message: JSON data value out of range - 206: - description: An array or string was accessed exceeding its maximum length - value: - code: 206 - message: JSON data value out of bounds - 208: - value: - code: 208 - message: POST or PUT request without content - 305: - value: - code: 305 - message: Query parameter name invalid - 306: - value: - code: 306 - message: Query parameter value invalid - 307: - value: - code: 307 - message: Port is not configured to IO-Link - 311: - value: - code: 311 - message: IO-Link parameter access error - 401: - value: - code: 401 - message: Data storage mismatch - 501: - value: - code: 501 - message: I/Q is not configured as DIGITAL_OUTPUT - 502: - value: - code: 502 - message: C/Q is not configured as DIGITAL_OUTPUT - 503: - value: - code: 503 - message: IO-Link Device has no output process data - 601: - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - 603: - value: - code: 603 - message: IODD upload failed. IODD XML invalid - 604: - value: - code: 604 - message: IODD upload failed. CRC error - 605: - value: - code: 605 - message: IODD upload failed. Parsing error - 701: - value: - code: 701 - message: Data set incomplete - 702: - description: whole data set is rejected - value: - code: 702 - message: Data set not applicable - 703: - description: whole data set is rejected - value: - code: 703 - message: Data set combination incompatible - HTTP_401: - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - description: due to user management restrictions - value: - code: 140 - message: Invalid credentials - HTTP_403: - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 150: - description: due to user management restrictions - value: - code: 150 - message: Permission denied - HTTP_404: - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 103: - value: - code: 103 - message: Operation not supported - 301: - description: e.g. wrong URL - value: - code: 301 - message: Resource not found - 302: - value: - code: 302 - message: masterNumber not found - 303: - value: - code: 303 - message: portNumber not found - 304: - value: - code: 304 - message: deviceAlias not found - 308: - description: e.g. not connected or communication error - value: - code: 308 - message: IO-Link Device is not accessible - 309: - value: - code: 309 - message: IO-Link Parameter not found - 310: - value: - code: 310 - message: IO-Link parameter access not supported by the Device - 312: - value: - code: 312 - message: IO-Link parameter name is not unique - HTTP_500: - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 101: - value: - code: 101 - message: Internal server error - 102: - value: - code: 102 - message: Internal communication error - 602: - value: - code: 602 - message: IODD upload failed. Not enough memory - HTTP_501: - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 105: - value: - code: 105 - message: IODD feature not supported - 106: - value: - code: 106 - message: MQTT feature not supported - HTTP_503: - description: Service unavailable - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - 107: - value: - code: 107 - message: 'Service temporarily unavailable' - - \ No newline at end of file From 20bea8f8eb985d3bd6d9e3dffeaa2fad3704b416 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 28 Mar 2022 12:45:17 +0200 Subject: [PATCH 004/279] Add clear events request --- JSON_for_IO-Link.yaml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4c7b3f1..2d93735 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -506,6 +506,26 @@ paths: $ref: '#/components/responses/HTTP_403' '500': $ref: '#/components/responses/HTTP_500' + delete: + tags: + - gateway + summary: Delete events of Gateway, Masters, Ports and Devices from EventLog according to filter query. + parameters: + - $ref: '#/components/parameters/eventOrigin' + - $ref: '#/components/parameters/eventMasterNumber' + - $ref: '#/components/parameters/eventPortNumber' + - $ref: '#/components/parameters/eventdeviceAlias' + - $ref: '#/components/parameters/eventTop' + - $ref: '#/components/parameters/eventBottom' + responses: + '200': + description: Successful operation + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' + '403': + $ref: '#/components/responses/HTTP_403' + '500': + $ref: '#/components/responses/HTTP_500' '/mqtt/configuration': get: @@ -5035,7 +5055,7 @@ components: name: top in: query description: >- - Delivers the oldest n events of the event buffer. top is mutually + Delivers or removes the oldest n events of the event buffer. top is mutually exclusive to bottom. schema: $ref: '#/components/schemas/eventTop' @@ -5043,7 +5063,7 @@ components: name: bottom in: query description: >- - Delivers the youngest n events of the event buffer. bottom is mutually + Delivers or removes the youngest n events of the event buffer. bottom is mutually exclusive to top. schema: $ref: '#/components/schemas/eventBottom' From e6d25600cff15e7ad3ab66236e04fc48ca44e0e6 Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 13 Jul 2022 15:51:49 +0200 Subject: [PATCH 005/279] Add publish parameters (ISDU) feature to mqtt --- JSON_for_IO-Link.yaml | 116 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 75da8af..8ce3345 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -642,6 +642,25 @@ paths: direction: getSetData format: iodd onChange: true + - topicId: 4 + topicName: DT35_CycleTime + qos: 0_ONLY_ONCE + deviceAlias: DT35 + parameter: + parametereName: Direct_Parameters_1 + subParameterName: Min_Cycle_Time + format: iodd + onChange: true + - topicId: 5 + topicName: deviceTemperature + qos: 0_ONLY_ONCE + deviceAlias: master1port2 + parameter: + index: 153 + format: byteArray + interval: + value: 10 + unit: ms '403': $ref: '#/components/responses/HTTP_403' '404': @@ -676,6 +695,27 @@ paths: qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 event: {} + Parameter (Index): + value: + qos: 0_ONLY_ONCE + deviceAlias: master1port1 + parameter: + index: 86 + format: byteArray + interval: + value: 10 + unit: ms + Parameter (ParameterName): + value: + topicName: deviceTemperature + qos: 0_ONLY_ONCE + deviceAlias: AHM36A + parameter: + parameterName: Temperature1 + format: IODD + interval: + value: 1000 + unit: ms responses: '200': description: Successful operation returning the topic ID @@ -727,6 +767,27 @@ paths: qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 event: {} + Parameter (Index): + value: + qos: 0_ONLY_ONCE + deviceAlias: master1port1 + parameter: + index: 86 + format: byteArray + interval: + value: 10 + unit: ms + Parameter (ParameterName): + value: + topicName: deviceTemperature + qos: 0_ONLY_ONCE + deviceAlias: AHM36A + parameter: + parameterName: Temperature1 + format: IODD + interval: + value: 1000 + unit: ms '403': $ref: '#/components/responses/HTTP_403' '404': @@ -2821,10 +2882,13 @@ components: properties: value: type: number + example: + 10 unit: type: string enum: - ms + default: ms event: type: object ipConfiguration: @@ -2869,6 +2933,55 @@ components: - setData - getSetData default: getData + mqttParameter: + type: object + required: + - parameter + - format + properties: + parameter: + $ref: '#/components/schemas/parameter' + format: + $ref: '#/components/schemas/format' + oneOf: + - type: object + required: + - interval + properties: + interval: + $ref: '#/components/schemas/cycleTime' + - type: object + required: + - onChange + properties: + onChange: + type: boolean + parameter: + oneOf: + - type: object + required: + - parameterName + properties: + parameterName: + type: string + example: + Direct_Parameters_1 + subParameterName: + type: string + example: + Min_Cycle_Time + - type: object + required: + - index + properties: + index: + type: integer + example: + 233 + subindex: + type: integer + example: + 2 eventOrigin: type: string enum: @@ -3331,11 +3444,14 @@ components: required: - event - processData + - parameter properties: event: $ref: '#/components/schemas/event' processData: $ref: '#/components/schemas/processData' + parameter: + $ref: '#/components/schemas/mqttParameter' mqttConfigurationTopicPost: allOf: - type: object From 190b18d61bf3f7e084bdb6c8f821cade22f68cba Mon Sep 17 00:00:00 2001 From: Benjamin Vervoort Date: Thu, 28 Jul 2022 09:21:41 +0200 Subject: [PATCH 006/279] update ports configuration --- JSON_for_IO-Link.yaml | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 75da8af..0e2edce 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -11,7 +11,7 @@ info: version: 1.1.0 title: Swagger IO-Link Master contact: - email: benjamin.vervoort@balluff.de + email: info@io-link.com license: name: tbd url: 'http://www.io-link.com' @@ -1718,9 +1718,7 @@ paths: content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/wirelessPortConfigurationGet' - - $ref: '#/components/schemas/portConfigurationGet' + $ref: '#/components/schemas/portConfigurationGet' example: mode: IOLINK_MANUAL validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 @@ -1748,10 +1746,8 @@ paths: required: true content: application/json: - schema: - oneOf: - - $ref: '#/components/schemas/wirelessPortConfigurationPost' - - $ref: '#/components/schemas/portConfigurationPost' + schema: + $ref: '#/components/schemas/portConfigurationPost' examples: Complete configuration: value: @@ -3593,9 +3589,8 @@ components: - IOLINK_AUTOSTART - DIGITAL_INPUT - DIGITAL_OUTPUT - validationAndBackup: - description: Used by the IO-Link Master just when portMode is IOLINK_MANUAL. + description: required if portMode is IOLINK_MANUAL. type: string enum: - NO_DEVICE_CHECK @@ -3605,22 +3600,24 @@ components: - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE cycleTime: description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL or + required if portMode is IOLINK_MANUAL or IOLINK_AUTOSTART. Default value is 0 ms which means as fast as - possible. + possible. Note: If the applied value for cycle time cannot exactly be mapped, + the port shall use the next possible higher value. If the cycle time is greater + than 132.8 ms the error 702 shall be returned. type: object allOf: - $ref: '#/components/schemas/cycleTime' vendorId: description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL and + required if portMode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. type: integer minimum: 1 maximum: 65535 deviceId: description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL and + required if portMode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. type: integer minimum: 1 @@ -4645,8 +4642,9 @@ components: maxPDSegLength: 0 uniqueId: 03:78:00:00:01:32:50:60:46 - portConfigurationPost: + description: "Note: At least one of the mode, iqConfiguration, + deviceAlias properties shall be included to the POST request" type: object properties: mode: @@ -4659,8 +4657,7 @@ components: - DIGITAL_OUTPUT validationAndBackup: description: >- - Mandatory if the port's mode is IOLINK_MANUAL. Must not be used with - mode other than IOL_MANUAL. + required if the port's mode is IOLINK_MANUAL. type: string enum: - NO_DEVICE_CHECK @@ -4672,20 +4669,23 @@ components: description: >- If no cycleTime configured with mode IOLINK_MANUAL or IOLINK_AUTOSTART, the possible fastest cycle time is used by the - IO-Link Master. + IO-Link Master. If the applied value for cycle time cannot exactly be + mapped, the port shall use the next possible higher value. + If the cycle time is greater than 132.8 ms the error 702 shall + be returned. type: object allOf: - $ref: '#/components/schemas/cycleTime' vendorId: description: >- - Mandatory if the port's mode is IOLINK_MANUAL and validationAndBackup is + required if the port's mode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. type: integer minimum: 1 maximum: 65535 deviceId: description: >- - Mandatory if the port's mode is IOLINK_MANUAL and validationAndBackup is + required if the port's mode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. type: integer minimum: 1 @@ -4701,6 +4701,7 @@ components: - POWER_2 deviceAlias: type: string + dataStorageGetPost: description: >- In case the Data Storage is empty, the header object is empty and the From 5cc51931a208a7b9845dbc96210febb8ab4c4403 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Mon, 1 Aug 2022 16:47:06 +0200 Subject: [PATCH 007/279] Add files via upload First AsyncApi specification for MQTT topics. --- MQTT_for_IO-Link.yaml | 939 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 939 insertions(+) create mode 100644 MQTT_for_IO-Link.yaml diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml new file mode 100644 index 0000000..72eec39 --- /dev/null +++ b/MQTT_for_IO-Link.yaml @@ -0,0 +1,939 @@ +asyncapi: 2.3.0 +info: + title: MQTT for IO-Link Topics + version: 0.0.1 + description: > + This is the _AsyncAPI_ specification of MQTT topics by the IO-Link consortium. + termsOfService: 'https://www.io-link.com' + contact: + name: Markus Rentschler + email: markus.rentschler@murrelektronik.de +servers: + broker: + url: 'api.iolink.com:{port}' + protocol: mqtt + description: central mqtt Broker + security: + - user-password: [] + variables: + port: + enum: + - '1883' + - '8883' + default: '1883' +channels: + '{originatorId}/connection': + description: >- + Topic that publishes online/offline state of the gateway, send at + startup/"birth" and as "lastwill" + parameters: + originatorId: + description: >- + shall be the unique identifier of the originator and shall correspond + to the client id inside the MQTT message. It can be the ProductURI, + DNS name, IP address or MAC address of the device hosting the MQTT + publisher. By default the Hostname shall be used. + schema: + type: string + example: iomaster_nr1 + deviceId: + description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + schema: + type: string + example: port1 + subscribe: + message: + $ref: '#/components/messages/connection' + bindings: + mqtt: + qos: 1 + retain: true + '{originatorId}/asset': + description: >- + publishes asset (e.g. gateway) nameplate information, send at startup or + onChange + parameters: + originatorId: + description: >- + shall be the unique identifier of the originator and shall correspond + to the client id inside the MQTT message. It can be the ProductURI, + DNS name, IP address or MAC address of the device hosting the MQTT + publisher. By default the Hostname shall be used. + schema: + type: string + example: iomaster_nr1 + subscribe: + message: + $ref: '#/components/messages/nameplate' + bindings: + mqtt: + qos: 1 + retain: true + '{originatorId}/health': + description: publishes gateway health state + parameters: + originatorId: + description: >- + shall be the unique identifier of the originator and shall correspond + to the client id inside the MQTT message. It can be the ProductURI, + DNS name, IP address or MAC address of the device hosting the MQTT + publisher. By default the Hostname shall be used. + schema: + type: string + example: iomaster_nr1 + subscribe: + message: + $ref: '#/components/messages/gatewayhealth' + bindings: + mqtt: + qos: 1 + retain: true + '{originatorId}/{deviceId}(/event)/asset': + description: >- + publishes asset (e.g. device) nameplate information, send at connection + startup (new connection) + parameters: + originatorId: + description: >- + shall be the unique identifier of the originator and shall correspond + to the client id inside the MQTT message. It can be the ProductURI, + DNS name, IP address or MAC address of the device hosting the MQTT + publisher. By default the Hostname shall be used. + schema: + type: string + example: iomaster_nr1 + deviceId: + description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + schema: + type: string + example: port1 + subscribe: + message: + $ref: '#/components/messages/nameplate_iolink' + bindings: + mqtt: + qos: 1 + retain: true + '{originatorId}/{deviceId}(/event)/status': + description: 'publishes the port status, send at startup/onChange' + parameters: + originatorId: + description: >- + shall be the unique identifier of the originator and shall correspond + to the client id inside the MQTT message. It can be the ProductURI, + DNS name, IP address or MAC address of the device hosting the MQTT + publisher. By default the Hostname shall be used. + schema: + type: string + example: iomaster_nr1 + deviceId: + description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + schema: + type: string + example: port1 + subscribe: + message: + $ref: '#/components/messages/portstatus' + bindings: + mqtt: + qos: 1 + retain: true + '{originatorId}/{deviceId}(/event)/health': + description: health data of the device + parameters: + originatorId: + description: >- + shall be the unique identifier of the originator and shall correspond + to the client id inside the MQTT message. It can be the ProductURI, + DNS name, IP address or MAC address of the device hosting the MQTT + publisher. By default the Hostname shall be used. + schema: + type: string + example: iomaster_nr1 + deviceId: + description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + schema: + type: string + example: port1 + subscribe: + message: + $ref: '#/components/messages/devicehealth' + bindings: + mqtt: + qos: 1 + retain: true + '{originatorId}/{deviceId}/processData': + parameters: + originatorId: + description: >- + shall be the unique identifier of the originator and shall correspond + to the client id inside the MQTT message. It can be the ProductURI, + DNS name, IP address or MAC address of the device hosting the MQTT + publisher. By default the Hostname shall be used. + schema: + type: string + example: iomaster_nr1 + deviceId: + description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + schema: + type: string + example: port1 + subscribe: + message: + oneOf: + - $ref: '#/components/messages/processdata_IOLink' + - $ref: '#/components/messages/processdata_Misc' + bindings: + mqtt: + qos: 1 + retain: true + '{originatorId}/{deviceId}/events': + description: >- + eventlog of the io link device, see + "iolink/v1/devices/{deviceAlias}/events" + parameters: + originatorId: + description: >- + shall be the unique identifier of the originator and shall correspond + to the client id inside the MQTT message. It can be the ProductURI, + DNS name, IP address or MAC address of the device hosting the MQTT + publisher. By default the Hostname shall be used. + schema: + type: string + example: iomaster_nr1 + deviceId: + description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + schema: + type: string + example: port1 + subscribe: + message: + $ref: '#/components/messages/deviceEvents' + bindings: + mqtt: + qos: 1 + retain: true +components: + messages: + connection: + summary: onlinestate of the gateway + description: This will be issued as birth and lastwill message. + tags: + - name: gateway + payload: + type: string + enum: + - online + - offline + example: online + nameplate: + summary: contains the nameplate information of a gateway. + tags: + - name: gateway + payload: + type: object + properties: + vendorName: + type: string + default: Murrelektronik" + vendorId: + type: number + default: 303 + vendorUrl: + type: string + format: url + default: 'http://www.murrelektronik.com' + productName: + type: string + example: Impact67 PN DIO12 IOL4 IRT 7/8" 5pin + orderCode: + type: string + example: 55132 + serialNumber: + type: string + example: 1234567 + productUri: + type: string + format: url + description: >- + Unique product identifier and link to product catalogue + (https://product.murrelektronik.com/{productCode}/{orderCode}/{serialNumber}) + example: 'https://product.murrelektronik.com/XYZ/512345/01234567' + hardwareRevision: + type: string + example: 7 + softwareRevision: + type: string + example: 1.2.3 + deviceClass: + type: string + example: PN Profinet + nameOfStation: + type: string + description: Profinet station name + example: profinetstation + sysName: + type: string + description: Systemname + example: Device_123 + sysContact: + type: string + description: contact person (eMail) for this device or system + example: service@murrelektronik.de + sysLocation: + type: string + description: Location description of the device or system + example: Factory ABC Hall 123 + ethIpv4: + $ref: '#/components/schemas/networkConfiguration' + gatewayhealth: + summary: diagnostic health information of the gateway. + tags: + - name: gateway + payload: + type: object + required: + - health + - healthState + properties: + error: + type: string + description: Error message describing the error ocurred. + health: + $ref: '#/components/schemas/namurHealth' + healthState: + $ref: '#/components/schemas/namurHealthState' + example: + health: NORMAL_0 + healthState: 100 + portstatus: + summary: contains the status of the port. + tags: + - name: gateway + payload: + type: object + required: + - portNumber + - maxPowerSupply + - portType + - mode + - deviceAlias + - iqConfiguration + properties: + portNumber: + type: number + example: 1 + maxPowerSupply: + type: object + required: + - value + - unit + properties: + value: + type: number + example: 0.3 + unit: + type: string + example: A + portType: + type: string + enum: + - CLASS_A + - CLASS_B + - CLASS_A_WITH_PORT_POWER_OFF_ON + - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS + - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS + - FAILSAFE_PORT_B + - WIRELESS_MASTER + example: CLASS_A + mode: + type: string + enum: + - DEACTIVATED + - IOLINK_MANUAL + - IOLINK_AUTOSTART + - DIGITAL_INPUT + - DIGITAL_OUTPUT + example: DEACTIVATED + deviceAlias: + type: string + example: master1port1 + iqConfiguration: + type: string + enum: + - NOT_SUPPORTED + - DIGITAL_INPUT + - DIGITAL_OUTPUT + example: DIGITAL_INPUT + validationAndBackup: + type: string + description: Used by the IO-Link Master just when portMode is IOLINK_MANUAL. + enum: + - NO_DEVICE_CHECK + - TYPE_COMPATIBLE_DEVICE_V1.0 + - TYPE_COMPATIBLE_DEVICE_V1.1 + - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE + example: NO_DEVICE_CHECK + cycleTime: + description: >- + Used by the IO-Link Master just when portMode is IOLINK_MANUAL or + IOLINK_AUTOSTART. Default value is 0 ms which means as fast as + possible + type: object + required: + - value + - unit + properties: + value: + type: number + example: 2.3 + unit: + type: string + enum: + - ms + example: ms + vendorId: + type: integer + minimum: 1 + maximum: 65535 + description: >- + Used by the IO-Link Master just when portMode is IOLINK_MANUAL and + validationAndBackup is not NO_DEVICE_CHECK. + example: 1234 + deviceId: + type: integer + minimum: 1 + maximum: 16777215 + description: >- + Used by the IO-Link Master just when portMode is IOLINK_MANUAL and + validationAndBackup is not NO_DEVICE_CHECK. + example: 15464 + nameplate_iolink: + summary: contains the nameplate information of an IO-Link device. + description: | + This will be issued when an IO-Link device was detected. + tags: + - name: device + payload: + type: object + properties: + vendorName: + type: string + default: Murrelektronik + vendorId: + type: number + default: 303 + vendorUrl: + type: string + format: url + default: 'http://www.murrelektronik.com' + productName: + type: string + orderCode: + type: string + serialNumber: + type: string + productUri: + type: string + format: url + description: >- + Unique identifier and link to product catalogue + (https://product.murrelektronik.com/{productCode}/{orderCode}/{serialNumber}) + hardwareRevision: + type: string + firmwareRevision: + type: string + example: + vendorName: Murrelektronik + vendorId: 303 + vendorUrl: 'http://www.murrelektronik.com/' + orderCode: 55132 + productName: Impact67 PN DIO12 IOL4 IRT 7/8" 5pin + serialNumber: '123456789' + hardwareRevision: 1.0.0 + softwareRevision: 1.0.1 + devicehealth: + summary: contains the health information of the device. + tags: + - name: device + payload: + required: + - health + - healthState + type: object + properties: + health: + $ref: '#/components/schemas/namurHealth' + healthState: + $ref: '#/components/schemas/namurHealthState' + errors: + type: object + properties: + iolErrors: + type: object + properties: + isIolWirebreak: + type: boolean + isIolShortCircuit: + type: boolean + isProcessDataInvalid: + type: boolean + isDataStorageFaulty: + type: boolean + isValidationFailure: + type: boolean + validationError: + type: object + properties: + isWrongCycleTime: + type: boolean + isWrongIolinkRevision: + type: boolean + isWrongPdInLength: + type: boolean + isWrongPdOutLength: + type: boolean + isWrongVendorId: + type: boolean + isWrongDeviceId: + type: boolean + isWrongSerialNumber: + type: boolean + isShortCircuitPin4: + type: boolean + isShortCircuitPin2: + type: boolean + isOverloadStatusPin4: + type: boolean + isOverloadStatusPin2: + type: boolean + isActuatorWarningPin4: + type: boolean + isActuatorWarningPin2: + type: boolean + deviceEvents: + summary: events + tags: + - name: device + payload: + $ref: '#/components/schemas/deviceEvents' + processdata_IOLink: + summary: >- + Read the process data values (input and output) from the specified + Device + tags: + - name: device + payload: + $ref: '#/components/schemas/deviceProcessDataValueIOLINK' + processdata_Misc: + summary: >- + Read the process data values (input and output) from the specified + Device. + tags: + - name: device + payload: + $ref: '#/components/schemas/deviceProcessDataValueMisc' + schemas: + eventOrigin: + type: string + enum: + - ALL + - GATEWAY + - MASTERS + - PORTS + - DEVICES + default: ALL + cycleTime: + type: object + required: + - value + - unit + properties: + value: + type: number + unit: + type: string + enum: + - ms + processData: + allOf: + - type: object + required: + - direction + properties: + direction: + $ref: '#/components/schemas/content' + oneOf: + - type: object + required: + - interval + properties: + interval: + $ref: '#/components/schemas/cycleTime' + - type: object + required: + - onChange + properties: + onChange: + type: boolean + content: + type: string + enum: + - getData + - setData + - getSetData + default: getData + mqttConfiguration: + type: object + required: + - clientMode + properties: + clientMode: + type: string + serverAddress: + type: string + username: + type: string + password: + type: string + lastWill: + type: object + required: + - topic + - message + - qos + - retain + properties: + topic: + type: string + message: + type: string + qos: + type: string + enum: + - 0_ONLY_ONCE + - 1_AT_LEAST_ONCE + - 2_EXACTLY_ONCE + retain: + type: boolean + keepAliveTime: + type: integer + mqttConnectionStatus: + allOf: + - type: object + required: + - connectionStatus + - serverAddress + - upTime + properties: + connectionStatus: + type: string + enum: + - CLIENT_INACTIVE + - CONNECTION_ACCEPTED + - UNACCEPTABLE_PROTOCOL_VERSION + - IDENTIFIER_REJECTED + - SERVER_UNAVAILABLE + - BAD_USERNAME_OR_PASSWORD + - NOT_AUTHORIZED + serverAddress: + type: string + upTime: + type: integer + example: + connectionStatus: CONNECTION_ACCEPTED + serverAddress: 'http://broker-address.com' + upTime: 1050 + deviceProcessDataValueIOLINK: + type: object + description: > + The cqValue is present in the 'getData' object if the CQ (pin4) is + configured as digital input. The cqValue is present in the 'setData' + object if the CQ (pin4) is configured as digital output. The ioLink is + present either in the 'getData' or 'setData' or both objects if the CQ + (pin4) is configured to IO-Link mode. The iqValue is present in the + 'getData' object if the IQ (pin2) is configured as digital input. The + iqValue is present in the 'setData' object if the IQ (pin4) is + configured as digital output. + properties: + getData: + $ref: '#/components/schemas/processDataValue' + setData: + $ref: '#/components/schemas/processDataValue' + processDataValue: + type: object + properties: + ioLink: + type: object + description: | + Process data in IO-Link mode + required: + - valid + - value + properties: + valid: + type: boolean + description: | + Process data validity + value: + anyOf: + - $ref: '#/components/schemas/deviceByteArrayTypeValue' + - $ref: '#/components/schemas/deviceSimpleTypeValue' + description: | + Process data value + cqValue: + type: boolean + description: > + IO-Link cable CQ (pin4) level if it is used as digital input or + output (SIO mode). (false - 0 V, true - 24 V) + example: false + iqValue: + type: boolean + description: > + IO-Link cable IQ (pin2) level if it is used as digital input or + output. (false - 0 V, true - 24 V) + example: false + deviceProcessDataValueMisc: + type: object + description: | + "Messageblock for misc. messages (example)". + properties: + getData: + type: string + example: daten + setData: + type: string + example: daten + deviceByteArrayTypeValue: + type: object + required: + - value + properties: + value: + type: array + description: The value in byteArray format. + items: + type: number + minimum: 0 + maximum: 255 + example: + - 12 + - 22 + - 216 + deviceSimpleTypeValue: + type: object + properties: + value: + oneOf: + - type: boolean + - type: string + - type: number + description: The value (with simple type) in iodd format. + required: + - value + example: + value: 15.2 + deviceEvents: + type: object + required: + - time + - severity + - origin + - message + properties: + time: + $ref: '#/components/schemas/eventTime' + severity: + $ref: '#/components/schemas/eventSeverity' + message: + required: + - code + - mode + $ref: '#/components/schemas/eventObject' + eventObject: + type: object + properties: + code: + description: >- + IO-Link Port EventCode or IO-Link Device EventCode. This property is + mandatory for IO-Link Port Events or IO-Link Device Events. + type: number + example: 16912 + mode: + description: >- + IO-Link Port Event Mode or IO-Link Device EventMode. This property + is mandatory for IO-Link Port Events or IO-Link Device Events. + type: string + enum: + - SINGLESHOT + - APPEARS + - DISAPPEARS + example: APPEARS + text: + type: string + example: Device temperature over-run – Clear source of heat + eventOriginObject: + type: object + properties: + gateway: + type: string + example: 1 + masterNumber: + description: >- + This property is mandatory for IO-Link Master Events, IO-Link Port + Events and IO-Link Device Events. Should not be used for other log + entries. + type: integer + minimum: 1 + example: 1 + portNumber: + description: >- + This property is mandatory for IO-Link Port Events and IO-Link + Device Events. Should not be used for other log entries. + type: integer + minimum: 1 + example: 1 + deviceAlias: + description: >- + This property is mandatory for IO-Link Device Events. Should not be + used for other log entries. + type: string + example: Temperature_sensor_1 + eventSeverity: + description: >- + Indicates the severity of the message. The IO-Link EventType + NOTIFICATION maps to NOTICE, WARNING to WARNING and ERROR to ERROR. + type: string + enum: + - EMERGENCY + - ALERT + - CRITICAL + - ERROR + - WARNING + - NOTICE + - INFO + - DEBUG + example: WARNING + eventTime: + description: >- + Timestamp (format defined in DIN ISO 8601). This field can give an + absolute time or a relative time. Both formats are defined in DIN ISO + 8601. + type: string + example: '2021-05-18T07:31:54.123Z' + namurHealthState: + type: integer + maximum: 100 + minimum: 0 + description: >- + Reflects changing a meter for the health state as a result of + sub-optimal process and/or environmental conditions from 100 to 0 + namurHealth: + type: string + enum: + - NORMAL_0 + - FAILURE_1 + - CHECK_FUNCTION_2 + - OFF_SPEC_3 + - MAINTENANCE_REQUIRED_4 + - DIAGNOSIS_PASSIVE_5 + description: >- + health indicates the status as defined by NAMUR recommendation NE107 as + an DeviceHealthEnumeration value. + ipConfiguration: + type: string + enum: + - MANUAL + - DHCP + ipAddress: + type: string + example: 192.168.1.13 + subnetMask: + type: string + example: 255.255.255.0 + standardGateway: + type: string + example: 192.168.1.1 + dnsServer: + type: object + required: + - server + - configuration + properties: + server: + type: array + items: + type: string + example: + - 1.1.1.1 + - 2.2.2.2 + configuration: + type: string + enum: + - automatic + - custom + macAddress: + type: string + example: 'FE:AB:3A:55:33:11' + valueUnitObject: + type: object + properties: + value: + type: integer + unit: + type: string + networkConfiguration: + type: array + items: + type: object + required: + - name + - ipConfiguration + - ipAddress + - subnetMask + - macAddress + properties: + name: + type: string + description: Name of the interface. + example: eth0 + ipConfiguration: + $ref: '#/components/schemas/ipConfiguration' + ipAddress: + $ref: '#/components/schemas/ipAddress' + subnetMask: + $ref: '#/components/schemas/subnetMask' + standardGateway: + $ref: '#/components/schemas/standardGateway' + dnsServer: + $ref: '#/components/schemas/dnsServer' + macAddress: + $ref: '#/components/schemas/macAddress' + ifSpeed: + type: array + items: + $ref: '#/components/schemas/valueUnitObject' + ifOperStatus: + type: array + items: + type: string + example: linkUp + parameters: + originatorId: + description: >- + This is the unique identifier of the originator and shall correspond to + the client id inside the MQTT message. It can be the ProductURI, DNS + name, IP address or MAC address of the device hosting the MQTT + publisher. By default the Hostname shall be used. + schema: + type: string + example: iomaster_nr1 + deviceId: + description: Id of the IO-Link device (e.g. port nr) + schema: + type: string + example: port1 + securitySchemes: + user-password: + type: userPassword From d6922a6f1d275294be89137db69efb6f2dcd7743 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Tue, 2 Aug 2022 09:16:19 +0200 Subject: [PATCH 008/279] Update README.md Direct links to the editor tools. --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 08dbea9..565cc47 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,6 @@ JSON serialization for IO-Link data. ## Branches: - master: released version (1.0) - version-1-x: Draft for the next version + + https://editor.swagger.io/?url=https://raw.githubusercontent.com/iolinkcommunity/JSON_for_IO-Link/version-1-x/JSON_for_IO-Link.yaml + https://studio.asyncapi.com/?url=https://raw.githubusercontent.com/iolinkcommunity/JSON_for_IO-Link/version-1-x/MQTT_for_IO-Link.yaml From a30579790c7fc416c9da1639bbed21997f373a0f Mon Sep 17 00:00:00 2001 From: Benjamin Vervoort Date: Tue, 2 Aug 2022 09:55:08 +0200 Subject: [PATCH 009/279] add default reviewer --- .github/CODEOWNERS | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..75e8d9a --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,5 @@ +# These owners will be the default owners for everything in +# the repo. Unless a later match takes precedence, +# following users will be requested for +# review when someone opens a pull request. +* @fm-sick @vervoortb @haliCR1 @BaRu-ifm @julian-st @lorandmolnar @mrentsch65 From b70b6b12fc7a0a82ff1f0074a703647ab067f275 Mon Sep 17 00:00:00 2001 From: Julian Ste <31321934+julian-st@users.noreply.github.com> Date: Tue, 2 Aug 2022 13:28:21 +0200 Subject: [PATCH 010/279] Added disclaimer section --- JSON_for_IO-Link.yaml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 0e2edce..f099539 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -8,6 +8,21 @@ info: * Draft for version 1.x + ## Disclaimer: + + >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. + + + >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. + + + >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. + + + >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). + + + >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. version: 1.1.0 title: Swagger IO-Link Master contact: @@ -5335,4 +5350,4 @@ components: code: 107 message: 'Service temporarily unavailable' - \ No newline at end of file + From 906baa99018e021e75b61f83a7e634fca10beb85 Mon Sep 17 00:00:00 2001 From: Benjamin Vervoort Date: Tue, 20 Sep 2022 18:24:58 +0200 Subject: [PATCH 011/279] add linter, fix warnings --- .github/workflows/linting.yml | 18 + JSON_for_IO-Link.yaml | 1576 +++++++++++++++++---------------- spectral.yaml | 2 + 3 files changed, 837 insertions(+), 759 deletions(-) create mode 100644 .github/workflows/linting.yml create mode 100644 spectral.yaml diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml new file mode 100644 index 0000000..608c9b0 --- /dev/null +++ b/.github/workflows/linting.yml @@ -0,0 +1,18 @@ +name: Lint RestAPI with Spectral + +on: + - push + +jobs: + build: + name: Run Spectral + runs-on: ubuntu-latest + steps: + # Check out the repository + - uses: actions/checkout@v2 + + # Run Spectral + - uses: stoplightio/spectral-action@latest + with: + file_glob: 'JSON_for_IO-Link.yaml' + spectral_ruleset: spectral.yaml diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 17f8000..a39e295 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -183,6 +183,7 @@ paths: message: 'Unknown SESSIONID' '/specs': get: + operationId: GetSpecs tags: - general summary: Read the version information as list of specification references. @@ -218,6 +219,7 @@ paths: specDesc: "Application Layer services for decentralized periphery - Technical Specification for PROFINET IO" '/gateways': get: + operationId: GetGateways tags: - general summary: Read the known IO-Link gateways as list of URLs. @@ -259,9 +261,11 @@ paths: '/gateway/identification': get: + operationId: GetGatewayIdentification tags: - gateway summary: Read the identification of the Gateway. + description: Read the identification of the Gateway. responses: '200': description: Successful operation @@ -275,9 +279,11 @@ paths: $ref: '#/components/responses/HTTP_500' '/gateway/capabilities': get: + operationId: PostGatewayCapabilities tags: - gateway summary: Read the capabilities of the Gateway. + description: Read the capabilities of the Gateway. responses: '200': description: Successful operation @@ -291,9 +297,11 @@ paths: $ref: '#/components/responses/HTTP_500' '/gateway/configuration': get: + operationId: GetGatewayConfiguration tags: - gateway - summary: Read the configuration of the Gateway . + summary: Read the configuration of the Gateway. + description: Read the configuration of the Gateway. responses: '200': description: Successful operation @@ -336,9 +344,11 @@ paths: '500': $ref: '#/components/responses/HTTP_500' post: + operationId: PostGatewayConfiguration tags: - gateway summary: Write the configuration of the Gateway. + description: Write the configuration of the Gateway. requestBody: required: true content: @@ -381,9 +391,11 @@ paths: '/gateway/reset': post: + operationId: PostGatewayReset tags: - gateway summary: Reset the Gateway including all Masters. Optional. + description: Reset the Gateway including all Masters. Optional. responses: '204': description: Successful operation @@ -396,9 +408,11 @@ paths: '/gateway/reboot': post: + operationId: PostGatewayReboot tags: - gateway summary: Reboot the Gateway including all Masters. Optional. + description: Reboot the Gateway including all Masters. Optional. responses: '204': description: Successful operation @@ -411,9 +425,11 @@ paths: '/gateway/events': get: + operationId: GetGatewayEvents tags: - gateway summary: Read the EventLog containing all events from Gateway, Masters, Ports and Devices. + description: Read the EventLog containing all events from Gateway, Masters, Ports and Devices. parameters: - $ref: '#/components/parameters/eventOrigin' - $ref: '#/components/parameters/eventMasterNumber' @@ -522,9 +538,11 @@ paths: '500': $ref: '#/components/responses/HTTP_500' delete: + operationId: DeleteGatewayEvents tags: - gateway summary: Delete events of Gateway, Masters, Ports and Devices from EventLog according to filter query. + description: Delete events of Gateway, Masters, Ports and Devices from EventLog according to filter query. parameters: - $ref: '#/components/parameters/eventOrigin' - $ref: '#/components/parameters/eventMasterNumber' @@ -544,10 +562,12 @@ paths: '/mqtt/configuration': get: + operationId: GetMqttConfiguration tags: - mqtt summary: >- Read the MQTT configuration of the Gateway. + description: Read the MQTT configuration of the Gateway. responses: '200': description: Successful operation @@ -559,7 +579,7 @@ paths: Active client: value: clientMode: "ACTIVE" - serverAddress: 192.168.2.1/mqttbroker + serverAddress: 192.168.2.1:1883/mqttbroker username: iolink_json password: '1234' lastwill: @@ -581,10 +601,12 @@ paths: $ref: '#/components/responses/HTTP_501' post: + operationId: PostMqttConfiguration tags: - mqtt summary: >- Update the MQTT configuration of the Gateway. + description: Update the MQTT configuration of the Gateway. requestBody: required: true content: @@ -595,7 +617,7 @@ paths: Active Client: value: clientMode: ACTIVE - serverAddress: 192.168.2.1/mqttbroker + serverAddress: 192.168.2.1:1883/mqttbroker username: iolink_json password: '1234' lastwill: @@ -621,9 +643,11 @@ paths: '/mqtt/topics': get: + operationId: GetMqttTopics tags: - mqtt summary: Get the list of MQTT topics. + description: Get the list of MQTT topics. responses: '200': description: Successful operation @@ -648,7 +672,7 @@ paths: topicName: Sensor34/event qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 - event: null + event: {} - topicId: 3 topicName: PD qos: 0_ONLY_ONCE @@ -685,9 +709,11 @@ paths: '501': $ref: '#/components/responses/HTTP_501' post: + operationId: PostMqttTopicsTopicId tags: - mqtt summary: Create a new MQTT topic. + description: Create a new MQTT topic. requestBody: required: true content: @@ -727,7 +753,7 @@ paths: deviceAlias: AHM36A parameter: parameterName: Temperature1 - format: IODD + format: iodd interval: value: 1000 unit: ms @@ -750,9 +776,11 @@ paths: $ref: '#/components/responses/HTTP_501' '/mqtt/topics/{topicId}': get: + operationId: GetMqttTopicsTopicId tags: - mqtt summary: Get one MQTT topic. + description: Get one MQTT topic. parameters: - $ref: '#/components/parameters/mqttTopicId' responses: @@ -784,6 +812,8 @@ paths: event: {} Parameter (Index): value: + topicId: 3 + topicName: devvice/indexXY qos: 0_ONLY_ONCE deviceAlias: master1port1 parameter: @@ -794,12 +824,13 @@ paths: unit: ms Parameter (ParameterName): value: + topicId: 5 topicName: deviceTemperature qos: 0_ONLY_ONCE deviceAlias: AHM36A parameter: parameterName: Temperature1 - format: IODD + format: iodd interval: value: 1000 unit: ms @@ -812,9 +843,11 @@ paths: '501': $ref: '#/components/responses/HTTP_501' delete: + operationId: DeleteMqttTopicsTopicId tags: - mqtt summary: Delete a specific MQTT topic. + description: Delete a specific MQTT topic. parameters: - $ref: '#/components/parameters/mqttTopicId' responses: @@ -832,9 +865,11 @@ paths: $ref: '#/components/responses/HTTP_501' '/mqtt/connectionstatus': get: + operationId: GetMqttConnectionstatus tags: - mqtt summary: Read the connection status of the MQTT client to the MQTT server. + description: Read the connection status of the MQTT client to the MQTT server. responses: '200': description: Successful operation @@ -852,6 +887,7 @@ paths: $ref: '#/components/responses/HTTP_501' '/iodds': get: + operationId: GetIodds tags: - iodds summary: >- @@ -881,9 +917,11 @@ paths: '501': $ref: '#/components/responses/HTTP_501' delete: + operationId: DeleteIodds tags: - iodds summary: Delete a specific IODD representation. + description: Delete a specific IODD representation. parameters: - $ref: '#/components/parameters/vendorId' - $ref: '#/components/parameters/deviceId' @@ -903,6 +941,7 @@ paths: $ref: '#/components/responses/HTTP_501' '/iodds/file': get: + operationId: GetIoddsFile tags: - iodds summary: Get a specific IODD. Optional. @@ -919,7 +958,7 @@ paths: schema: $ref: '#/components/schemas/ioddFile' example: - - IODD XML file + "IODD XML file" '400': # code 305, 306 $ref: '#/components/responses/HTTP_400' '403': @@ -931,6 +970,7 @@ paths: '501': $ref: '#/components/responses/HTTP_501' post: + operationId: PostIoddsFile tags: - iodds summary: Store or update an IODD. @@ -944,7 +984,7 @@ paths: schema: $ref: '#/components/schemas/ioddFile' example: - - IODD XML file + "IODD XML file" responses: '204': description: Successful operation @@ -960,11 +1000,13 @@ paths: $ref: '#/components/responses/HTTP_501' '/masters': get: + operationId: GetMasters tags: - masters summary: >- Read all the available masterNumber keys with the corresponding identification information. + description: Read all the available masterNumber keys with the corresponding identification information. responses: '200': description: Successful operation @@ -978,9 +1020,11 @@ paths: $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/capabilities': get: + operationId: GetMastersMasterNumberCapabilities tags: - masters summary: Read the capabilities of the Master. + description: Read the capabilities of the Master. parameters: - $ref: '#/components/parameters/masterNumber' responses: @@ -997,10 +1041,10 @@ paths: maxPowerSupply: #overall power consumption value: 0.3 unit: A - wireless: - value: - masterType: Wireless_Master - numberOfPorts: 40 + # wireless: # @todo wireless + # value: + # masterType: Wireless_Master + # numberOfPorts: 40 '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1009,9 +1053,11 @@ paths: $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/identification': get: + operationId: GetMastersMasterNumberIdentification tags: - masters summary: Read the identification of the Master. + description: Read the identification of the Master. parameters: - $ref: '#/components/parameters/masterNumber' responses: @@ -1028,9 +1074,11 @@ paths: '500': $ref: '#/components/responses/HTTP_500' post: + operationId: PostMastersMasterNumberIdentification tags: - masters summary: Write application specific identification to a Master. + description: Write application specific identification to a Master. parameters: - $ref: '#/components/parameters/masterNumber' requestBody: @@ -1057,11 +1105,13 @@ paths: '500': $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/configuration': + '/masters/{masterNumber}/configuration': #@todo wireles get: + operationId: GetMastersMasterNumberConfiguration tags: - masters summary: Read the actual configuration of the specified Master. + description: Read the actual configuration of the specified Master. parameters: - $ref: '#/components/parameters/masterNumber' responses: @@ -1076,9 +1126,11 @@ paths: '500': $ref: '#/components/responses/HTTP_500' post: + operationId: PostMastersMasterNumberConfiguration tags: - masters summary: Write the configuration of the specified Master. + description: Write the configuration of the specified Master. parameters: - $ref: '#/components/parameters/masterNumber' requestBody: @@ -1095,27 +1147,27 @@ paths: content: application/json: examples: - 104: + "104": value: code: 104 message: Action locked by another client - 201: + "201": value: code: 201 message: JSON parsing failed - 202: + "202": value: code: 202 message: JSON data value invalid - 203: + "203": value: code: 203 message: JSON data type invalid - 206: + "206": value: code: 206 message: JSON data value out of bounds - 208: + "208": value: code: 208 message: POST request without content @@ -1127,8 +1179,9 @@ paths: ################################################################################ # tracks ################################################################################ - '/masters/{masterNumber}/tracks': + '/masters/{masterNumber}/tracks': #@todo wireles get: + operationId: GetMastersMasterNumberTracks tags: - tracks summary: Read the information about the available wireless tracks. Mandatory for W-Masters. @@ -1178,8 +1231,9 @@ paths: '500': $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/tracks/scan': + '/masters/{masterNumber}/tracks/scan': #@todo wireles post: + operationId: PostMastersMasterNumberTracksScan tags: - tracks summary: Start scanning on the specified trackNumber. Mandatory for W-Masters. @@ -1208,39 +1262,39 @@ paths: content: application/json: examples: - 104: + "104": value: code: 104 message: Action locked by another client - 201: + "201": value: code: 201 message: JSON parsing failed - 202: + "202": value: code: 202 message: JSON data value invalid - 203: + "203": value: code: 203 message: JSON data type invalid - 205: + "205": value: code: 205 message: JSON data value out of range - 208: + "208": value: code: 208 message: POST request without content - 701: + "701": value: code: 701 message: Data set incomplete - 702: + "702": value: code: 702 message: Data set not applicable - 703: + "703": value: code: 703 message: Data set combination incompatible @@ -1253,6 +1307,7 @@ paths: '503': $ref: '#/components/responses/HTTP_503' get: + operationId: GetMastersMasterNumberTracksScan tags: - tracks summary: Read back the last scan result. Mandatory for W-Masters. @@ -1300,8 +1355,9 @@ paths: $ref: '#/components/responses/HTTP_500' '503': $ref: '#/components/responses/HTTP_503' - '/masters/{masterNumber}/tracks/{trackNumber}/status': + '/masters/{masterNumber}/tracks/{trackNumber}/status': #@todo wireles get: + operationId: GetMastersMasterNumberTracksTrackNumberstatus tags: - tracks summary: Read the status of the selected trackNumber. Mandatory for W-Masters. @@ -1349,8 +1405,9 @@ paths: '500': $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/tracks/{trackNumber}/statistics': + '/masters/{masterNumber}/tracks/{trackNumber}/statistics': #@todo wireles get: + operationId: GetMastersMasterNumberTracksTrackNumberstatistics tags: - tracks summary: Read the statistics (Errors and PEP) of the selected trackNumber. Optional for W-Masters. @@ -1381,33 +1438,31 @@ paths: maximum: 65535 # 65535 = no data available PEP: type: string - example: - trackNumber: 2 - slots: - - slotNumber: 0 - errors: "-" - PEP: "-" - - slotNumber: 1 - errors: "-" - PEP: "-" - - slotNumber: 2 - errors: "-" - PEP: "-" - - slotNumber: 3 - errors: "-" - PEP: "-" - - slotNumber: 4 - errors: "-" - PEP: "-" - - slotNumber: 5 - errors: 63 - PEP: 1.5380859375 - - slotNumber: 6 - errors: "-" - PEP: "-" - - slotNumber: 7 - errors: "-" - PEP: "-" + # example: @todo wireles + # - trackNumber: 0 + # errors: 0 + # PEP: "-" + # - trackNumber: 1 + # errors: 4 + # PEP: "-" + # - trackNumber: 2 + # errors: 5 + # PEP: "-" + # - trackNumber: 3 + # errors: 7 + # PEP: "-" + # - trackNumber: 4 + # errors: 5 + # PEP: "-" + # - trackNumber: 5 + # errors: 63 + # PEP: 1.5380859375 + # - trackNumber: 6 + # errors: 6 + # PEP: "-" + # - trackNumber: 7 + # errors: 1 + # PEP: "-" '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1415,8 +1470,9 @@ paths: '500': $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/tracks/{trackNumber}/statisticsChannel': + '/masters/{masterNumber}/tracks/{trackNumber}/statisticsChannel': #@todo wireles get: + operationId: GetMastersMasterNumberTracksTrackNumberstatisticsChannel tags: - tracks summary: Read the channel statistics (Errors %) of the selected trackNumber. Optional for W-Masters. @@ -1439,16 +1495,16 @@ paths: '500': $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/tracks/{trackNumber}/configuration': + '/masters/{masterNumber}/tracks/{trackNumber}/configuration': #@todo wireles get: + operationId: GetMastersMasterNumberTracksTrackNumberConfiguration tags: - tracks summary: Read the configuration of the specified trackNumber. Mandatory for W-Masters. parameters: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/trackNumber' - description: >- - + description: Read the configuration of the specified trackNumber. Mandatory for W-Masters. responses: '200': description: Successful operation @@ -1463,14 +1519,14 @@ paths: '500': $ref: '#/components/responses/HTTP_500' post: + operationId: PostMastersMasterNumberTracksTrackNumberConfiguration tags: - tracks summary: Write the configuration of the specified trackNumber. Mandatory for W-Masters. parameters: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/trackNumber' - description: >- - + description: Write the configuration of the specified trackNumber. Mandatory for W-Masters. requestBody: required: true content: @@ -1485,43 +1541,43 @@ paths: content: application/json: examples: - 104: + "104": value: code: 104 message: Action locked by another client - 201: + "201": value: code: 201 message: JSON parsing failed - 202: + "202": value: code: 202 message: JSON data value invalid - 203: + "203": value: code: 203 message: JSON data type invalid - 204: + "204": value: code: 204 message: Enumeration value unknown - 205: + "205": value: code: 205 message: JSON data value out of range - 208: + "208": value: code: 208 message: POST request without content - 701: + "701": value: code: 701 message: Data set incomplete - 702: + "702": value: code: 702 message: Data set not applicable - 703: + "703": value: code: 703 message: Data set combination incompatible @@ -1537,9 +1593,11 @@ paths: ################################################################################ '/masters/{masterNumber}/ports': get: + operationId: GetMastersMasterNumberPorts tags: - ports summary: Read all the available portNumber keys with the corresponding identification information. + description: Read all the available portNumber keys with the corresponding identification information. parameters: - $ref: '#/components/parameters/masterNumber' responses: @@ -1573,24 +1631,24 @@ paths: - NOT_AVAILABLE # NOT_AVAILABLE - PORT_POWER_OFF # PORT_POWER_OFF - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - slotNumber: - type: number - trackNumber: - type: number - slotType: - type: string - enum: - - SSLOT - - DSLOT - items: - type: object - properties: - vendorId: - type: number - deviceId: - type: number - productName: - type: string + # slotNumber: # @todo wireles + # type: number + # trackNumber: + # type: number + # slotType: + # type: string + # enum: + # - SSLOT + # - DSLOT + # items: + # type: object + # properties: + # vendorId: + # type: number + # deviceId: + # type: number + # productName: + # type: string example: - portNumber: 1 statusInfo: "DEVICE_ONLINE" @@ -1598,16 +1656,16 @@ paths: - portNumber: 2 statusInfo: "DIGITAL_INPUT_C/Q" deviceAlias: "Switching_Sensor" - - portNumber: 3 - trackNumber: 1 - slotNumber: 2 - slotType: "SSLOT" - statusInfo: "DEVICE_ONLINE" - deviceAlias: "Wireless_Bridge" - deviceInfo: - vendorId: 888 - deviceId: 10485760 - productName: "BNI IOW-302-W01-K080" + # - portNumber: 3 # @todo wireles + # trackNumber: 1 + # slotNumber: 2 + # slotType: "SSLOT" + # statusInfo: "DEVICE_ONLINE" + # deviceAlias: "Wireless_Bridge" + # deviceInfo: + # vendorId: 888 + # deviceId: 10485760 + # productName: "BNI IOW-302-W01-K080" - portNumber: 4 statusInfo: "DEACTIVATED" deviceAlias: "Empty_port" @@ -1619,9 +1677,11 @@ paths: $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/ports/{portNumber}/capabilities': get: + operationId: GetMastersMasterNumberPortsPortNumberCapabilities tags: - ports summary: Read the capability information of the specified port. + description: Read the capability information of the specified port. parameters: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/portNumber' @@ -1671,7 +1731,7 @@ paths: portType: FAILSAFE_PORT_B WIRELESS: value: - portType: WIRELESS + portType: WIRELESS_MASTER slotType: "DSLOT" '403': @@ -1683,9 +1743,11 @@ paths: '/masters/{masterNumber}/ports/{portNumber}/status': get: + operationId: GetMastersMasterNumberPortsPortNumberStatus tags: - ports summary: Read the actual status of the selected port. + description: Read the actual status of the selected port. parameters: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/portNumber' @@ -1762,7 +1824,7 @@ paths: masterCycleTime: value: 2.3 unit: ms - wireless: + wireless: # @todo wireles value: statusInfo: "DEVICE_ONLINE" ioLinkRevision: "1.1" @@ -1782,12 +1844,14 @@ paths: $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/ports/{portNumber}/configuration': get: + operationId: GetMastersMasterNumberPortsPortNumberConfiguration tags: - ports parameters: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/portNumber' summary: Read the actual configuration of the specified port. + description: Read the actual configuration of the specified port. responses: '200': description: Successful operation @@ -1798,7 +1862,7 @@ paths: example: mode: IOLINK_MANUAL validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - iqConfiguration: ANALOG_INPUT + iqConfiguration: DIGITAL_INPUT cycleTime: value: 2.3 unit: ms @@ -1812,9 +1876,11 @@ paths: '500': $ref: '#/components/responses/HTTP_500' post: + operationId: PostMastersMasterNumberPortsPortNumberConfiguration tags: - ports summary: Write the configuration of the specified port. + description: Write the configuration of the specified port. parameters: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/portNumber' @@ -1858,12 +1924,14 @@ paths: $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/ports/{portNumber}/datastorage': get: + operationId: GetMastersMasterNumberPortsPortNumberDatastorages tags: - ports parameters: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/portNumber' summary: Read the Data Storage content of a specific port. + description: Read the Data Storage content of a specific port. responses: '200': description: Successful operation @@ -1878,6 +1946,7 @@ paths: vendorId: 15 deviceId: 65253 ioLinkRevision: '1.1' + parameterChecksum: 123456 content: >- TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl Empty Data Storage: @@ -1891,12 +1960,14 @@ paths: '500': $ref: '#/components/responses/HTTP_500' post: + operationId: PostMastersMasterNumberPortsPortNumberDatastorages tags: - ports parameters: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/portNumber' summary: Write the Data Storage content to a specific port. + description: Write the Data Storage content to a specific port. requestBody: required: true content: @@ -1933,9 +2004,11 @@ paths: '/devices': get: + operationId: GetDevices tags: - devices summary: Get all available deviceAlias keys and the location by Master number and Port number. + description: Get all available deviceAlias keys and the location by Master number and Port number. responses: '200': description: Successful operation @@ -1977,9 +2050,11 @@ paths: $ref: '#/components/responses/HTTP_500' '/devices/{deviceAlias}/capabilities': get: + operationId: GetDevicesDeviceAliasCapabilities tags: - devices summary: Read the capabilities from the specific Device. + description: Read the capabilities from the specific Device. parameters: - $ref: '#/components/parameters/deviceAlias' responses: @@ -1993,7 +2068,7 @@ paths: minimumCycleTime: value: 2.3 unit: ms - supportedProfiles: [10, 32770] + supportedProfiles: [10, 32770] '400': # code 307 $ref: '#/components/responses/HTTP_400' '403': @@ -2004,6 +2079,7 @@ paths: $ref: '#/components/responses/HTTP_500' '/devices/{deviceAlias}/identification': get: + operationId: GetDevicesDeviceAliasidentification tags: - devices summary: Read the identification from the specific Device. @@ -2029,9 +2105,11 @@ paths: '500': $ref: '#/components/responses/HTTP_500' post: + operationId: PostDevicesDeviceAliasidentification tags: - devices summary: Write application specific identification to the Device. + description: Write application specific identification to the Device. parameters: - $ref: '#/components/parameters/deviceAlias' requestBody: @@ -2059,9 +2137,11 @@ paths: $ref: '#/components/responses/HTTP_500' '/devices/{deviceAlias}/processdata/value': get: + operationId: GetDevicesDeviceAliasProcessData tags: - devices summary: Read the process data values (input and output) from the specified Device. + description: Read the process data values (input and output) from the specified Device. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/format' @@ -2112,9 +2192,11 @@ paths: '501': $ref: '#/components/responses/HTTP_501' post: + operationId: PostDevicesDeviceAliasProcessData tags: - devices summary: Write the process data output values to the specified Device. + description: Write the process data output values to the specified Device. parameters: - $ref: '#/components/parameters/deviceAlias' requestBody: @@ -2159,10 +2241,12 @@ paths: '/devices/{deviceAlias}/processdata/getdata/value': get: + operationId: GetDevicesDeviceAliasProcessDataGetData tags: - devices summary: >- Read the process data input values from the specified Device. + description: Read the process data input values from the specified Device. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/format' @@ -2206,10 +2290,12 @@ paths: '/devices/{deviceAlias}/processdata/setdata/value': get: + operationId: GetDevicesDeviceAliasProcessDataSetData tags: - devices summary: >- Read the process data output values from the specified Device. + description: Read the process data output values from the specified Device. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/format' @@ -2246,11 +2332,13 @@ paths: '/devices/{deviceAlias}/parameters': get: + operationId: GetDevicesDeviceAliasParameters tags: - devices summary: >- Read all available parameter indices and parameter names from the specific Device. IODD support is required. + description: Read all available parameter indices and parameter names from the specific Device. IODD support is required. parameters: - $ref: '#/components/parameters/deviceAlias' responses: @@ -2273,9 +2361,11 @@ paths: '/devices/{deviceAlias}/parameters/{index}/value': get: + operationId: GetDevicesDeviceAliasParametersIndexValue tags: - devices summary: Read a parameter value from the specific Device with the given index. + description: Read a parameter value from the specific Device with the given index. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/index' @@ -2318,9 +2408,11 @@ paths: $ref: '#/components/responses/HTTP_501' post: + operationId: PostDevicesDeviceAliasParametersIndexValue tags: - devices summary: Write a parameter value with the given index to the specified Device. + description: Write a parameter value with the given index to the specified Device. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/index' @@ -2365,11 +2457,13 @@ paths: '/devices/{deviceAlias}/parameters/{parameterName}/value': get: + operationId: GetDevicesDeviceAliasParametersValue tags: - devices summary: >- Read a parameter value from the specific Device by parameter name. IODD support is required. + description: Read a parameter value from the specific Device by parameter name. IODD support is required. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/parameterName' @@ -2412,11 +2506,13 @@ paths: '501': $ref: '#/components/responses/HTTP_501' post: + operationId: PostDevicesDeviceAliasParametersValue tags: - devices summary: >- Write a parameter value by name to the specified Device.IODD support is required. IODD support is required. + description: Write a parameter value by name to the specified Device.IODD support is required. IODD support is required. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/parameterName' @@ -2461,11 +2557,13 @@ paths: '/devices/{deviceAlias}/parameters/{index}/subindices': get: + operationId: GetDevicesDeviceAliasParametersIndexSubindices tags: - devices summary: >- Read all available parameter sub-indices and sub-parameter names from the specific Device. IODD support is required. + description: Read all available parameter sub-indices and sub-parameter names from the specific Device. IODD support is required. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/index' @@ -2489,11 +2587,13 @@ paths: '/devices/{deviceAlias}/parameters/{parameterName}/subindices': get: + operationId: GetDevicesDeviceAliasParametersSubindices tags: - devices summary: >- Read all available parameter sub-indices and sub-parameter names from the specific Device (referenced by parameter name). IODD support is required. + description: Read all available parameter sub-indices and sub-parameter names from the specific Device (referenced by parameter name). IODD support is required. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/parameterName' @@ -2517,10 +2617,12 @@ paths: '/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value': get: + operationId: GetDevicesDeviceAliasParametersSubindicesSubindexValue tags: - devices summary: >- Read a parameter value from the specific Device with the given index and subindex. + description: Read a parameter value from the specific Device with the given index and subindex. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/index' @@ -2558,10 +2660,12 @@ paths: '501': $ref: '#/components/responses/HTTP_501' post: + operationId: PostDevicesDeviceAliasParametersSubindicesSubindexValue tags: - devices summary: >- Write the parameter with the given index and subindex. + description: Write the parameter with the given index and subindex. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/index' @@ -2601,11 +2705,13 @@ paths: '/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value': get: + operationId: GetDevicesDeviceAliasParametersSubindicesValue tags: - devices summary: >- Read a parameter value from the specific Device by parameter name and subname. IODD support is required. + description: Read a parameter value from the specific Device by parameter name and subname. IODD support is required. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/parameterName' @@ -2643,11 +2749,13 @@ paths: '501': $ref: '#/components/responses/HTTP_501' post: + operationId: PostDevicesDeviceAliasParametersSubindicesValue tags: - devices summary: >- Write a parameter value to the specific Device by the parameter name and subname. IODD support is required. + description: Write a parameter value to the specific Device by the parameter name and subname. IODD support is required. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/parameterName' @@ -2687,10 +2795,12 @@ paths: '/devices/{deviceAlias}/blockparameterization': post: + operationId: PostDevicesDeviceAliasBlockparameterization tags: - devices summary: >- Write or read one or more parameters using the block parameterization method. + description: Write or read one or more parameters using the block parameterization method. parameters: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/format' @@ -2832,14 +2942,14 @@ paths: parameterExchangeResult: WRITE_SUCCESS 'write, format=byteArray, with error': value: - - address: + - identifier: index: 123 result: parameterExchangeResult: ERROR iolinkError: code: 32816 message: Parameter value out of range - - address: + - identifier: index: 233 result: parameterExchangeResult: ERROR @@ -2859,6 +2969,7 @@ paths: '/devices/{deviceAlias}/events': get: + operationId: GetDevicesDeviceAliasEvents tags: - devices parameters: @@ -2866,6 +2977,7 @@ paths: - $ref: '#/components/parameters/eventTop' - $ref: '#/components/parameters/eventBottom' summary: Reading the EventLog filtered for a specific Device. + description: Reading the EventLog filtered for a specific Device. responses: '200': description: >- @@ -2947,7 +3059,6 @@ components: mqttParameter: type: object required: - - parameter - format properties: parameter: @@ -3330,7 +3441,7 @@ components: deviceAlias: Temperature_sensor_1 message: code: 16912 - mode: APPEARED + mode: APPEARS text: Device temperature over-run – Clear source of heat gatewayIdentificationGet: type: object @@ -3352,18 +3463,20 @@ components: type: string firmwareRevision: type: string + vendorName: + type: string vendorUrl: type: string manualUrl: type: string productInstanceUri: - type: string + type: string applicationSpecificTag: type: string locationTag: type: string functionTag: - type: string + type: string example: macAddress: '00:02:72:CE:A6:49' serialNumber: 'C134A746' @@ -3451,11 +3564,7 @@ components: type: string description: Unique deviceAlias. - oneOf: - - type: object - required: - - event - - processData - - parameter + - type: object properties: event: $ref: '#/components/schemas/event' @@ -3522,64 +3631,6 @@ components: connectionStatus: CONNECTION_ACCEPTED serverAddress: 'http://broker-address.com' upTime: 1050 - portStatusGet: - type: object - required: - - statusInfo - properties: - statusInfo: - type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - ioLinkRevision: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - '1.0' - - '1.1' - transmissionRate: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - COM1 - - COM2 - - COM3 - - WIRELESS - masterCycleTime: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: object - allOf: - - $ref: '#/components/schemas/cycleTime' - example: #TODO - wired: - statusInfo: DEVICE_ONLINE - ioLinkRevision: '1.1' - transmissionRate: COM2 - masterCycleTime: - value: 2.3 - unit: ms - wireless: - statusInfo: DEVICE_ONLINE - ioLinkRevision: '1.1' - transmissionRate: WIRELESS - masterCycleTime: - value: 5 - unit: ms deviceCapabilitiesGet: required: - minimumCycleTime @@ -3597,6 +3648,8 @@ components: - vendorId - deviceId - ioLinkRevision + - vendorName + - productName type: object properties: vendorId: @@ -3688,8 +3741,8 @@ components: - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - FAILSAFE_PORT_B - - WIRELESS - slotType: + - WIRELESS_MASTER + slotType: # @todo wireles type: string enum: - SSLOT @@ -3764,7 +3817,7 @@ components: example: mode: IOLINK_MANUAL validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - iqConfiguration: ANALOG_INPUT + iqConfiguration: DIGITAL_INPUT cycleTime: value: 2.3 unit: ms @@ -3800,238 +3853,238 @@ components: required: - all properties: - 2402: + "2402": type: boolean default: false - 2403: + "2403": type: boolean default: false - 2404: + "2404": type: boolean default: false - 2405: + "2405": type: boolean default: false - 2406: + "2406": type: boolean default: false - 2407: + "2407": type: boolean default: false - 2408: + "2408": type: boolean default: false - 2409: + "2409": type: boolean default: false - 2410: + "2410": type: boolean default: false - 2411: + "2411": type: boolean default: false - 2412: + "2412": type: boolean default: false - 2413: + "2413": type: boolean default: false - 2414: + "2414": type: boolean default: false - 2415: + "2415": type: boolean default: false - 2416: + "2416": type: boolean default: false - 2417: + "2417": type: boolean default: false - 2418: + "2418": type: boolean default: false - 2419: + "2419": type: boolean default: false - 2420: + "2420": type: boolean default: false - 2421: + "2421": type: boolean default: false - 2422: + "2422": type: boolean default: false - 2423: + "2423": type: boolean default: false - 2424: + "2424": type: boolean default: false - 2425: + "2425": type: boolean default: false - 2426: + "2426": type: boolean default: false - 2427: + "2427": type: boolean default: false - 2428: + "2428": type: boolean default: false - 2429: + "2429": type: boolean default: false - 2430: + "2430": type: boolean default: false - 2431: + "2431": type: boolean default: false - 2432: + "2432": type: boolean default: false - 2433: + "2433": type: boolean default: false - 2434: + "2434": type: boolean default: false - 2435: + "2435": type: boolean default: false - 2436: + "2436": type: boolean default: false - 2437: + "2437": type: boolean default: false - 2438: + "2438": type: boolean default: false - 2439: + "2439": type: boolean default: false - 2440: + "2440": type: boolean default: false - 2441: + "2441": type: boolean default: false - 2442: + "2442": type: boolean default: false - 2443: + "2443": type: boolean default: false - 2444: + "2444": type: boolean default: false - 2445: + "2445": type: boolean default: false - 2446: + "2446": type: boolean default: false - 2447: + "2447": type: boolean default: false - 2448: + "2448": type: boolean default: false - 2449: + "2449": type: boolean default: false - 2450: + "2450": type: boolean default: false - 2451: + "2451": type: boolean default: false - 2452: + "2452": type: boolean default: false - 2453: + "2453": type: boolean default: false - 2454: + "2454": type: boolean default: false - 2455: + "2455": type: boolean default: false - 2456: + "2456": type: boolean default: false - 2457: + "2457": type: boolean default: false - 2458: + "2458": type: boolean default: false - 2459: + "2459": type: boolean default: false - 2460: + "2460": type: boolean default: false - 2461: + "2461": type: boolean default: false - 2462: + "2462": type: boolean default: false - 2463: + "2463": type: boolean default: false - 2464: + "2464": type: boolean default: false - 2465: + "2465": type: boolean default: false - 2466: + "2466": type: boolean default: false - 2467: + "2467": type: boolean default: false - 2468: + "2468": type: boolean default: false - 2469: + "2469": type: boolean default: false - 2470: + "2470": type: boolean default: false - 2471: + "2471": type: boolean default: false - 2472: + "2472": type: boolean default: false - 2473: + "2473": type: boolean default: false - 2474: + "2474": type: boolean default: false - 2475: + "2475": type: boolean default: false - 2476: + "2476": type: boolean default: false - 2477: + "2477": type: boolean default: false - 2478: + "2478": type: boolean default: false - 2479: + "2479": type: boolean default: false example: @@ -4041,84 +4094,84 @@ components: value: 25 unit: s blackList: - 2402: false - 2403: false - 2404: false - 2405: false - 2406: false - 2407: false - 2408: false - 2409: false - 2410: false - 2411: false - 2412: false - 2413: false - 2414: false - 2415: false - 2416: false - 2417: false - 2418: false - 2419: false - 2420: false - 2421: false - 2422: false - 2423: false - 2424: false - 2425: false - 2426: false - 2427: false - 2428: false - 2429: false - 2430: false - 2431: false - 2432: false - 2433: false - 2434: false - 2435: false - 2436: false - 2437: false - 2438: false - 2439: false - 2440: false - 2441: false - 2442: false - 2443: false - 2444: false - 2445: false - 2446: false - 2447: false - 2448: false - 2449: false - 2450: false - 2451: false - 2452: false - 2453: false - 2454: false - 2455: false - 2456: false - 2457: false - 2458: false - 2459: false - 2460: false - 2461: false - 2462: false - 2463: false - 2464: false - 2465: false - 2466: false - 2467: false - 2468: false - 2469: false - 2470: false - 2471: false - 2472: false - 2473: false - 2474: false - 2475: false - 2476: false - 2477: false - 2478: false - 2479: false + "2402": false + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false + "2479": false tracksStatisticsChannel: properties: @@ -4128,402 +4181,402 @@ components: maximum: 5 channelErrors: type: object - required: - - all + # required: # @todo wireles + # - all properties: - 2402: + "2402": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2403: + "2403": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2404: + "2404": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2405: + "2405": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2406: + "2406": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2407: + "2407": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2408: + "2408": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2409: + "2409": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2410: + "2410": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2411: + "2411": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2412: + "2412": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2413: + "2413": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2414: + "2414": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2415: + "2415": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2416: + "2416": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2417: + "2417": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2418: + "2418": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2419: + "2419": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2420: + "2420": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2421: + "2421": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2422: + "2422": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2423: + "2423": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2424: + "2424": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2425: + "2425": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2426: + "2426": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2427: + "2427": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2428: + "2428": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2429: + "2429": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2430: + "2430": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2431: + "2431": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2432: + "2432": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2433: + "2433": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2434: + "2434": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2435: + "2435": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2436: + "2436": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2437: + "2437": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2438: + "2438": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2439: + "2439": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2440: + "2440": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2441: + "2441": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2442: + "2442": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2443: + "2443": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2444: + "2444": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2445: + "2445": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2446: + "2446": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2447: + "2447": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2448: + "2448": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2449: + "2449": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2450: + "2450": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2451: + "2451": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2452: + "2452": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2453: + "2453": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2454: + "2454": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2455: + "2455": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2456: + "2456": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2457: + "2457": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2458: + "2458": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2459: + "2459": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2460: + "2460": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2461: + "2461": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2462: + "2462": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2463: + "2463": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2464: + "2464": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2465: + "2465": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2466: + "2466": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2467: + "2467": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2468: + "2468": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2469: + "2469": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2470: + "2470": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2471: + "2471": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2472: + "2472": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2473: + "2473": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2474: + "2474": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2475: + "2475": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2476: + "2476": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2477: + "2477": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2478: + "2478": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - 2479: + "2479": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available example: trackNumber: 2 channelErrors: - 2402: 0 - 2403: 0 - 2404: 0 - 2405: 0 - 2406: 0 - 2407: 3 - 2408: 1 - 2409: 5 - 2410: 9 - 2411: 6 - 2412: 4 - 2413: 1 - 2414: 0 - 2415: 0 - 2416: 0 - 2417: 0 - 2418: 0 - 2419: 0 - 2420: 0 - 2421: 0 - 2422: 0 - 2423: 0 - 2424: 0 - 2425: 0 - 2426: 0 - 2427: 0 - 2428: 0 - 2429: 0 - 2430: 0 - 2431: 0 - 2432: 0 - 2433: 0 - 2434: 0 - 2435: 3 - 2436: 2 - 2437: 5 - 2438: 2 - 2439: 0 - 2440: 0 - 2441: 0 - 2442: 0 - 2443: 0 - 2444: 0 - 2445: 0 - 2446: 0 - 2447: 0 - 2448: 0 - 2449: 0 - 2450: 0 - 2451: 0 - 2452: 0 - 2453: 0 - 2454: 0 - 2455: 0 - 2456: 0 - 2457: 0 - 2458: 0 - 2459: 0 - 2460: 0 - 2461: 0 - 2462: 0 - 2463: 0 - 2464: 0 - 2465: 0 - 2466: 0 - 2467: 0 - 2468: 0 - 2469: 0 - 2470: 0 - 2471: 0 - 2472: 0 - 2473: 0 - 2474: 0 - 2475: 0 - 2476: 0 - 2477: 0 - 2478: 0 - 2479: 0 + "2402": 0 + "2403": 0 + "2404": 0 + "2405": 0 + "2406": 0 + "2407": 3 + "2408": 1 + "2409": 5 + "2410": 9 + "2411": 6 + "2412": 4 + "2413": 1 + "2414": 0 + "2415": 0 + "2416": 0 + "2417": 0 + "2418": 0 + "2419": 0 + "2420": 0 + "2421": 0 + "2422": 0 + "2423": 0 + "2424": 0 + "2425": 0 + "2426": 0 + "2427": 0 + "2428": 0 + "2429": 0 + "2430": 0 + "2431": 0 + "2432": 0 + "2433": 0 + "2434": 0 + "2435": 3 + "2436": 2 + "2437": 5 + "2438": 2 + "2439": 0 + "2440": 0 + "2441": 0 + "2442": 0 + "2443": 0 + "2444": 0 + "2445": 0 + "2446": 0 + "2447": 0 + "2448": 0 + "2449": 0 + "2450": 0 + "2451": 0 + "2452": 0 + "2453": 0 + "2454": 0 + "2455": 0 + "2456": 0 + "2457": 0 + "2458": 0 + "2459": 0 + "2460": 0 + "2461": 0 + "2462": 0 + "2463": 0 + "2464": 0 + "2465": 0 + "2466": 0 + "2467": 0 + "2468": 0 + "2469": 0 + "2470": 0 + "2471": 0 + "2472": 0 + "2473": 0 + "2474": 0 + "2475": 0 + "2476": 0 + "2477": 0 + "2478": 0 + "2479": 0 trackConfiguration: properties: @@ -4558,220 +4611,220 @@ components: trackMode: CYCLIC txPower: 20 - wirelessPortConfigurationGet: - properties: - portMode: - type: string - enum: - - DEACTIVATED - - CYCLIC - - ROAMING - validationBackup: - type: string - enum: - - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.1 - - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - vendorId: - type: integer - minimum: 1 - maximum: 65535 - deviceId: - type: integer - minimum: 1 - maximum: 16777215 - portCycleTime: - type: object - required: - - value - - unit - properties: - value: - type: integer - minimum: 0 ## 0 means Freerunning - maximum: 315 ## Step size 5ms - unit: - type: string - enum: - - ms - trackNumber: - type: integer - minimum: 1 - maximum: 5 - slotNumber: - type: integer - minimum: 0 - maximum: 7 - slotType: - type: string - enum: - - "SSLOT" - - "DSLOT" - maxRetry: - type: integer - minimum: 2 - maximum: 31 - imaTime: - type: object - required: - - base - - multiplier - properties: - base: - type: string - enum: - - "1664us" - - "5ms" - - "1s" - - "1min" - multiplier: - type: integer - minimum: 1 - maximum: 255 - deviceTxPower: - type: integer - minimum: 0 - maximum: 31 - lowPowerDevice: - type: string - enum: - - "NORMAL" - - "LOW_POWER" - maxPDSegLength: - type: integer - minimum: 0 - maximum: 32 - uniqueId: - type: string - deviceAlias: - type: string - example: - portMode: CYCLIC - validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - vendorId: 888 - deviceId: 1 - portCycleTime: - value: 0 - unit: ms - trackNumber: 5 - slotNumber: 1 - slotType: SSLOT - maxRetry: 20 - imaTime: - base: 1664us - multiplier: 60 - deviceTxPower: 31 - lowPowerDevice: NORMAL - maxPDSegLength: 0 - uniqueId: 03:78:00:00:01:32:50:60:46 - deviceAlias: "Port_X01" + # wirelessPortConfigurationGet: # @todo wireles + # properties: + # portMode: + # type: string + # enum: + # - DEACTIVATED + # - CYCLIC + # - ROAMING + # validationBackup: + # type: string + # enum: + # - NO_DEVICE_CHECK + # - TYPE_COMPATIBLE_DEVICE_V1.1 + # - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + # - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE + # vendorId: + # type: integer + # minimum: 1 + # maximum: 65535 + # deviceId: + # type: integer + # minimum: 1 + # maximum: 16777215 + # portCycleTime: + # type: object + # required: + # - value + # - unit + # properties: + # value: + # type: integer + # minimum: 0 ## 0 means Freerunning + # maximum: 315 ## Step size 5ms + # unit: + # type: string + # enum: + # - ms + # trackNumber: + # type: integer + # minimum: 1 + # maximum: 5 + # slotNumber: + # type: integer + # minimum: 0 + # maximum: 7 + # slotType: + # type: string + # enum: + # - "SSLOT" + # - "DSLOT" + # maxRetry: + # type: integer + # minimum: 2 + # maximum: 31 + # imaTime: + # type: object + # required: + # - base + # - multiplier + # properties: + # base: + # type: string + # enum: + # - "1664us" + # - "5ms" + # - "1s" + # - "1min" + # multiplier: + # type: integer + # minimum: 1 + # maximum: 255 + # deviceTxPower: + # type: integer + # minimum: 0 + # maximum: 31 + # lowPowerDevice: + # type: string + # enum: + # - "NORMAL" + # - "LOW_POWER" + # maxPDSegLength: + # type: integer + # minimum: 0 + # maximum: 32 + # uniqueId: + # type: string + # deviceAlias: + # type: string + # example: + # portMode: CYCLIC + # validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + # vendorId: 888 + # deviceId: 1 + # portCycleTime: + # value: 0 + # unit: ms + # trackNumber: 5 + # slotNumber: 1 + # slotType: SSLOT + # maxRetry: 20 + # imaTime: + # base: 1664us + # multiplier: 60 + # deviceTxPower: 31 + # lowPowerDevice: NORMAL + # maxPDSegLength: 0 + # uniqueId: 03:78:00:00:01:32:50:60:46 + # deviceAlias: "Port_X01" - wirelessPortConfigurationPost: - properties: - portMode: - type: string - enum: - - DEACTIVATED - - CYCLIC - - ROAMING - validationBackup: - type: string - enum: - - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.1 - - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - vendorId: - type: integer - minimum: 1 - maximum: 65535 - deviceId: - type: integer - minimum: 1 - maximum: 16777215 - portCycleTime: - type: object - required: - - value - - unit - properties: - value: - type: integer - minimum: 0 ## 0 means Freerunning - maximum: 315 ## Step size 5ms - unit: - type: string - enum: - - ms - trackNumber: - type: integer - minimum: 1 - maximum: 5 - slotNumber: - type: integer - minimum: 0 - maximum: 7 - slotType: - type: string - enum: - - "SSLOT" - - "DSLOT" - maxRetry: - type: integer - minimum: 2 - maximum: 31 - imaTime: - type: object - required: - - base - - multiplier - properties: - base: - type: string - enum: - - "1664us" - - "5ms" - - "1s" - - "1min" - multiplier: - type: integer - minimum: 1 - maximum: 255 - deviceTxPower: - type: integer - minimum: 0 - maximum: 31 - lowPowerDevice: - type: string - enum: - - "NORMAL" - - "LOW_POWER" - maxPDSegLength: - type: integer - minimum: 0 - maximum: 32 - uniqueId: - type: string - example: - portMode: CYCLIC - validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - vendorId: 888 - deviceId: 1 - portCycleTime: - value: 0 ##Or FreeRunning - unit: ms - trackNumber: 5 - slotNumber: 1 - slotType: SSLOT - maxRetry: 20 - imaTime: - base: 1664us - multiplier: 60 - deviceTxPower: 31 - lowPowerDevice: NORMAL - maxPDSegLength: 0 - uniqueId: 03:78:00:00:01:32:50:60:46 + # wirelessPortConfigurationPost: # @todo wireles + # properties: + # portMode: + # type: string + # enum: + # - DEACTIVATED + # - CYCLIC + # - ROAMING + # validationBackup: + # type: string + # enum: + # - NO_DEVICE_CHECK + # - TYPE_COMPATIBLE_DEVICE_V1.1 + # - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + # - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE + # vendorId: + # type: integer + # minimum: 1 + # maximum: 65535 + # deviceId: + # type: integer + # minimum: 1 + # maximum: 16777215 + # portCycleTime: + # type: object + # required: + # - value + # - unit + # properties: + # value: + # type: integer + # minimum: 0 ## 0 means Freerunning + # maximum: 315 ## Step size 5ms + # unit: + # type: string + # enum: + # - ms + # trackNumber: + # type: integer + # minimum: 1 + # maximum: 5 + # slotNumber: + # type: integer + # minimum: 0 + # maximum: 7 + # slotType: + # type: string + # enum: + # - "SSLOT" + # - "DSLOT" + # maxRetry: + # type: integer + # minimum: 2 + # maximum: 31 + # imaTime: + # type: object + # required: + # - base + # - multiplier + # properties: + # base: + # type: string + # enum: + # - "1664us" + # - "5ms" + # - "1s" + # - "1min" + # multiplier: + # type: integer + # minimum: 1 + # maximum: 255 + # deviceTxPower: + # type: integer + # minimum: 0 + # maximum: 31 + # lowPowerDevice: + # type: string + # enum: + # - "NORMAL" + # - "LOW_POWER" + # maxPDSegLength: + # type: integer + # minimum: 0 + # maximum: 32 + # uniqueId: + # type: string + # example: + # portMode: CYCLIC + # validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + # vendorId: 888 + # deviceId: 1 + # portCycleTime: + # value: 0 ##Or FreeRunning + # unit: ms + # trackNumber: 5 + # slotNumber: 1 + # slotType: SSLOT + # maxRetry: 20 + # imaTime: + # base: 1664us + # multiplier: 60 + # deviceTxPower: 31 + # lowPowerDevice: NORMAL + # maxPDSegLength: 0 + # uniqueId: 03:78:00:00:01:32:50:60:46 portConfigurationPost: description: "Note: At least one of the mode, iqConfiguration, @@ -4863,7 +4916,12 @@ components: enum: - '1.0' - '1.1' - - type: object + parameterChecks: + type: integer + - type: object # empty object + additionalProperties: false + minProperties: 0 + maxProperties: 0 content: description: Base64 coded DS data Ojects. Max size = 2KB*1.33. type: string @@ -4978,13 +5036,19 @@ components: type: number parameterName: type: string + subindexAccessSupported: + type: boolean + description: only for complex parameters (records or arrays) required. Not allowed for simple parameters example: - - index: 0 - parameterName: Direct_Parameter_Page_1 - - index: 1 - parameterName: Direct_Parameter_Page_2 - - index: 2 - parameterName: System_Command + - index: 16 + parameterName: "Vendor_Name" + - index: 18 + parameterName: "Product_Name" + - index: 19 + parameterName: "ProductID" + - index: 60 + parameterName: "SSC_1_Param" + subindexAccessSupported: true deviceSubParametersGet: type: array items: @@ -5205,12 +5269,6 @@ components: description: Value format in response document schema: $ref: '#/components/schemas/format' - content: - name: content - in: query - description: Process data element(s) in respose document - schema: - $ref: '#/components/schemas/content' index: name: index in: path @@ -5251,102 +5309,102 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - 104: + "104": description: Fieldbus controller or another gateway protocol has claimed priority value: code: 104 message: Action locked by another client - 201: + "201": description: Error while parsing the incoming JSON object value: code: 201 message: JSON parsing failed - 202: + "202": description: Error while parsing a specific JSON value, e.g. a malformed IP address value: code: 202 message: JSON data value invalid - 203: + "203": description: e.g. string instead of number value: code: 203 message: JSON data type invalid - 204: + "204": value: code: 204 message: Enumeration value unknown - 205: + "205": description: Exceeds the minimum or maximum value value: code: 205 message: JSON data value out of range - 206: + "206": description: An array or string was accessed exceeding its maximum length value: code: 206 message: JSON data value out of bounds - 208: + "208": value: code: 208 message: POST or PUT request without content - 305: + "305": value: code: 305 message: Query parameter name invalid - 306: + "306": value: code: 306 message: Query parameter value invalid - 307: + "307": value: code: 307 message: Port is not configured to IO-Link - 311: + "311": value: code: 311 message: IO-Link parameter access error - 401: + "401": value: code: 401 message: Data storage mismatch - 501: + "501": value: code: 501 message: I/Q is not configured as DIGITAL_OUTPUT - 502: + "502": value: code: 502 message: C/Q is not configured as DIGITAL_OUTPUT - 503: + "503": value: code: 503 message: IO-Link Device has no output process data - 601: + "601": value: code: 601 message: IODD (representation) for this IO-Link device is not available - 603: + "603": value: code: 603 message: IODD upload failed. IODD XML invalid - 604: + "604": value: code: 604 message: IODD upload failed. CRC error - 605: + "605": value: code: 605 message: IODD upload failed. Parsing error - 701: + "701": value: code: 701 message: Data set incomplete - 702: + "702": description: whole data set is rejected value: code: 702 message: Data set not applicable - 703: + "703": description: whole data set is rejected value: code: 703 @@ -5358,7 +5416,7 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - 150: + "150": description: due to user management restrictions value: code: 140 @@ -5370,7 +5428,7 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - 150: + "150": description: due to user management restrictions value: code: 150 @@ -5382,41 +5440,41 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - 103: + "103": value: code: 103 message: Operation not supported - 301: + "301": description: e.g. wrong URL value: code: 301 message: Resource not found - 302: + "302": value: code: 302 message: masterNumber not found - 303: + "303": value: code: 303 message: portNumber not found - 304: + "304": value: code: 304 message: deviceAlias not found - 308: + "308": description: e.g. not connected or communication error value: code: 308 message: IO-Link Device is not accessible - 309: + "309": value: code: 309 message: IO-Link Parameter not found - 310: + "310": value: code: 310 message: IO-Link parameter access not supported by the Device - 312: + "312": value: code: 312 message: IO-Link parameter name is not unique @@ -5427,15 +5485,15 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - 101: + "101": value: code: 101 message: Internal server error - 102: + "102": value: code: 102 message: Internal communication error - 602: + "602": value: code: 602 message: IODD upload failed. Not enough memory @@ -5446,11 +5504,11 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - 105: + "105": value: code: 105 message: IODD feature not supported - 106: + "106": value: code: 106 message: MQTT feature not supported @@ -5461,7 +5519,7 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - 107: + "107": value: code: 107 message: 'Service temporarily unavailable' diff --git a/spectral.yaml b/spectral.yaml new file mode 100644 index 0000000..84e1da8 --- /dev/null +++ b/spectral.yaml @@ -0,0 +1,2 @@ +# Linting rules +extends: "spectral:oas" From 9a33450a8847addbd8bc51c1563b195afb1a7ac2 Mon Sep 17 00:00:00 2001 From: Benjamin Vervoort Date: Wed, 21 Sep 2022 10:28:56 +0200 Subject: [PATCH 012/279] remoce linter warnings --- JSON_for_IO-Link.yaml | 152 ++++++++++++++++++++---------------------- README.md | 7 ++ spectral.yaml | 4 +- 3 files changed, 81 insertions(+), 82 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index a39e295..52b7b2e 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2165,22 +2165,22 @@ paths: setData: iqValue: true 'Format=iodd, CQ in IO-Link (input and output), IQ in digital input': - value: - getData: - ioLink: - valid: true - value: - Distance: - value: 55 - Quality: - value: 12 - iqValue: true - setData: - ioLink: - valid: true - value: - Buzzer: - value: 5 + value: + getData: + ioLink: + valid: true + value: + Distance: + value: 55 + Quality: + value: 12 + iqValue: true + setData: + ioLink: + valid: true + value: + Buzzer: + value: 5 '400': # code 305, 306, 601 $ref: '#/components/responses/HTTP_400' '403': @@ -2379,14 +2379,11 @@ paths: $ref: '#/components/schemas/deviceParameterValueGetPost' examples: format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } + value: + - 0 + - 156 + - 125 + - 25 'format=iodd, simple type': value: value: 15.2 @@ -2424,14 +2421,12 @@ paths: $ref: '#/components/schemas/deviceParameterValueGetPost' examples: 'payload as byteArray': - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } + value: + value: + - 0 + - 156 + - 125 + - 25 'payload as iodd, simple type': value: value: 15.2 @@ -2637,18 +2632,15 @@ paths: $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' examples: format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } + value: + - 0 + - 156 + - 125 + - 25 format=iodd: value: - value: 15.2 - + Distance: + value: 15.2 '400': # code 305, 306, 307, 311, 601 $ref: '#/components/responses/HTTP_400' '403': @@ -2836,16 +2828,18 @@ paths: - identifier: index: 123 content: - - 15 - - 232 - - 22 + value: + - 15 + - 232 + - 22 - identifier: index: 233 subIndex: 2 content: - - 23 - - 149 - - 206 + value: + - 23 + - 149 + - 206 'write, format=iodd': value: direction: WRITE @@ -4929,22 +4923,25 @@ components: type: object properties: ioLink: - type: object - description: > - Process data in IO-Link mode - required: - - valid - - value - properties: - valid: - type: boolean - description: > - Process data validity - value: - oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' + description: Process data in IO-Link mode + allOf: + - type: object + required: + - valid + properties: + valid: + type: boolean + description: > + Process data validity + - type: object + required: + - value + properties: + value: + oneOf: + - $ref: '#/components/schemas/deviceByteArrayTypeValue' + - $ref: '#/components/schemas/deviceSimpleTypeValue' + - $ref: '#/components/schemas/deviceComplexTypeValue' description: > Process data value cqValue: @@ -4995,11 +4992,6 @@ components: deviceProcessDataValuePost: $ref: '#/components/schemas/processDataValue' deviceByteArrayTypeValue: - type: object - required: - - value - properties: - value: type: array description: The value in byteArray format. items: @@ -5007,23 +4999,20 @@ components: minimum: 0 maximum: 255 deviceSimpleTypeValue: - type: object - properties: - value: - oneOf: - - type: boolean - - type: string - - type: number - description: The value (with simple type) in iodd format. - required: - - value + oneOf: + - type: boolean + description: The value (with simple type) in iodd format. + - type: string + description: The value (with simple type) in iodd format. + - type: number + description: The value (with simple type) in iodd format. deviceComplexTypeValue: type: object minProperties: 1 maxProperties: 255 description: The value (with complex type) in iodd format. - additionalProperties: - $ref: '#/components/schemas/deviceSimpleTypeValue' + #additionalProperties: # @todo schema "processDataValue" is not correct, additionalProperties deactivated to suppress warnings + # $ref: '#/components/schemas/deviceSimpleTypeValue' deviceParametersGet: type: array items: @@ -5077,6 +5066,7 @@ components: oneOf: - $ref: '#/components/schemas/deviceByteArrayTypeValue' - $ref: '#/components/schemas/deviceSimpleTypeValue' + - $ref: '#/components/schemas/deviceComplexTypeValue' deviceBlockParameterizationPost: type: object required: diff --git a/README.md b/README.md index 08dbea9..838ce5c 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,10 @@ JSON serialization for IO-Link data. ## Branches: - master: released version (1.0) - version-1-x: Draft for the next version + +## Linting + +The Linting tool ["Spectral"](https://stoplight.io/open-source/spectral) is used for automatic validation of the specifications. +You can run it locally with the command: + +```docker run --rm -v ${PWD}:/usr/src/spectral stoplight/spectral lint -r spectral.yaml JSON_for_IO-Link.yaml ``` diff --git a/spectral.yaml b/spectral.yaml index 84e1da8..55ada3c 100644 --- a/spectral.yaml +++ b/spectral.yaml @@ -1,2 +1,4 @@ # Linting rules -extends: "spectral:oas" +extends: spectral:oas +rules: + path-params: off # to disbale error: path-params Paths "/devices/{deviceAlias}/parameters/{index}/value" and "/devices/{deviceAlias}/parameters/{parameterName}/value" must not be equivalent. From 9590ed2dba5ede023437f9f827108b50aa064342 Mon Sep 17 00:00:00 2001 From: Alex Krizsan Date: Tue, 27 Sep 2022 12:58:45 +0200 Subject: [PATCH 013/279] Adding constrains: length and value. Type corrections. --- JSON_for_IO-Link.yaml | 164 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 152 insertions(+), 12 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 6710417..ed33a47 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1826,6 +1826,7 @@ paths: application/json: schema: type: array + minItems: 1 items: type: object required: @@ -1840,6 +1841,8 @@ paths: type: string deviceAlias: type: string + minLength: 1 + maxLength: 32 example: - portNumber: 1 statusInfo: "DEVICE_ONLINE" @@ -2394,6 +2397,8 @@ paths: properties: deviceAlias: type: string + minLength: 1 + maxLength: 32 masterNumber: type: integer minimum: 1 @@ -4963,6 +4968,7 @@ components: properties: value: type: number + minimum: 0 unit: type: string enum: @@ -5023,17 +5029,21 @@ components: - DEVICES default: ALL eventMasterNumber: - type: number + type: integer minimum: 1 eventPortNumber: type: integer minimum: 1 eventdeviceAlias: type: string + minLength: 1 + maxLength: 32 eventTop: - type: number + type: integer + minimum: 1 eventBottom: - type: number + type: integer + minimum: 1 identificationMasters: type: array items: @@ -5042,12 +5052,16 @@ components: - masterNumber properties: masterNumber: - type: number + type: integer minimum: 1 serialNumber: type: string + minLength: 1 + maxLength: 16 locationTag: type: string + minLength: 1 + maxLength: 32 example: - masterNumber: 1 serialNumber: A12345678B @@ -5065,6 +5079,8 @@ components: properties: vendorName: type: string + minLength: 1 + maxLength: 64 vendorId: type: integer minimum: 1 @@ -5083,26 +5099,46 @@ components: - Wireless_Master serialNumber: type: string + minLength: 1 + maxLength: 16 orderCode: type: string + minLength: 1 + maxLength: 64 productName: type: string + minLength: 1 + maxLength: 64 productId: type: string + minLength: 1 + maxLength: 64 hardwareRevision: type: string + minLength: 1 + maxLength: 64 firmwareRevision: type: string + minLength: 1 + maxLength: 64 vendorUrl: type: string + format: uri manualUrl: type: string + format: uri applicationSpecificTag: type: string + minLength: 1 + maxLength: 32 locationTag: type: string + minLength: 1 + maxLength: 32 functionTag: type: string + minLength: 1 + maxLength: 32 example: vendorName: Vendor GmbH vendorId: 26 @@ -5124,10 +5160,16 @@ components: properties: applicationSpecificTag: type: string + minLength: 1 + maxLength: 32 locationTag: type: string + minLength: 1 + maxLength: 32 functionTag: type: string + minLength: 1 + maxLength: 32 gatewayCapabilitiesGet: required: - ioddSupported @@ -5158,8 +5200,10 @@ components: properties: value: type: number + minimum: 0 unit: type: string + minLength: 1 example: numberOfPorts: 8 maxPowerSupply: @@ -5208,6 +5252,8 @@ components: This property is mandatory for IO-Link Device Events. Should not be used for other log entries. type: string + minLength: 1 + maxLength: 32 eventObject: type: object properties: @@ -5215,7 +5261,9 @@ components: description: >- IO-Link Port EventCode or IO-Link Device EventCode. This property is mandatory for IO-Link Port Events or IO-Link Device Events. - type: number + type: integer + minimum: 0 + maximum: 65535 mode: description: >- IO-Link Port Event Mode or IO-Link Device EventMode. This property @@ -5227,6 +5275,7 @@ components: - DISAPPEARS text: type: string + minLength: 1 gatewayEventsGet: type: array items: @@ -5247,6 +5296,7 @@ components: $ref: '#/components/schemas/eventObject' blockParameterizationPostParametersRequest: type: array + minItems: 1 items: type: object required: @@ -5259,17 +5309,25 @@ components: - index properties: index: - type: number + type: integer + minimum: 0 + maximum: 65535 subIndex: - type: number + type: integer + minimum: 0 + maximum: 255 - type: object required: - parameterName properties: parameterName: type: string + minLength: 1 + maxLength: 71 subParameterName: type: string + minLength: 1 + maxLength: 71 content: $ref: '#/components/schemas/deviceParameterValueGetPost' deviceBlockParameterizationPostParametersAnswer: @@ -5287,17 +5345,25 @@ components: - index properties: index: - type: number + type: integer + minimum: 0 + maximum: 65535 subIndex: - type: number + type: integer + minimum: 0 + maximum: 255 - type: object required: - parameterName properties: parameterName: type: string + minLength: 1 + maxLength: 71 subParameterName: type: string + minLength: 1 + maxLength: 71 result: type: object required: @@ -5359,20 +5425,28 @@ components: properties: macAddress: type: string + pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' serialNumber: type: string + maxLength: 16 productId: type: string + maxLength: 64 vendorName: type: string + maxLength: 64 productName: type: string + maxLength: 64 hardwareRevision: type: string + maxLength: 64 firmwareRevision: type: string + maxLength: 64 productInstanceUri: type: string + format: uri example: macAddress: '00:02:72:CE:A6:49' serialNumber: 'C134A746' @@ -5389,6 +5463,7 @@ components: properties: ethIpv4: type: array + minItems: 1 items: type: object required: @@ -5398,10 +5473,12 @@ components: $ref: '#/components/schemas/ipConfiguration' ipAddress: type: string + format: ipv4 subnetMask: type: string standardGateway: type: string + format: ipv4 example: ethIpv4: - ipConfiguration: MANUAL @@ -5587,6 +5664,7 @@ components: type: array items: type: integer + minimum: 1 deviceIdentificationGet: required: - vendorId @@ -5610,27 +5688,49 @@ components: vendorName: description: Mandatory if the Device suports the ISDU. type: string + minLength: 1 + maxLength: 64 vendorText: type: string + minLength: 1 + maxLength: 64 productName: description: Mandatory if the Device suports the ISDU. type: string + minLength: 1 + maxLength: 64 productId: type: string + minLength: 1 + maxLength: 64 productText: type: string + minLength: 1 + maxLength: 64 serialNumber: type: string + minLength: 1 + maxLength: 16 hardwareRevision: type: string + minLength: 1 + maxLength: 64 firmwareRevision: type: string + minLength: 1 + maxLength: 64 applicationSpecificTag: type: string + minLength: 1 + maxLength: 32 locationTag: type: string + minLength: 1 + maxLength: 32 functionTag: type: string + minLength: 1 + maxLength: 32 example: vendorId: 26 deviceId: 42 @@ -5651,12 +5751,18 @@ components: properties: applicationSpecificTag: type: string + minLength: 1 + maxLength: 32 example: Fallback light switch at the end of the belt locationTag: type: string + minLength: 1 + maxLength: 32 example: Down under functionTag: type: string + minLength: 1 + maxLength: 32 example: Check start of belt portCapabilitiesGet: type: object @@ -5672,8 +5778,10 @@ components: properties: value: type: number + minimum: 0 unit: type: string + minLength: 1 portType: type: string enum: @@ -5743,6 +5851,8 @@ components: - DIGITAL_OUTPUT deviceAlias: type: string + minLength: 1 + maxLength: 32 example: mode: IOLINK_MANUAL validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 @@ -5808,6 +5918,8 @@ components: - POWER_2 deviceAlias: type: string + minLength: 1 + maxLength: 32 dataStorageGetPost: description: >- In case the Data Storage is empty, the header object is empty and the @@ -5842,6 +5954,7 @@ components: content: description: Base64 coded DS data Ojects. Max size = 2KB*1.33. type: string + format: byte processDataValue: type: object properties: @@ -5920,7 +6033,7 @@ components: type: array description: The value in byteArray format. items: - type: number + type: integer minimum: 0 maximum: 255 deviceSimpleTypeValue: @@ -5950,9 +6063,13 @@ components: - parameterName properties: index: - type: number + type: integer + minimum: 0 + maximum: 65535 parameterName: type: string + minLength: 1 + maxLength: 71 example: - index: 0 parameterName: Direct_Parameter_Page_1 @@ -5969,9 +6086,13 @@ components: - subParameterName properties: subIndex: - type: number + type: integer + minimum: 1 + maximum: 255 subParameterName: type: string + minLength: 1 + maxLength: 71 example: - subIndex: 1 subParameterName: Master_command @@ -6050,8 +6171,11 @@ components: properties: code: type: integer + minimum: 0 + maximum: 65535 message: type: string + minLength: 1 errorObject: type: object required: @@ -6060,8 +6184,10 @@ components: properties: code: type: integer + minimum: 0 message: type: string + minLength: 1 iolinkError: $ref: '#/components/schemas/iolinkErrorObject' parameters: @@ -6072,6 +6198,8 @@ components: required: false schema: type: integer + minimum: 0 + maximum: 65535 deviceId: name: deviceId in: query @@ -6079,6 +6207,8 @@ components: required: false schema: type: integer + minimum: 1 + maximum: 16777215 revision: name: revision in: query @@ -6123,6 +6253,8 @@ components: the portNumber. schema: type: string + minLength: 1 + maxLength: 32 required: true eventOrigin: name: origin @@ -6182,6 +6314,8 @@ components: description: Index of ISDU variable schema: type: integer + minimum: 0 + maximum: 65535 required: true subindex: name: subindex @@ -6189,6 +6323,8 @@ components: description: Subindex of ISDU variable with the given index schema: type: integer + minimum: 0 + maximum: 255 required: true parameterName: name: parameterName @@ -6198,6 +6334,8 @@ components: to the JSON mapping specification. schema: type: string + minLength: 1 + maxLength: 71 required: true subParameterName: name: subParameterName @@ -6207,6 +6345,8 @@ components: according to the JSON mapping specification. schema: type: string + minLength: 1 + maxLength: 71 required: true responses: errorResponse: From f9e56bd3d3303fcf4f7074b4af34ff317e51e11e Mon Sep 17 00:00:00 2001 From: Alex Krizsan Date: Tue, 27 Sep 2022 13:47:11 +0200 Subject: [PATCH 014/279] Resolving processDataValue schema problem. --- JSON_for_IO-Link.yaml | 56 +++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 6710417..5463635 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5912,28 +5912,18 @@ components: deviceProcessDataValuePost: $ref: '#/components/schemas/processDataValue' deviceByteArrayTypeValue: - type: object - required: - - value - properties: - value: - type: array - description: The value in byteArray format. - items: - type: number - minimum: 0 - maximum: 255 + type: array + description: The value in byteArray format. + items: + type: integer + minimum: 0 + maximum: 255 deviceSimpleTypeValue: - type: object - properties: - value: - oneOf: - - type: boolean - - type: string - - type: number - description: The value (with simple type) in iodd format. - required: - - value + oneOf: + - type: boolean + - type: string + - type: number + description: The value (with simple type) in iodd format. deviceComplexTypeValue: type: object minProperties: 1 @@ -5980,14 +5970,24 @@ components: - subIndex: 3 subParameterName: Minimum_cycle_time deviceParameterValueGetPost: - oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' + type: object + properties: + value: + oneOf: + - $ref: '#/components/schemas/deviceByteArrayTypeValue' + - $ref: '#/components/schemas/deviceSimpleTypeValue' + - $ref: '#/components/schemas/deviceComplexTypeValue' + required: + - value deviceParameterSubindexValueGetPost: - oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' + type: object + properties: + value: + oneOf: + - $ref: '#/components/schemas/deviceByteArrayTypeValue' + - $ref: '#/components/schemas/deviceSimpleTypeValue' + required: + - value deviceBlockParameterizationPost: type: object required: From eb24ccb12c7b30dd6ed2bc53d2c582ed0f1c1492 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Tue, 27 Sep 2022 16:23:56 +0200 Subject: [PATCH 015/279] Update README.md Correction and Headerline added --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2406115..8adc349 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,10 @@ JSON serialization for IO-Link data. ## Branches: - master: released version (1.0) - version-1-x: Draft for the next version - + +## Open in Swagger Editor: https://editor.swagger.io/?url=https://raw.githubusercontent.com/iolinkcommunity/JSON_for_IO-Link/version-1-x/JSON_for_IO-Link.yaml https://studio.asyncapi.com/?url=https://raw.githubusercontent.com/iolinkcommunity/JSON_for_IO-Link/version-1-x/MQTT_for_IO-Link.yaml -======= ## Linting From b188a3359c5454e72fc3023637a62d08de332882 Mon Sep 17 00:00:00 2001 From: fm-sick <39399510+fm-sick@users.noreply.github.com> Date: Thu, 29 Sep 2022 16:52:56 +0200 Subject: [PATCH 016/279] Revert "Creating iqConfigurationType schema and replacing usages with reference." --- JSON_for_IO-Link.yaml | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 025eb39..6710417 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5689,13 +5689,6 @@ components: value: 0.3 unit: A portType: CLASS_A - iqConfigurationType: - type: string - enum: - - NOT_SUPPORTED - - DIGITAL_INPUT - - DIGITAL_OUTPUT - - POWER_2 portConfigurationGet: type: object required: @@ -5743,13 +5736,17 @@ components: minimum: 1 maximum: 16777215 iqConfiguration: - $ref : '#/components/schemas/iqConfigurationType' + type: string + enum: + - NOT_SUPPORTED + - DIGITAL_INPUT + - DIGITAL_OUTPUT deviceAlias: type: string example: mode: IOLINK_MANUAL validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - iqConfiguration: DIGITAL_INPUT + iqConfiguration: ANALOG_INPUT cycleTime: value: 2.3 unit: ms @@ -5801,7 +5798,14 @@ components: minimum: 1 maximum: 16777215 iqConfiguration: - $ref : '#/components/schemas/iqConfigurationType' + type: string + enum: + - NOT_SUPPORTED + - DIGITAL_INPUT + - DIGITAL_OUTPUT + - ANALOG_INPUT + - ANALOG_OUTPUT + - POWER_2 deviceAlias: type: string dataStorageGetPost: From 071d54c8a21fa6c0f63f075c20342561c4245ea1 Mon Sep 17 00:00:00 2001 From: Alex Krizsan Date: Wed, 5 Oct 2022 12:59:03 +0200 Subject: [PATCH 017/279] Revert "cleanup gateway block, add descriptions" This reverts commit 08e31b53623f714657148ea68219fa467058374f. --- JSON_for_IO-Link.yaml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 5463635..41162cb 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -244,8 +244,7 @@ paths: get: tags: - gateway - summary: Read the network configuration of the Gateway. - description: Read the actual active configuration of the IO-Link Gateway. The Gateway may support multiple IPv4 interfaces + summary: Read the network configuration of the Gateway . responses: '200': description: Successful operation @@ -265,6 +264,9 @@ paths: value: ethIpv4: - ipConfiguration: DHCP + ipAddress: 192.168.100.5 + subnetMask: 255.255.255.0 + standardGateway: 192.168.100.1 Multiple ethernet interfaces: value: ethIpv4: @@ -277,6 +279,9 @@ paths: subnetMask: 255.255.255.0 standardGateway: 192.168.2.1 - ipConfiguration: DHCP + ipAddress: 192.168.200.7 + subnetMask: 255.255.255.0 + standardGateway: 192.168.200.1 '403': description: Forbidden content: @@ -415,7 +420,6 @@ paths: tags: - gateway summary: Reset the Gateway including all Masters. Optional. - description: Invoke a reset of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog responses: '204': description: Successful operation @@ -457,7 +461,6 @@ paths: tags: - gateway summary: Reboot the Gateway including all Masters. Optional. - description: Invoke a reboot of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog responses: '204': description: Successful operation @@ -499,9 +502,6 @@ paths: tags: - gateway summary: Read the EventLog containing all events from Gateway, Masters, Ports and Devices. - description: > - Each Gateway shall have an Event Log object containing the events of the devices, ports and - the masters. The content of the Event Log can be read by getting the object “Gateway Event Log” parameters: - $ref: '#/components/parameters/eventOrigin' - $ref: '#/components/parameters/eventMasterNumber' @@ -4974,8 +4974,6 @@ components: enum: - MANUAL - DHCP - - AUTO_IP - - DCP processData: allOf: - type: object From 90013384cf7ceab91a0b234a22583f1cf060dfe2 Mon Sep 17 00:00:00 2001 From: Alex Krizsan Date: Wed, 5 Oct 2022 13:04:48 +0200 Subject: [PATCH 018/279] Revert "cleanup gateway block, add descriptions" This reverts commit 08e31b53623f714657148ea68219fa467058374f. --- JSON_for_IO-Link.yaml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index ed33a47..e04e8c7 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -244,8 +244,7 @@ paths: get: tags: - gateway - summary: Read the network configuration of the Gateway. - description: Read the actual active configuration of the IO-Link Gateway. The Gateway may support multiple IPv4 interfaces + summary: Read the network configuration of the Gateway . responses: '200': description: Successful operation @@ -265,6 +264,9 @@ paths: value: ethIpv4: - ipConfiguration: DHCP + ipAddress: 192.168.100.5 + subnetMask: 255.255.255.0 + standardGateway: 192.168.100.1 Multiple ethernet interfaces: value: ethIpv4: @@ -277,6 +279,9 @@ paths: subnetMask: 255.255.255.0 standardGateway: 192.168.2.1 - ipConfiguration: DHCP + ipAddress: 192.168.200.7 + subnetMask: 255.255.255.0 + standardGateway: 192.168.200.1 '403': description: Forbidden content: @@ -415,7 +420,6 @@ paths: tags: - gateway summary: Reset the Gateway including all Masters. Optional. - description: Invoke a reset of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog responses: '204': description: Successful operation @@ -457,7 +461,6 @@ paths: tags: - gateway summary: Reboot the Gateway including all Masters. Optional. - description: Invoke a reboot of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog responses: '204': description: Successful operation @@ -499,9 +502,6 @@ paths: tags: - gateway summary: Read the EventLog containing all events from Gateway, Masters, Ports and Devices. - description: > - Each Gateway shall have an Event Log object containing the events of the devices, ports and - the masters. The content of the Event Log can be read by getting the object “Gateway Event Log” parameters: - $ref: '#/components/parameters/eventOrigin' - $ref: '#/components/parameters/eventMasterNumber' @@ -4980,8 +4980,6 @@ components: enum: - MANUAL - DHCP - - AUTO_IP - - DCP processData: allOf: - type: object From baf38dbb18c5099d38c2adcb96b6c3913f72c6c0 Mon Sep 17 00:00:00 2001 From: Alex Krizsan Date: Thu, 20 Oct 2022 16:27:33 +0200 Subject: [PATCH 019/279] parameterChecksum property correction. --- JSON_for_IO-Link.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index e9872a4..82a2dac 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5009,8 +5009,10 @@ components: enum: - '1.0' - '1.1' - parameterChecks: + parameterChecksum: type: integer + minimum: 0 + maximum: 4294967296 - type: object # empty object additionalProperties: false minProperties: 0 From 4994f587a18397fa63fb1d57033c2b1cfa34daf5 Mon Sep 17 00:00:00 2001 From: Benjamin Vervoort Date: Mon, 24 Oct 2022 16:39:15 +0200 Subject: [PATCH 020/279] update codeowners --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 75e8d9a..c9f4455 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,4 +2,4 @@ # the repo. Unless a later match takes precedence, # following users will be requested for # review when someone opens a pull request. -* @fm-sick @vervoortb @haliCR1 @BaRu-ifm @julian-st @lorandmolnar @mrentsch65 +* @fm-sick @vervoortb @haliCR1 @BaRu-ifm @julian-st @lorandmolnar @mrentsch65 @roeseko From afe8f53de376f2758b7d9bf3d119da49bfa61aea Mon Sep 17 00:00:00 2001 From: Benjamin Vervoort Date: Mon, 24 Oct 2022 16:39:28 +0200 Subject: [PATCH 021/279] add action trigger --- .github/workflows/linting.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 608c9b0..beea1d4 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -2,6 +2,7 @@ name: Lint RestAPI with Spectral on: - push + - pull_request jobs: build: From 2375bf3402ca5e584d702340360a2d0b2e62f938 Mon Sep 17 00:00:00 2001 From: Benjamin Vervoort Date: Mon, 24 Oct 2022 16:39:39 +0200 Subject: [PATCH 022/279] fix linting errors --- JSON_for_IO-Link.yaml | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 799d0ac..d53e782 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1085,7 +1085,7 @@ paths: examples: All optional fiels: value: - applicationSpecificTag: Fallback reader at the end of the belt + applicationSpecificTag: Fallback reader at the end locationTag: Down under functionTag: Code reading responses: @@ -1332,20 +1332,19 @@ paths: type: string minLength: 1 maxLength: 32 - example: - scanResult: - - slotType: SSLOT - revisionId: 1.1 - uniqueId: 03:78:00:00:01:32:50:60:46 - lastSeen: "2019-02-19T08:02:51.786Z" - - slotType: DSLOT - revisionId: 1.1 - uniqueId: 03:78:00:00:01:32:50:60:47 - lastSeen: "2019-02-19T08:02:51.786Z" - - slotType: SSLOT - revisionId: 1.1 - uniqueId: 03:78:00:00:01:32:50:60:48 - lastSeen: "2019-02-19T08:02:51.786Z" + example: + - slotType: SSLOT + revisionId: "1.1" + uniqueId: 03:78:00:00:01:32:50:60:46 + lastSeen: "2019-02-19T08:02:51.786Z" + - slotType: DSLOT + revisionId: "1.1" + uniqueId: 03:78:00:00:01:32:50:60:47 + lastSeen: "2019-02-19T08:02:51.786Z" + - slotType: SSLOT + revisionId: "1.1" + uniqueId: 03:78:00:00:01:32:50:60:48 + lastSeen: "2019-02-19T08:02:51.786Z" '403': $ref: '#/components/responses/HTTP_403' '404': @@ -2122,7 +2121,7 @@ paths: examples: All optional fields: value: - applicationSpecificTag: Fallback light switch at the end of the belt + applicationSpecificTag: Fallback light switch locationTag: Down under functionTag: Check start of belt responses: @@ -3239,7 +3238,7 @@ components: productInstanceUri: 'http://www.io-link.com/PROD123456/IOLWM123456' gsdUri: 'https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml' manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' - applicationSpecificTag: Fallback reader at the end of the belt + applicationSpecificTag: Fallback reader locationTag: Down under functionTag: Code reading identificationPost: @@ -3784,7 +3783,7 @@ components: vendorText: Sensor Intelligence. productName: SLG-2 productId: SLG-2 - productText: The SLG-2 IO-Link device is a smart lightgrid for space sensitive applications. + productText: The SLG-2 IO-Link device is a smart lightgrid serialNumber: Serial123456 hardwareRevision: 3.2.1.444R firmwareRevision: 3.2.1.888R @@ -3793,7 +3792,7 @@ components: ioddUri: 'https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1' # 'https://ioddfinder.io-link.com/api/vendors/26/iodds/11541/files/zip/rated' # 'https://ioddfinder.io-link.com/productvariants/search/32872' - applicationSpecificTag: Fallback light switch at the end of the belt + applicationSpecificTag: Fallback light switch locationTag: Down under functionTag: Check end of belt portIdentificationPost: @@ -3803,7 +3802,7 @@ components: type: string minLength: 1 maxLength: 32 - example: Fallback light switch at the end of the belt + example: Fallback light switch locationTag: type: string minLength: 1 From f092eaf7385bdcf124161d0774b944d4b894aa1d Mon Sep 17 00:00:00 2001 From: Benjamin Vervoort Date: Mon, 24 Oct 2022 17:21:39 +0200 Subject: [PATCH 023/279] fix linting errors --- JSON_for_IO-Link.yaml | 73 ++++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index d53e782..8d10296 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -296,7 +296,7 @@ paths: tags: - gateway summary: Read the configuration of the Gateway. - description: Read the configuration of the Gateway. + description: Read the actual active configuration of the IO-Link Gateway. The Gateway may support multiple IPv4 interfaces responses: '200': description: Successful operation @@ -390,7 +390,7 @@ paths: tags: - gateway summary: Reset the Gateway including all Masters. Optional. - description: Reset the Gateway including all Masters. Optional. + description: Invoke a reset of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog. responses: '204': description: Successful operation @@ -407,7 +407,7 @@ paths: tags: - gateway summary: Reboot the Gateway including all Masters. Optional. - description: Reboot the Gateway including all Masters. Optional. + description: Invoke a reboot of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog responses: '204': description: Successful operation @@ -424,7 +424,8 @@ paths: tags: - gateway summary: Read the EventLog containing all events from Gateway, Masters, Ports and Devices. - description: Read the EventLog containing all events from Gateway, Masters, Ports and Devices. + description: Each Gateway shall have an Event Log object containing the events of the devices, ports and + the masters. The content of the Event Log can be read by getting the object "Gateway Event Log" parameters: - $ref: '#/components/parameters/eventOrigin' - $ref: '#/components/parameters/eventMasterNumber' @@ -2379,20 +2380,22 @@ paths: $ref: '#/components/schemas/deviceParameterValueGetPost' examples: format=byteArray: - value: - - 0 - - 156 - - 125 - - 25 + value: + value: + - 0 + - 156 + - 125 + - 25 'format=iodd, simple type': value: value: 15.2 'format=iodd, complex type': value: - Distance: - value: 15 - Quality: - value: 12 + value: + Distance: + value: 15 + Quality: + value: 12 '400': # code 305, 306, 307, 311, 601 $ref: '#/components/responses/HTTP_400' '403': @@ -2432,10 +2435,11 @@ paths: value: 15.2 'payload as iodd, complex type': value: - Distance: - value: 15 - Quality: - value: 12 + value: + Distance: + value: 15 + Quality: + value: 12 responses: '204': description: Successful operation @@ -2485,10 +2489,11 @@ paths: value: 15.2 'format=iodd, complex type': value: - Distance: - value: 15 - Quality: - value: 12 + value: + Distance: + value: 15 + Quality: + value: 12 '400': # code 305, 306, 307, 311, 601 $ref: '#/components/responses/HTTP_400' @@ -2532,10 +2537,11 @@ paths: value: 15.2 'format=iodd, complex type': value: - Distance: - value: 15 - Quality: - value: 12 + value: + Distance: + value: 15 + Quality: + value: 12 responses: '204': description: Successful operation @@ -2633,14 +2639,16 @@ paths: examples: format=byteArray: value: - - 0 - - 156 - - 125 - - 25 + value: + - 0 + - 156 + - 125 + - 25 format=iodd: value: - Distance: - value: 15.2 + value: + Distance: + value: 15.2 '400': # code 305, 306, 307, 311, 601 $ref: '#/components/responses/HTTP_400' '403': @@ -5012,7 +5020,7 @@ components: content: description: Base64 coded DS data Ojects. Max size = 2KB*1.33. type: string - format: byte + # format: byte processDataValue: type: object properties: @@ -5174,6 +5182,7 @@ components: oneOf: - $ref: '#/components/schemas/deviceByteArrayTypeValue' - $ref: '#/components/schemas/deviceSimpleTypeValue' + - $ref: '#/components/schemas/deviceComplexTypeValue' required: - value deviceBlockParameterizationPost: From 12b75346fd2a0b5947d6a4ee334ac5dc832dc0f5 Mon Sep 17 00:00:00 2001 From: Julian Ste <31321934+julian-st@users.noreply.github.com> Date: Mon, 7 Nov 2022 13:54:42 +0100 Subject: [PATCH 024/279] Added unit to processdata and parameter values Added unit to processdata and parameter values that are numbers. Added unit to the specification and the existing examples. --- JSON_for_IO-Link.yaml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 8d10296..e2c0393 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2173,6 +2173,7 @@ paths: value: Distance: value: 55 + unit: "cm" Quality: value: 12 iqValue: true @@ -2275,6 +2276,7 @@ paths: value: Distance: value: 55 + unit: "cm" Quality: value: 12 iqValue: true @@ -2389,11 +2391,13 @@ paths: 'format=iodd, simple type': value: value: 15.2 + unit: "cm" 'format=iodd, complex type': value: value: Distance: value: 15 + unit: "cm" Quality: value: 12 '400': # code 305, 306, 307, 311, 601 @@ -2433,11 +2437,13 @@ paths: 'payload as iodd, simple type': value: value: 15.2 + unit: "cm" 'payload as iodd, complex type': value: value: Distance: value: 15 + unit: "cm" Quality: value: 12 responses: @@ -2487,11 +2493,13 @@ paths: 'format=iodd, simple type': value: value: 15.2 + unit: "cm" 'format=iodd, complex type': value: value: Distance: value: 15 + unit: "cm" Quality: value: 12 @@ -2535,11 +2543,13 @@ paths: 'format=iodd, simple type': value: value: 15.2 + unit: "cm" 'format=iodd, complex type': value: value: Distance: value: 15 + unit: "cm" Quality: value: 12 responses: @@ -2649,6 +2659,7 @@ paths: value: Distance: value: 15.2 + unit: "cm" '400': # code 305, 306, 307, 311, 601 $ref: '#/components/responses/HTTP_400' '403': @@ -2689,6 +2700,7 @@ paths: format=iodd: value: value: 15.2 + unit: "cm" responses: '204': description: Successful operation @@ -2737,6 +2749,7 @@ paths: format=iodd: value: value: 15.2 + unit: "cm" '400': # code 305, 306, 307, 311, 601 $ref: '#/components/responses/HTTP_400' @@ -2779,6 +2792,7 @@ paths: format=iodd: value: value: 15.2 + unit: "cm" responses: '204': description: Successful operation @@ -5044,6 +5058,8 @@ components: - $ref: '#/components/schemas/deviceByteArrayTypeValue' - $ref: '#/components/schemas/deviceSimpleTypeValue' - $ref: '#/components/schemas/deviceComplexTypeValue' + unit: + $ref: '#/components/schemas/deviceSimpleTypeValueUnit' description: > Process data value cqValue: @@ -5106,6 +5122,9 @@ components: - type: string - type: number description: The value (with simple type) in iodd format. + deviceSimpleTypeValueUnit: + type: string + description: The unit for the simple type number value in SI format. deviceComplexTypeValue: type: object minProperties: 1 @@ -5173,6 +5192,8 @@ components: - $ref: '#/components/schemas/deviceByteArrayTypeValue' - $ref: '#/components/schemas/deviceSimpleTypeValue' - $ref: '#/components/schemas/deviceComplexTypeValue' + unit: + $ref: '#/components/schemas/deviceSimpleTypeValueUnit' required: - value deviceParameterSubindexValueGetPost: @@ -5183,6 +5204,8 @@ components: - $ref: '#/components/schemas/deviceByteArrayTypeValue' - $ref: '#/components/schemas/deviceSimpleTypeValue' - $ref: '#/components/schemas/deviceComplexTypeValue' + unit: + $ref: '#/components/schemas/deviceSimpleTypeValueUnit' required: - value deviceBlockParameterizationPost: From 4b2d9a93d7823f176476940509236347379878f1 Mon Sep 17 00:00:00 2001 From: Julian Ste <31321934+julian-st@users.noreply.github.com> Date: Wed, 9 Nov 2022 13:33:05 +0100 Subject: [PATCH 025/279] Reintroduced additionalProperties Reintroduced additionalProperties for processDataValue --- JSON_for_IO-Link.yaml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index e2c0393..cc140ee 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5122,6 +5122,16 @@ components: - type: string - type: number description: The value (with simple type) in iodd format. + deviceComplexTypeEntry: + type: object + description: The entry for a complex iodd type + required: + - value + properties: + value: + $ref: '#/components/schemas/deviceSimpleTypeValue' + unit: + $ref: '#/components/schemas/deviceSimpleTypeValueUnit' deviceSimpleTypeValueUnit: type: string description: The unit for the simple type number value in SI format. @@ -5130,8 +5140,8 @@ components: minProperties: 1 maxProperties: 255 description: The value (with complex type) in iodd format. - #additionalProperties: # @todo schema "processDataValue" is not correct, additionalProperties deactivated to suppress warnings - # $ref: '#/components/schemas/deviceSimpleTypeValue' + additionalProperties: + $ref: '#/components/schemas/deviceComplexTypeEntry' deviceParametersGet: type: array items: From e76ec63c6ffe52e749fc6d9232875112006ab164 Mon Sep 17 00:00:00 2001 From: roeseko <95340986+roeseko@users.noreply.github.com> Date: Fri, 18 Nov 2022 13:32:46 +0100 Subject: [PATCH 026/279] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 8adc349..3a7a57d 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ JSON serialization for IO-Link data. +## Contribution + +In order to raise a bugfix, improvement or change/feature request file an issue. This issue will then be discussed by the community and the change can be done via pull request. Minor changes like typing errors can be fixed directly by a pull request and does not require opening an issue. + ## Branches: - master: released version (1.0) - version-1-x: Draft for the next version From b56d66a47e77a4ff4190511720c1fa9fa093b83d Mon Sep 17 00:00:00 2001 From: SebastianHag <119063546+SebastianHag@users.noreply.github.com> Date: Mon, 28 Nov 2022 11:04:29 +0100 Subject: [PATCH 027/279] Updated JSON_for_IO-Link.yaml for IO-Link Wireless Updated IO-Link Wireless to version 1.1.3 based on SMI commands. Issue: Wireless Changes should be included in the yaml #67 --- JSON_for_IO-Link.yaml | 2060 +++++++++++++++++------------------------ 1 file changed, 868 insertions(+), 1192 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index cc140ee..ddada61 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -55,8 +55,6 @@ tags: description: Access to the IODDs - name: masters description: Access to parameters of the IO-Link master itself - - name: tracks - description: Access to the tracks (radios) of the IO-Link wireless master - name: ports description: Access to the IO-Link ports of the IO-Link master - name: devices @@ -64,6 +62,8 @@ tags: paths: +################################################################################ +# general ################################################################################ '/login': get: @@ -253,7 +253,11 @@ paths: $ref: '#/components/responses/HTTP_403' '500': $ref: '#/components/responses/HTTP_500' - + + +################################################################################ +# gateway +################################################################################ '/gateway/identification': get: operationId: GetGatewayIdentification @@ -555,7 +559,11 @@ paths: $ref: '#/components/responses/HTTP_403' '500': $ref: '#/components/responses/HTTP_500' - + + +################################################################################ +# mqtt +################################################################################ '/mqtt/configuration': get: operationId: GetMqttConfiguration @@ -881,6 +889,11 @@ paths: $ref: '#/components/responses/HTTP_500' '501': $ref: '#/components/responses/HTTP_501' + + +################################################################################ +# iodds +################################################################################ '/iodds': get: operationId: GetIodds @@ -993,7 +1006,12 @@ paths: '500': # code 101, 602 $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' + + +################################################################################ +# masters +################################################################################ '/masters': get: operationId: GetMasters @@ -1030,17 +1048,12 @@ paths: application/json: schema: $ref: '#/components/schemas/masterCapabilitiesGet' - examples: - wired: - value: - numberOfPorts: 8 - maxPowerSupply: #overall power consumption - value: 0.3 - unit: A - # wireless: # @todo wireless - # value: - # masterType: Wireless_Master - # numberOfPorts: 40 + example: + value: + numberOfPorts: 8 + maxPowerSupply: #overall power consumption + value: 0.3 + unit: A '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1101,13 +1114,13 @@ paths: '500': $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/configuration': #@todo wireles + '/masters/{masterNumber}/configuration': #TODO: wireles get: operationId: GetMastersMasterNumberConfiguration tags: - masters - summary: Read the actual configuration of the specified Master. - description: Read the actual configuration of the specified Master. + summary: Read the actual configuration of the specified W-Master. + description: Read the actual configuration of the specified W-Master. parameters: - $ref: '#/components/parameters/masterNumber' responses: @@ -1116,7 +1129,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/masterConfiguration' + $ref: '#/components/schemas/mastersConfigurationGetPost' '403': $ref: '#/components/responses/HTTP_403' '500': @@ -1125,8 +1138,8 @@ paths: operationId: PostMastersMasterNumberConfiguration tags: - masters - summary: Write the configuration of the specified Master. - description: Write the configuration of the specified Master. + summary: Write the configuration of the specified W-Master. + description: Write the configuration of the specified W-Master. parameters: - $ref: '#/components/parameters/masterNumber' requestBody: @@ -1134,7 +1147,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/masterConfiguration' + $ref: '#/components/schemas/mastersConfigurationGetPost' responses: '204': description: Successful operation @@ -1172,366 +1185,61 @@ paths: '500': $ref: '#/components/responses/HTTP_500' -################################################################################ -# tracks -################################################################################ - '/masters/{masterNumber}/tracks': #@todo wireles + '/masters/{masterNumber}/trackstatus': #TODO: wireles get: - operationId: GetMastersMasterNumberTracks + operationId: GetMastersMasterNumberTrackstatus tags: - - tracks - summary: Read the information about the available wireless tracks. Mandatory for W-Masters. - + - masters + summary: Read the actual Track status of the specified W-Master. + description: Read the actual Track status of the specified W-Master. parameters: - - $ref: '#/components/parameters/masterNumber' - description: >- - A W-Master can handle up to 5 transmission tracks in parallel, each trackNumber can handle a maximum of 8 W-Devices, thus supporting up to 40 W-Devices per W-Master. + - $ref: '#/components/parameters/masterNumber' responses: '200': description: Successful operation content: application/json: schema: - items: - type: object - required: - - trackNumber - - statusInfo - properties: - trackNumber: - type: integer - minimum: 1 - maximum: 5 - statusInfo: - type: string - enum: - - STOP - - CYCLIC - - ROAMING - - SCANNING - - PAIRING - example: - tracksInfo: - - trackNumber: 1 - statusInfo: "STOP" - - trackNumber: 2 - statusInfo: "CYCLIC" - - trackNumber: 3 - statusInfo: "ROAMING" - - trackNumber: 4 - statusInfo: "SCANNING" - - trackNumber: 5 - statusInfo: "PAIRING" + $ref: '#/components/schemas/mastersTrackstatusGet' '403': $ref: '#/components/responses/HTTP_403' '500': $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/tracks/scan': #@todo wireles - post: - operationId: PostMastersMasterNumberTracksScan - tags: - - tracks - summary: Start scanning on the specified trackNumber. Mandatory for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - description: >- - Discover unpaired W-Devices in the proximity of the W-Master. - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - txPower: - type: integer - minimum: 1 - maximum: 31 - example: - txPower: 31 - responses: - '204': - description: Successful operation - '400': - description: Bad request - content: - application/json: - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "205": - value: - code: 205 - message: JSON data value out of range - "208": - value: - code: 208 - message: POST request without content - "701": - value: - code: 701 - message: Data set incomplete - "702": - value: - code: 702 - message: Data set not applicable - "703": - value: - code: 703 - message: Data set combination incompatible - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '503': - $ref: '#/components/responses/HTTP_503' - get: - operationId: GetMastersMasterNumberTracksScan - tags: - - tracks - summary: Read back the last scan result. Mandatory for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - description: >- - List the unique identifiers (UniqueID) of the discovered unpaired W-Devices. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: array - minItems: 1 - items: - type: object - properties: - SlotType: - type: string - enum: - - SSLOT - - DSLOT - revisionId: - type: string - uniqueId: - type: string - minLength: 1 - maxLength: 32 - example: - - slotType: SSLOT - revisionId: "1.1" - uniqueId: 03:78:00:00:01:32:50:60:46 - lastSeen: "2019-02-19T08:02:51.786Z" - - slotType: DSLOT - revisionId: "1.1" - uniqueId: 03:78:00:00:01:32:50:60:47 - lastSeen: "2019-02-19T08:02:51.786Z" - - slotType: SSLOT - revisionId: "1.1" - uniqueId: 03:78:00:00:01:32:50:60:48 - lastSeen: "2019-02-19T08:02:51.786Z" - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '503': - $ref: '#/components/responses/HTTP_503' - '/masters/{masterNumber}/tracks/{trackNumber}/status': #@todo wireles - get: - operationId: GetMastersMasterNumberTracksTrackNumberstatus - tags: - - tracks - summary: Read the status of the selected trackNumber. Mandatory for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/trackNumber' - description: >- - Indicates the actual operational mode of the trackNumber (STOP, CYCLIC, SCAN, PAIRING, ROAMING) and the transmission power of the trackNumber radio. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: object - required: - - trackNumber - - statusInfo - - txPower - properties: - trackNumber: - type: integer - minimum: 1 - maximum: 5 - statusInfo: - type: string - enum: - - STOP - - CYCLIC - - ROAMING - - SCANNING - - PAIRING - txPower: - type: integer - minimum: 1 - maximum: 31 - example: - trackNumber: 2 - statusInfo: "STOP" - txPower: 31 - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/tracks/{trackNumber}/statistics': #@todo wireles - get: - operationId: GetMastersMasterNumberTracksTrackNumberstatistics - tags: - - tracks - summary: Read the statistics (Errors and PEP) of the selected trackNumber. Optional for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/trackNumber' - description: >- - Monitoring the wireless environment regarding reliability indicating link quality. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: object - required: - - trackNumber - - errors - - PEP - properties: - trackNumber: - type: integer - minimum: 1 - maximum: 5 - errors: - type: integer - minimum: 0 - maximum: 65535 # 65535 = no data available - PEP: - type: string - # example: @todo wireles - # - trackNumber: 0 - # errors: 0 - # PEP: "-" - # - trackNumber: 1 - # errors: 4 - # PEP: "-" - # - trackNumber: 2 - # errors: 5 - # PEP: "-" - # - trackNumber: 3 - # errors: 7 - # PEP: "-" - # - trackNumber: 4 - # errors: 5 - # PEP: "-" - # - trackNumber: 5 - # errors: 63 - # PEP: 1.5380859375 - # - trackNumber: 6 - # errors: 6 - # PEP: "-" - # - trackNumber: 7 - # errors: 1 - # PEP: "-" - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/tracks/{trackNumber}/statisticsChannel': #@todo wireles - get: - operationId: GetMastersMasterNumberTracksTrackNumberstatisticsChannel - tags: - - tracks - summary: Read the channel statistics (Errors %) of the selected trackNumber. Optional for W-Masters. - parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/trackNumber' - description: >- - Monitoring the wireless channel regarding reliability indicating link quality. 100 transmissions per channel are computed. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/tracksStatisticsChannel' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/tracks/{trackNumber}/configuration': #@todo wireles + + '/masters/{masterNumber}/scan': #TODO: wireles get: - operationId: GetMastersMasterNumberTracksTrackNumberConfiguration + operationId: GetMastersMasterNumberScan tags: - - tracks - summary: Read the configuration of the specified trackNumber. Mandatory for W-Masters. + - masters + summary: Read the actual scan results of the specified W-Master. + description: Read the actual scan results of the specified W-Master. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/trackNumber' - description: Read the configuration of the specified trackNumber. Mandatory for W-Masters. + - $ref: '#/components/parameters/masterNumber' responses: '200': description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/trackConfiguration' + $ref: '#/components/schemas/mastersScanGet' '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' post: - operationId: PostMastersMasterNumberTracksTrackNumberConfiguration + operationId: PostMastersMasterNumberScan tags: - - tracks - summary: Write the configuration of the specified trackNumber. Mandatory for W-Masters. + - masters + summary: To start a scan of the specified W-Master. + description: To start a scan of the specified W-Master. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/trackNumber' - description: Write the configuration of the specified trackNumber. Mandatory for W-Masters. + - $ref: '#/components/parameters/masterNumber' requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/trackConfigurationPost' + $ref: '#/components/schemas/mastersScanPost' responses: '204': description: Successful operation @@ -1556,36 +1264,19 @@ paths: value: code: 203 message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": + "206": value: - code: 205 - message: JSON data value out of range + code: 206 + message: JSON data value out of bounds "208": value: code: 208 message: POST request without content - "701": - value: - code: 701 - message: Data set incomplete - "702": - value: - code: 702 - message: Data set not applicable - "703": - value: - code: 703 - message: Data set combination incompatible '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' + ################################################################################ # ports @@ -1605,75 +1296,64 @@ paths: content: application/json: schema: - type: array - items: - type: object - required: - - portNumber - - statusInfo - - deviceAlias - properties: - portNumber: - type: number - deviceAlias: - type: string - statusInfo: - type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - # slotNumber: # @todo wireles - # type: number - # trackNumber: - # type: number - # slotType: - # type: string - # enum: - # - SSLOT - # - DSLOT - # items: - # type: object - # properties: - # vendorId: - # type: number - # deviceId: - # type: number - # productName: - # type: string - example: - - portNumber: 1 - statusInfo: "DEVICE_ONLINE" - deviceAlias: "Distance_Sensor" - - portNumber: 2 - statusInfo: "DIGITAL_INPUT_C/Q" - deviceAlias: "Switching_Sensor" - # - portNumber: 3 # @todo wireles - # trackNumber: 1 - # slotNumber: 2 - # slotType: "SSLOT" - # statusInfo: "DEVICE_ONLINE" - # deviceAlias: "Wireless_Bridge" - # deviceInfo: - # vendorId: 888 - # deviceId: 10485760 - # productName: "BNI IOW-302-W01-K080" - - portNumber: 4 - statusInfo: "DEACTIVATED" - deviceAlias: "Empty_port" + $ref: '#/components/schemas/mastersPortsGet' + examples: + IO-Link: + value: + - portNumber: 1 + statusInfo: "DEVICE_ONLINE" + deviceAlias: "Distance_Sensor" + - portNumber: 2 + statusInfo: "DIGITAL_INPUT_C/Q" + deviceAlias: "Switching_Sensor" + - portNumber: 4 + statusInfo: "DEACTIVATED" + deviceAlias: "Empty_port" + IO-Link_Wireless: + value: + - portNumber: 1 + deviceAlias: "Port_X01" + statusInfo: "DEVICE_ONLINE" + slotNumber: 2 + trackNumber: 1 + slotType: "SSLOT" + deviceInfo: + vendorId: 888 + deviceId: 10485760 + productName: "BNI IOW-302-W01-K080" + - portNumber: 4 + statusInfo: "DEACTIVATED" + deviceAlias: "Empty_port" + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + + '/masters/{masterNumber}/ports/qualityall': + get: + operationId: GetMastersMasterNumberPortsQuality + tags: + - ports + parameters: + - $ref: '#/components/parameters/masterNumber' + summary: Read the link quality and the RSSI of all used W-Ports (W-Device and W-Master). + description: Read the link quality and the RSSI of all used W-Ports (W-Device and W-Master). + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/mastersPortsQualityallGet' '403': $ref: '#/components/responses/HTTP_403' '404': $ref: '#/components/responses/HTTP_404' '500': $ref: '#/components/responses/HTTP_500' + '/masters/{masterNumber}/ports/{portNumber}/capabilities': get: operationId: GetMastersMasterNumberPortsPortNumberCapabilities @@ -1727,12 +1407,11 @@ paths: maxPowerSupply: value: 2.0 unit: A - portType: FAILSAFE_PORT_B - WIRELESS: + portType: FAILSAFE_PORT_B + IO-Link_Wireless: value: portType: WIRELESS_MASTER - slotType: "DSLOT" - + slotType: "DSLOT" '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1756,66 +1435,9 @@ paths: content: application/json: schema: - # $ref: '#/components/schemas/portStatusGet' - type: object - required: - - statusInfo - properties: - statusInfo: - type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - - ioLinkRevision: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - '1.0' - - '1.1' - transmissionRate: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - COM1 - - COM2 - - COM3 - - WIRELESS - masterCycleTime: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: object - allOf: - - $ref: '#/components/schemas/cycleTime' - portQualityInfo: - type: object - required: - - value - - unit - properties: - value: - type: integer - minimum: 0 - maximum: 100 - unit: - type: string - enum: - - "%" + $ref: '#/components/schemas/mastersPortsStatusGet' examples: - wired: + IO-Link: value: statusInfo: "DEVICE_ONLINE" ioLinkRevision: "1.1" @@ -1823,18 +1445,21 @@ paths: masterCycleTime: value: 2.3 unit: ms - wireless: # @todo wireles + IO-Link_Wireless: value: - statusInfo: "DEVICE_ONLINE" - ioLinkRevision: "1.1" - transmissionRate: WIRELESS - masterCycleTime: - value: 5 - unit: "ms" - portQuality: - value: 100 - unit: "%" - + statusInfo: DEVICE_ONLINE + portQualityInfo: + pdInValid: true + pdOutValid: true + ioLinkRevision: 1.1 + inputDataLength: 2 + outputDataLength: 2 + vendorId: 888 + deviceId: 1 + wMasterCycleTimeOut: + base: FreeRunning + wMasterCycleTimeIn: + base: FreeRunning '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1858,16 +1483,40 @@ paths: application/json: schema: $ref: '#/components/schemas/portConfigurationGet' - example: - mode: IOLINK_MANUAL - validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - iqConfiguration: DIGITAL_INPUT - cycleTime: - value: 2.3 - unit: ms - vendorId: 26 - deviceId: 333 - deviceAlias: Distance_sensor_1 + examples: + IO-Link: + value: + mode: IOLINK_MANUAL + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + iqConfiguration: DIGITAL_INPUT + cycleTime: + value: 2.3 + unit: ms + vendorId: 26 + deviceId: 333 + deviceAlias: Distance_sensor_1 + IO-Link_Wireless: + value: + mode: WIOLINK_CYCLIC_AUTOPAIRING + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + vendorId: 888 + deviceId: 1 + slotNumber: 1 + trackNumber: 5 + deviceTxPower: 31 + maxRetry: 20 + imaTime: + base: 1664us + multiplier: 60 + slotType: SSLOT + lowEnergyDevice: false + maxPDSegLength: 0 + wMasterCycleTimeOut: + base: FreeRunning + wMasterCycleTimeIn: + base: FreeRunning + uniqueId: 03:78:00:00:01:32:50:60:46 + deviceAlias: Port_X01 '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1910,6 +1559,28 @@ paths: Change the deviceAlias: value: deviceAlias: Flow_control_1 + IO-Link_Wireless: + value: + mode: WIOLINK_CYCLIC_AUTOPAIRING + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + vendorId: 888 + deviceId: 1 + slotNumber: 1 + trackNumber: 5 + deviceTxPower: 31 + maxRetry: 20 + imaTime: + base: 1664us + multiplier: 60 + slotType: SSLOT + lowEnergyDevice: false + maxPDSegLength: 0 + wMasterCycleTimeOut: + base: FreeRunning + wMasterCycleTimeIn: + base: FreeRunning + uniqueId: 03:78:00:00:01:32:50:60:46 + deviceAlias: Port_X01 responses: '204': description: Successful operation @@ -1997,10 +1668,63 @@ paths: $ref: '#/components/responses/HTTP_404' '500': $ref: '#/components/responses/HTTP_500' + + '/masters/{masterNumber}/ports/{portNumber}/pairing': + post: + operationId: PostMastersMasterNumberPortsPortNumberPairing + tags: + - ports + summary: To pair a W-Device with the specified W-Port. + description: To pair a W-Device with the specified W-Port. + parameters: + - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/portNumber' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/mastersPortsPairingPost' + responses: + '204': + description: Successful operation + '400': # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 + $ref: '#/components/responses/HTTP_400' + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + + '/masters/{masterNumber}/ports/{portNumber}/quality': + get: + operationId: GetMastersMasterNumberPortsPortNumberQuality + tags: + - ports + parameters: + - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/portNumber' + summary: Read the link quality and the RSSI of the specified W-Port (W-Device and W-Master). + description: Read the link quality and the RSSI of the specified W-Port (W-Device and W-Master). + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/mastersPortsQualityGet' + '403': + $ref: '#/components/responses/HTTP_403' + '404': + $ref: '#/components/responses/HTTP_404' + '500': + $ref: '#/components/responses/HTTP_500' + + ################################################################################ # devices ################################################################################ - '/devices': get: operationId: GetDevices @@ -3011,6 +2735,8 @@ paths: $ref: '#/components/responses/HTTP_404' '500': $ref: '#/components/responses/HTTP_500' + + components: schemas: cycleTime: @@ -3850,12 +3576,16 @@ components: - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - FAILSAFE_PORT_B - WIRELESS_MASTER - slotType: # @todo wireles + slotType: + description: >- + slotType for Wireless Master only type: string enum: - SSLOT - DSLOT maxPowerSupply: + description: >- + maxPowerSupply is not supported in IO-Link Wireless. type: object required: - value @@ -3866,6 +3596,8 @@ components: unit: type: string + + portConfigurationGet: type: object required: @@ -3881,6 +3613,10 @@ components: - IOLINK_AUTOSTART - DIGITAL_INPUT - DIGITAL_OUTPUT + - WIOLINK_CYCLIC_AUTOPAIRING + - WIOLINK_CYCLIC + - WIOLINK_ROAMING_AUTOPAIRING + - WIOLINK_ROAMING validationAndBackup: description: required if portMode is IOLINK_MANUAL. type: string @@ -3893,10 +3629,12 @@ components: cycleTime: description: >- required if portMode is IOLINK_MANUAL or - IOLINK_AUTOSTART. Default value is 0 ms which means as fast as - possible. Note: If the applied value for cycle time cannot exactly be mapped, + IOLINK_AUTOSTART. Default value is 0 ms which means as fast as possible. + Note: If the applied value for cycle time cannot exactly be mapped, the port shall use the next possible higher value. If the cycle time is greater than 132.8 ms the error 702 shall be returned. + Note: This value is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. type: object allOf: - $ref: '#/components/schemas/cycleTime' @@ -3915,6 +3653,8 @@ components: minimum: 1 maximum: 16777215 iqConfiguration: + description: >- + iqConfiguration is not supported in IO-Link Wireless. type: string enum: - NOT_SUPPORTED @@ -3922,27 +3662,134 @@ components: - DIGITAL_OUTPUT deviceAlias: type: string - example: - mode: IOLINK_MANUAL - validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - iqConfiguration: DIGITAL_INPUT - cycleTime: - value: 2.3 - unit: ms - vendorId: 26 - deviceId: 333 - deviceAlias: Distance_sensor_1 + slotNumber: + description: >- + slot number of the W-Device (Wireless Master only). + type: integer + minimum: 0 + maximum: 7 + trackNumber: + description: >- + track number of the W-Device, maximum depends on the number of + available tracks on the W-Master (Wireless Master only). + type: integer + minimum: 1 + maximum: 5 + deviceTxPower: + description: >- + transmission power of the W-Device (Wireless Master only). + type: integer + minimum: 1 + maximum: 31 + maxRetry: + description: >- + Number of Retries for process data (Wireless Master only). + type: integer + minimum: 2 + maximum: 31 + imaTime: + description: >- + I am alive time for the wireless connection (Wireless Master only). + type: object + required: + - base + - multiplier + properties: + base: + description: >- + IMA timeout base. + type: string + enum: + - "1664us" + - "5ms" + - "1s" + - "1min" + multiplier: + description: >- + IMA timeout multiplier. + type: integer + minimum: 1 + maximum: 255 + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). + type: string + enum: + - "SSLOT" + - "DSLOT" + lowEnergyDevice: + description: >- + to set low energy mode (Wireless Master only and W-Device has to support low energy). + type: boolean + default: false + maxPDSegLength: + description: >- + maximum process data output segment length (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + wMasterCycleTimeOut: + description: >- + W-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + W-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + uniqueId: + description: >- + unique identifier for each W-Device (Wireless Master only). + type: string + minLength: 26 + maxLength: 26 + - masterConfiguration: + + mastersConfigurationGetPost : # TODO: IOLW properties: - masterId: + wMasterId: + description: >- + Master identifier for connection with W-Devices. type: integer minimum: 1 maximum: 29 - ahtEnable: - type: boolean - default: false + advancedConnectivity: + description: >- + To set advanced connectivity functions on the W-Master. + type: object + properties: + "ahtEnable": + description: >- + To enable or disable the Adaptive Hopping Table. + type: boolean + default: false pairingTimeout: + description: >- + Timeout for pairing by BUTTON / UNIQUE. type: object required: - value @@ -3951,12 +3798,56 @@ components: value: type: integer minimum: 5 - maximum: 65535 + maximum: 255 unit: type: string enum: - s - blacklist: + serviceTrackNumber: + description: >- + W-Track number used for service requests (Scan/Pairing/Roaming). + type: integer + minimum: 1 + maximum: 5 + default: 1 + serviceTrackMode: + description: >- + Mode of the service track. + type: string + enum: + - CYCLIC + - ROAMING + trackTxPower: + description: >- + transmission power of the W-Track (0 = Disable) + type: object + properties: + "track_1": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_2": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_3": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_4": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_5": + type: integer + minimum: 0 + maximum: 31 + default: 0 + blockList: type: object required: - all @@ -4192,16 +4083,22 @@ components: "2478": type: boolean default: false - "2479": - type: boolean - default: false example: masterId: 5 - ahtEnable: false + advancedConnectivity: + "ahtEnable": false pairingTimeout: value: 25 unit: s - blackList: + serviceTrackNumber: 1 + serviceTrackMode: CYCLIC + trackTxPower: + "track_1": 31 + "track_2": 31 + "track_3": 31 + "track_4": 0 + "track_5": 0 + blockList: "2402": false "2403": false "2404": false @@ -4279,660 +4176,327 @@ components: "2476": false "2477": false "2478": false - "2479": false - - tracksStatisticsChannel: + + mastersPortsPairingPost: # TODO: IOLW properties: - trackNumber: + portPairing: + type: string + enum: + - Unpairing + - PairingUnique + - PairingButton + example: + WPortPairing: PairingUnique + + mastersScanGet: # TODO: IOLW + properties: + scanStatus: + type: string + enum: + - NoScanWasPerformed + - ScanInProgress + - ScanEnded + scanResults: + type: array + properties: + slotType: + type: string + enum: + - "SSLOT" + - "DSLOT" + uniqueId: + type: string + minLength: 26 + maxLength: 26 + ioLinkRevision: + type: string + enum: + - '1.1' + example: + scanStatus: ScanEnded + scanResults: + - slotType: SSLOT + uniqueId: 03:78:00:00:01:32:50:60:46 + ioLinkRevision: 1.1 + - slotType: DSLOT + uniqueId: 03:78:00:00:01:32:50:60:47 + ioLinkRevision: 1.1 + + mastersScanPost: # TODO: IOLW + properties: + txPower: type: integer minimum: 1 - maximum: 5 - channelErrors: + maximum: 31 + example: + txPower: 31 + + mastersPortsGet: # TODO: IOLW + type: array + items: + type: object + required: + - portNumber + - statusInfo + - deviceAlias + properties: + portNumber: + type: number + deviceAlias: + type: string + statusInfo: + type: string + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + slotNumber: + description: >- + slot number of the W-Device (Wireless Master only). + type: integer + minimum: 0 + maximum: 7 + trackNumber: + description: >- + track number of the W-Device, maximum depends on the number of + available tracks on the W-Master (Wireless Master only). + type: integer + minimum: 1 + maximum: 5 + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). + type: string + enum: + - "SSLOT" + - "DSLOT" + deviceInfo: + description: >- + Wireless Master only. + type: object + properties: + vendorId: + type: integer + minimum: 1 + maximum: 65535 + deviceId: + type: integer + minimum: 1 + maximum: 16777215 + productName: + type: string + minLength: 1 + maxLength: 64 + + + + + mastersPortsStatusGet: # TODO: IOLW + properties: + statusInfo: + type: string + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + ioLinkRevision: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. + type: string + enum: + - '1.0' + - '1.1' + transmissionRate: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. transmissionRate is not used in IO-Link Wireless. + type: string + enum: + - COM1 + - COM2 + - COM3 + masterCycleTime: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. masterCycleTime is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. + type: object + allOf: + - $ref: '#/components/schemas/cycleTime' + portQualityInfo: + description: >- + status information of the Process Data (Wireless Master only). type: object - # required: # @todo wireles - # - all + required: + - all properties: - "2402": + "pdInValid": + type: boolean + default: false + "pdOutValid": + type: boolean + default: false + inputDataLength: + description: >- + this element contains the input data length as number of octets of the Device provided by the PDIn service (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + outputDataLength: + description: >- + this element contains the output data length as number of octets of the Device provided by the PDOut service (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + vendorId: + description: >- + Wireless Master only. + type: integer + minimum: 1 + maximum: 65535 + deviceId: + description: >- + Wireless Master only. + type: integer + minimum: 1 + maximum: 16777215 + wMasterCycleTimeOut: + description: >- + W-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2403": + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + W-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2404": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2405": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2406": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2407": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2408": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2409": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2410": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2411": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2412": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2413": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2414": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2415": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2416": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2417": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2418": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2419": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2420": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2421": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2422": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2423": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2424": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2425": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2426": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2427": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2428": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2429": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2430": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2431": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2432": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2433": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2434": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2435": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2436": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2437": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2438": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2439": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2440": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2441": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2442": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2443": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2444": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2445": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2446": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2447": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2448": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2449": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2450": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2451": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2452": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2453": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2454": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2455": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2456": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2457": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2458": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2459": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2460": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2461": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2462": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2463": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2464": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2465": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2466": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2467": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2468": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2469": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2470": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2471": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2472": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2473": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2474": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2475": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2476": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2477": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2478": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2479": - type: integer - minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - example: - trackNumber: 2 - channelErrors: - "2402": 0 - "2403": 0 - "2404": 0 - "2405": 0 - "2406": 0 - "2407": 3 - "2408": 1 - "2409": 5 - "2410": 9 - "2411": 6 - "2412": 4 - "2413": 1 - "2414": 0 - "2415": 0 - "2416": 0 - "2417": 0 - "2418": 0 - "2419": 0 - "2420": 0 - "2421": 0 - "2422": 0 - "2423": 0 - "2424": 0 - "2425": 0 - "2426": 0 - "2427": 0 - "2428": 0 - "2429": 0 - "2430": 0 - "2431": 0 - "2432": 0 - "2433": 0 - "2434": 0 - "2435": 3 - "2436": 2 - "2437": 5 - "2438": 2 - "2439": 0 - "2440": 0 - "2441": 0 - "2442": 0 - "2443": 0 - "2444": 0 - "2445": 0 - "2446": 0 - "2447": 0 - "2448": 0 - "2449": 0 - "2450": 0 - "2451": 0 - "2452": 0 - "2453": 0 - "2454": 0 - "2455": 0 - "2456": 0 - "2457": 0 - "2458": 0 - "2459": 0 - "2460": 0 - "2461": 0 - "2462": 0 - "2463": 0 - "2464": 0 - "2465": 0 - "2466": 0 - "2467": 0 - "2468": 0 - "2469": 0 - "2470": 0 - "2471": 0 - "2472": 0 - "2473": 0 - "2474": 0 - "2475": 0 - "2476": 0 - "2477": 0 - "2478": 0 - "2479": 0 - - trackConfiguration: + minimum: 1 + maximum: 63 + + + + + mastersTrackstatusGet: # TODO: IOLW + type: array + items: + type: object + properties: + trackNumber: + type: number + Mode: + type: string + enum: + - DEACTIVATED + - CYCLIC + - ROAMING + - SCAN + - PAIRING + txPower: + type: integer + minimum: 1 + maximum: 31 + example: + - trackNumber: 1 + Mode: CYCLIC + txPower: 31 + - trackNumber: 2 + Mode: ROAMING + txPower: 31 + + mastersPortsQualityallGet: # TODO: IOLW + type: array + items: + type: object + properties: + portNumber: + type: number + lqiMaster: + type: integer + minimum: 0 + maximum: 100 + rssiMaster: + type: integer + minimum: -128 + maximum: 20 + lqiDevice: + type: integer + minimum: 0 + maximum: 100 + rssiDevice: + type: integer + minimum: -128 + maximum: 20 + example: + - portNumber: 1 + lqiMaster: 100 + rssiMaster: -40 + lqiDevice: 100 + rssiDevice: -39 + - portNumber: 2 + lqiMaster: 100 + rssiMaster: -60 + lqiDevice: 100 + rssiDevice: -61 + + mastersPortsQualityGet: # TODO: IOLW properties: - statusInfo: - type: string - enum: - - STOP - - CYCLIC - - ROAMING - - SERVICE - txPower: + lqiMaster: type: integer - minimum: 1 - maximum: 31 - example: - trackMode: CYCLIC - - trackConfigurationPost: - properties: - statusInfo: - type: string - enum: - - STOP - - CYCLIC - - ROAMING - - SERVICE - txPower: + minimum: 0 + maximum: 100 + rssiMaster: type: integer - minimum: 1 - maximum: 31 - example: - trackMode: CYCLIC - txPower: 20 - - # wirelessPortConfigurationGet: # @todo wireles - # properties: - # portMode: - # type: string - # enum: - # - DEACTIVATED - # - CYCLIC - # - ROAMING - # validationBackup: - # type: string - # enum: - # - NO_DEVICE_CHECK - # - TYPE_COMPATIBLE_DEVICE_V1.1 - # - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - # - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - # vendorId: - # type: integer - # minimum: 1 - # maximum: 65535 - # deviceId: - # type: integer - # minimum: 1 - # maximum: 16777215 - # portCycleTime: - # type: object - # required: - # - value - # - unit - # properties: - # value: - # type: integer - # minimum: 0 ## 0 means Freerunning - # maximum: 315 ## Step size 5ms - # unit: - # type: string - # enum: - # - ms - # trackNumber: - # type: integer - # minimum: 1 - # maximum: 5 - # slotNumber: - # type: integer - # minimum: 0 - # maximum: 7 - # slotType: - # type: string - # enum: - # - "SSLOT" - # - "DSLOT" - # maxRetry: - # type: integer - # minimum: 2 - # maximum: 31 - # imaTime: - # type: object - # required: - # - base - # - multiplier - # properties: - # base: - # type: string - # enum: - # - "1664us" - # - "5ms" - # - "1s" - # - "1min" - # multiplier: - # type: integer - # minimum: 1 - # maximum: 255 - # deviceTxPower: - # type: integer - # minimum: 0 - # maximum: 31 - # lowPowerDevice: - # type: string - # enum: - # - "NORMAL" - # - "LOW_POWER" - # maxPDSegLength: - # type: integer - # minimum: 0 - # maximum: 32 - # uniqueId: - # type: string - # deviceAlias: - # type: string - # example: - # portMode: CYCLIC - # validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - # vendorId: 888 - # deviceId: 1 - # portCycleTime: - # value: 0 - # unit: ms - # trackNumber: 5 - # slotNumber: 1 - # slotType: SSLOT - # maxRetry: 20 - # imaTime: - # base: 1664us - # multiplier: 60 - # deviceTxPower: 31 - # lowPowerDevice: NORMAL - # maxPDSegLength: 0 - # uniqueId: 03:78:00:00:01:32:50:60:46 - # deviceAlias: "Port_X01" - - # wirelessPortConfigurationPost: # @todo wireles - # properties: - # portMode: - # type: string - # enum: - # - DEACTIVATED - # - CYCLIC - # - ROAMING - # validationBackup: - # type: string - # enum: - # - NO_DEVICE_CHECK - # - TYPE_COMPATIBLE_DEVICE_V1.1 - # - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - # - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - # vendorId: - # type: integer - # minimum: 1 - # maximum: 65535 - # deviceId: - # type: integer - # minimum: 1 - # maximum: 16777215 - # portCycleTime: - # type: object - # required: - # - value - # - unit - # properties: - # value: - # type: integer - # minimum: 0 ## 0 means Freerunning - # maximum: 315 ## Step size 5ms - # unit: - # type: string - # enum: - # - ms - # trackNumber: - # type: integer - # minimum: 1 - # maximum: 5 - # slotNumber: - # type: integer - # minimum: 0 - # maximum: 7 - # slotType: - # type: string - # enum: - # - "SSLOT" - # - "DSLOT" - # maxRetry: - # type: integer - # minimum: 2 - # maximum: 31 - # imaTime: - # type: object - # required: - # - base - # - multiplier - # properties: - # base: - # type: string - # enum: - # - "1664us" - # - "5ms" - # - "1s" - # - "1min" - # multiplier: - # type: integer - # minimum: 1 - # maximum: 255 - # deviceTxPower: - # type: integer - # minimum: 0 - # maximum: 31 - # lowPowerDevice: - # type: string - # enum: - # - "NORMAL" - # - "LOW_POWER" - # maxPDSegLength: - # type: integer - # minimum: 0 - # maximum: 32 - # uniqueId: - # type: string - # example: - # portMode: CYCLIC - # validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - # vendorId: 888 - # deviceId: 1 - # portCycleTime: - # value: 0 ##Or FreeRunning - # unit: ms - # trackNumber: 5 - # slotNumber: 1 - # slotType: SSLOT - # maxRetry: 20 - # imaTime: - # base: 1664us - # multiplier: 60 - # deviceTxPower: 31 - # lowPowerDevice: NORMAL - # maxPDSegLength: 0 - # uniqueId: 03:78:00:00:01:32:50:60:46 + minimum: -128 + maximum: 20 + lqiDevice: + type: integer + minimum: 0 + maximum: 100 + rssiDevice: + type: integer + minimum: -128 + maximum: 20 + example: + lqiMaster: 100 + rssiMaster: -40 + lqiDevice: 100 + rssiDevice: -39 + portConfigurationPost: description: "Note: At least one of the mode, iqConfiguration, @@ -4947,6 +4511,10 @@ components: - IOLINK_AUTOSTART - DIGITAL_INPUT - DIGITAL_OUTPUT + - WIOLINK_CYCLIC_AUTOPAIRING + - WIOLINK_CYCLIC + - WIOLINK_ROAMING_AUTOPAIRING + - WIOLINK_ROAMING validationAndBackup: description: >- required if the port's mode is IOLINK_MANUAL. @@ -4964,7 +4532,8 @@ components: IO-Link Master. If the applied value for cycle time cannot exactly be mapped, the port shall use the next possible higher value. If the cycle time is greater than 132.8 ms the error 702 shall - be returned. + be returned. This value is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. type: object allOf: - $ref: '#/components/schemas/cycleTime' @@ -4983,6 +4552,8 @@ components: minimum: 1 maximum: 16777215 iqConfiguration: + description: >- + iqConfiguration is not supported in IO-Link Wireless. type: string enum: - NOT_SUPPORTED @@ -4995,6 +4566,111 @@ components: type: string minLength: 1 maxLength: 32 + slotNumber: + description: >- + slot number of the W-Device (Wireless Master only). + type: integer + minimum: 0 + maximum: 7 + trackNumber: + description: >- + track number of the W-Device, maximum depends on the number of + available tracks on the W-Master (Wireless Master only). + type: integer + minimum: 1 + maximum: 5 + deviceTxPower: + description: >- + transmission power of the W-Device (Wireless Master only). + type: integer + minimum: 1 + maximum: 31 + maxRetry: + description: >- + Number of Retries for process data (Wireless Master only). + type: integer + minimum: 2 + maximum: 31 + imaTime: + description: >- + I am alive time for the wireless connection (Wireless Master only). + type: object + required: + - base + - multiplier + properties: + base: + description: >- + IMA timeout base. + type: string + enum: + - "1664us" + - "5ms" + - "1s" + - "1min" + multiplier: + description: >- + IMA timeout multiplier. + type: integer + minimum: 1 + maximum: 255 + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). + type: string + enum: + - "SSLOT" + - "DSLOT" + lowEnergyDevice: + description: >- + to set low energy mode (Wireless Master only and W-Device has to support low energy). + type: boolean + default: false + maxPDSegLength: + description: >- + maximum process data output segment length (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + wMasterCycleTimeOut: + description: >- + W-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + W-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + uniqueId: + description: >- + unique identifier for each W-Device (Wireless Master only). + type: string + minLength: 26 + maxLength: 26 + dataStorageGetPost: description: >- In case the Data Storage is empty, the header object is empty and the From 5d22575ed09820c8697ac9f6b5067e27551d9e22 Mon Sep 17 00:00:00 2001 From: SebastianHag <119063546+SebastianHag@users.noreply.github.com> Date: Thu, 1 Dec 2022 11:31:12 +0100 Subject: [PATCH 028/279] Updated JSON_for_IO-Link.yaml for IOL Wireless Changed master configuration from W-Master to Master Added an empty example to master configuration for IO-Link Added timestamp to scan result --- JSON_for_IO-Link.yaml | 299 ++++++++++++++++++++++++++++-------------- 1 file changed, 202 insertions(+), 97 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index ddada61..5fb2969 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1119,8 +1119,8 @@ paths: operationId: GetMastersMasterNumberConfiguration tags: - masters - summary: Read the actual configuration of the specified W-Master. - description: Read the actual configuration of the specified W-Master. + summary: Read the actual configuration of the specified Master. + description: Read the actual configuration of the specified Master. parameters: - $ref: '#/components/parameters/masterNumber' responses: @@ -1130,6 +1130,103 @@ paths: application/json: schema: $ref: '#/components/schemas/mastersConfigurationGetPost' + examples: + IO-Link: + value: + IO-Link_Wireless: + value: + masterId: 5 + advancedConnectivity: + "ahtEnable": false + pairingTimeout: + value: 25 + unit: s + serviceTrackNumber: 1 + serviceTrackMode: CYCLIC + trackTxPower: + "track_1": 31 + "track_2": 31 + "track_3": 31 + "track_4": 0 + "track_5": 0 + blockList: + "2402": false + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false '403': $ref: '#/components/responses/HTTP_403' '500': @@ -1138,8 +1235,8 @@ paths: operationId: PostMastersMasterNumberConfiguration tags: - masters - summary: Write the configuration of the specified W-Master. - description: Write the configuration of the specified W-Master. + summary: Write the configuration of the specified Master. + description: Write the configuration of the specified Master. parameters: - $ref: '#/components/parameters/masterNumber' requestBody: @@ -1148,6 +1245,103 @@ paths: application/json: schema: $ref: '#/components/schemas/mastersConfigurationGetPost' + examples: + IO-Link: + value: + IO-Link_Wireless: + value: + masterId: 5 + advancedConnectivity: + "ahtEnable": false + pairingTimeout: + value: 25 + unit: s + serviceTrackNumber: 1 + serviceTrackMode: CYCLIC + trackTxPower: + "track_1": 31 + "track_2": 31 + "track_3": 31 + "track_4": 0 + "track_5": 0 + blockList: + "2402": false + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false responses: '204': description: Successful operation @@ -4083,99 +4277,6 @@ components: "2478": type: boolean default: false - example: - masterId: 5 - advancedConnectivity: - "ahtEnable": false - pairingTimeout: - value: 25 - unit: s - serviceTrackNumber: 1 - serviceTrackMode: CYCLIC - trackTxPower: - "track_1": 31 - "track_2": 31 - "track_3": 31 - "track_4": 0 - "track_5": 0 - blockList: - "2402": false - "2403": false - "2404": false - "2405": false - "2406": false - "2407": false - "2408": false - "2409": false - "2410": false - "2411": false - "2412": false - "2413": false - "2414": false - "2415": false - "2416": false - "2417": false - "2418": false - "2419": false - "2420": false - "2421": false - "2422": false - "2423": false - "2424": false - "2425": false - "2426": false - "2427": false - "2428": false - "2429": false - "2430": false - "2431": false - "2432": false - "2433": false - "2434": false - "2435": false - "2436": false - "2437": false - "2438": false - "2439": false - "2440": false - "2441": false - "2442": false - "2443": false - "2444": false - "2445": false - "2446": false - "2447": false - "2448": false - "2449": false - "2450": false - "2451": false - "2452": false - "2453": false - "2454": false - "2455": false - "2456": false - "2457": false - "2458": false - "2459": false - "2460": false - "2461": false - "2462": false - "2463": false - "2464": false - "2465": false - "2466": false - "2467": false - "2468": false - "2469": false - "2470": false - "2471": false - "2472": false - "2473": false - "2474": false - "2475": false - "2476": false - "2477": false - "2478": false mastersPortsPairingPost: # TODO: IOLW properties: @@ -4212,15 +4313,19 @@ components: type: string enum: - '1.1' + lastSeen: + $ref: '#/components/schemas/eventTime' example: scanStatus: ScanEnded scanResults: - slotType: SSLOT uniqueId: 03:78:00:00:01:32:50:60:46 ioLinkRevision: 1.1 + lastSeen: "2022-12-01T08:42:23.314Z" - slotType: DSLOT uniqueId: 03:78:00:00:01:32:50:60:47 ioLinkRevision: 1.1 + lastSeen: "2022-12-01T09:42:23.314Z" mastersScanPost: # TODO: IOLW properties: From b8ba2365cc5f975f1e11492e579823f2a47afd25 Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 19 Jan 2023 14:29:45 +0100 Subject: [PATCH 029/279] Add openapi and version endpoint. --- JSON_for_IO-Link.yaml | 2259 +++++++++++++++++++++-------------------- 1 file changed, 1173 insertions(+), 1086 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index cc140ee..9007570 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5,23 +5,23 @@ info: at [http://www.io-link.com](http://www.io-link.com) # Description - + * Draft for version 1.x - + ## Disclaimer: - + >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. - - + + >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. - - + + >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. - - + + >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). - - + + >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. version: 1.1.0 title: Swagger IO-Link Master @@ -30,12 +30,12 @@ info: license: name: tbd url: 'http://www.io-link.com' - + servers: - url: '{scheme}://{host}/{basePath}' variables: host: - default: 'iolmaster.io-link.com' + default: 'iolmaster.io-link.com' basePath: default: iolink/v1 scheme: @@ -56,15 +56,145 @@ tags: - name: masters description: Access to parameters of the IO-Link master itself - name: tracks - description: Access to the tracks (radios) of the IO-Link wireless master + description: Access to the tracks (radios) of the IO-Link wireless master - name: ports description: Access to the IO-Link ports of the IO-Link master - name: devices description: Access to the IO-Link Devices connected ot the Master - paths: -################################################################################ + ################################################################################ + '/openapi': + get: + tags: + - general + operationId: getOpenApiDocument + summary: >- + Get the OpenAPI interface description of the IO-Link Master. + description: >- + Get the REST interface description of the IO-Link API as OpenAPI YAML + document. + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: string + examples: + 'url-github': + value: https://github.com/iolinkcommunity/JSON_for_IO-Link/blob/1.0.0/JSON_for_IO-Link.yaml + 'url-vendor': + value: >- + https://www.iolink-master-vendor.com/de/de/p/p672882 + 'yaml': + value: >- + openapi: 3.0.3 + info: + description: >- + This is a sample IO-Link Master server. You can find out more about IO-Link + at [http://www.io-link.com](http://www.io-link.com) + # Description + * Draft for version 1.x + ## Disclaimer: + >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. + >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. + >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. + >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). + + + >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. + version: 1.1.0 + title: Swagger IO-Link Master + contact: + email: info@io-link.com + license: + name: tbd + url: 'http://www.io-link.com' + ... + 'json': + value: >- + { + "openapi": "3.0.3", + "info": null, + "description": "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 1.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", + "version": "1.1.0", + "title": "Swagger IO-Link Master", + "contact": { + "email": "info@io-link.com" + }, + "license": { + "name": "tbd", + "url": "http://www.io-link.com" + } + } + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/errorObject' + examples: + '150': + value: + code: 150 + message: Permission denied + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/errorObject' + examples: + '101': + value: + code: 101 + message: Internal server error + /apiversion: + get: + tags: + - general + operationId: getApiVersion + summary: Get the REST interface version identification. + description: >- + This version relates to the released version by the iolink community on github (e.g. https://github.com/iolinkcommunity/JSON_for_IO-Link/releases). It can be extended by vendor specific parts. + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: object + examples: + default: + value: + version: '1.0.0' + vendor-extension: + value: + version: '1.0.0-feature-xyz' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/errorObject' + examples: + '150': + value: + code: 150 + message: Permission denied + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/errorObject' + examples: + '101': + value: + code: 101 + message: Internal server error + '/login': get: tags: @@ -87,13 +217,13 @@ paths: description: 'Is true in case of a valid user, that is logged in.' example: isLoggedIn: true - userRole: 'Operator' + userRole: 'Operator' post: tags: - general summary: Logs in with credentials and returns the session bearer token. description: >- - Credentials based authentication - Depending on technical feasibility, the HTTP cookie header shall be used. If the backend does not support cookies, the session bearer token shall be sent in the JSON body. The client has to support both mechanisms. + Credentials based authentication - Depending on technical feasibility, the HTTP cookie header shall be used. If the backend does not support cookies, the session bearer token shall be sent in the JSON body. The client has to support both mechanisms. operationId: postUsersLogin requestBody: required: true @@ -135,25 +265,25 @@ paths: userRole: type: string enum: - - Operator - - Maintenance - - Specialist + - Operator + - Maintenance + - Specialist examples: without cookie handling: - value: - SESSIONID: abc123abc123 - userRole: Maintenance + value: + SESSIONID: abc123abc123 + userRole: Maintenance with cookie handling: - value: - userRole: Maintenance - + value: + userRole: Maintenance + '401': $ref: '#/components/responses/HTTP_401' '403': $ref: '#/components/responses/HTTP_403' '500': $ref: '#/components/responses/HTTP_500' - + '/logout': post: tags: @@ -183,7 +313,7 @@ paths: - general summary: Read the version information as list of specification references. description: >- - This command is mandatory. + This command is mandatory. responses: '200': description: Successful operation @@ -193,25 +323,25 @@ paths: type: array items: required: - - specUri + - specUri properties: - specUri: + specUri: + type: string + specDesc: type: string - specDesc: - type: string example: # Wireless Master with Profinet - - specUri: "http://www.io-link.com/io-link/10.222/V2.0" - specDesc: "JSON Integration for IO-Link - Draft V2.0" - - specUri: "http://www.io-link.com/io-link/10.222/V1.0" - specDesc: "JSON Integration for IO-Link V1.0" - - specUri: "http://www.io-link.com/io-link/10.002/V1.13" - specDesc: "IO-Link Interface and System Specification V1.13" - - specUri: "http://www.io-link.com/io-link/10.122/V1.1" - specDesc: "IO-Link Wireless System Extensions V1.1" - - specUri: "http://profibus.com/profinet/2.722/V2.4MU2" - specDesc: "Application Layer protocol for decentralized periphery - Technical Specification for PROFINET IO" - - specUri: "http://profibus.com/profinet/2.712/V2.4MU2" - specDesc: "Application Layer services for decentralized periphery - Technical Specification for PROFINET IO" + - specUri: 'http://www.io-link.com/io-link/10.222/V2.0' + specDesc: 'JSON Integration for IO-Link - Draft V2.0' + - specUri: 'http://www.io-link.com/io-link/10.222/V1.0' + specDesc: 'JSON Integration for IO-Link V1.0' + - specUri: 'http://www.io-link.com/io-link/10.002/V1.13' + specDesc: 'IO-Link Interface and System Specification V1.13' + - specUri: 'http://www.io-link.com/io-link/10.122/V1.1' + specDesc: 'IO-Link Wireless System Extensions V1.1' + - specUri: 'http://profibus.com/profinet/2.722/V2.4MU2' + specDesc: 'Application Layer protocol for decentralized periphery - Technical Specification for PROFINET IO' + - specUri: 'http://profibus.com/profinet/2.712/V2.4MU2' + specDesc: 'Application Layer services for decentralized periphery - Technical Specification for PROFINET IO' '/gateways': get: operationId: GetGateways @@ -242,18 +372,18 @@ paths: minimum: 1 example: - gatewayAlias: gateway1 - gatewayUrl: 'http://gateway1' + gatewayUrl: 'http://gateway1' - gatewayAlias: gatewayXYZ - gatewayUrl: 'http://gatewayXYZ' + gatewayUrl: 'http://gatewayXYZ' - gatewayAlias: BNI_IOL - gatewayUrl: 'https://BNI_IOL/' + gatewayUrl: 'https://BNI_IOL/' - gatewayAlias: master1 - gatewayUrl: 'https://192.168.88.191' + gatewayUrl: 'https://192.168.88.191' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' - + $ref: '#/components/responses/HTTP_500' + '/gateway/identification': get: operationId: GetGatewayIdentification @@ -269,9 +399,9 @@ paths: schema: $ref: '#/components/schemas/gatewayIdentificationGet' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '/gateway/capabilities': get: operationId: PostGatewayCapabilities @@ -287,9 +417,9 @@ paths: schema: $ref: '#/components/schemas/gatewayCapabilitiesGet' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '/gateway/configuration': get: operationId: GetGatewayConfiguration @@ -335,9 +465,9 @@ paths: subnetMask: 255.255.255.0 standardGateway: 192.168.200.1 '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' post: operationId: PostGatewayConfiguration tags: @@ -377,13 +507,13 @@ paths: responses: '204': description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' - + $ref: '#/components/responses/HTTP_500' + '/gateway/reset': post: operationId: PostGatewayReset @@ -394,13 +524,13 @@ paths: responses: '204': description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' + '400': # code 104 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' - + $ref: '#/components/responses/HTTP_500' + '/gateway/reboot': post: operationId: PostGatewayReboot @@ -411,20 +541,21 @@ paths: responses: '204': description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' + '400': # code 104 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' - + $ref: '#/components/responses/HTTP_500' + '/gateway/events': get: operationId: GetGatewayEvents tags: - gateway summary: Read the EventLog containing all events from Gateway, Masters, Ports and Devices. - description: Each Gateway shall have an Event Log object containing the events of the devices, ports and + description: + Each Gateway shall have an Event Log object containing the events of the devices, ports and the masters. The content of the Event Log can be read by getting the object "Gateway Event Log" parameters: - $ref: '#/components/parameters/eventOrigin' @@ -527,12 +658,12 @@ paths: code: 20480 mode: APPEARS text: Device hardware fault – Device exchange - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' delete: operationId: DeleteGatewayEvents tags: @@ -548,14 +679,14 @@ paths: - $ref: '#/components/parameters/eventBottom' responses: '200': - description: Successful operation - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' + description: Successful operation + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' - + $ref: '#/components/responses/HTTP_500' + '/mqtt/configuration': get: operationId: GetMqttConfiguration @@ -574,27 +705,27 @@ paths: examples: Active client: value: - clientMode: "ACTIVE" + clientMode: 'ACTIVE' serverAddress: 192.168.2.1:1883/mqttbroker username: iolink_json password: '1234' lastwill: - topic: process_data - message: Process data transfer stopped. - qos: 0_ONLY_ONCE - retain: true + topic: process_data + message: Process data transfer stopped. + qos: 0_ONLY_ONCE + retain: true keepAliveTime: 10 Inactive client: value: - clientMode: "INACTIVE" + clientMode: 'INACTIVE' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' post: operationId: PostMqttConfiguration @@ -617,10 +748,10 @@ paths: username: iolink_json password: '1234' lastwill: - topic: process_data - message: Process data transfer stopped. - qos: 0_ONLY_ONCE - retain: true + topic: process_data + message: Process data transfer stopped. + qos: 0_ONLY_ONCE + retain: true keepAliveTime: 10 Inactive Client: value: @@ -628,15 +759,15 @@ paths: responses: '204': description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' - + $ref: '#/components/responses/HTTP_500' + '/mqtt/topics': get: operationId: GetMqttTopics @@ -697,13 +828,13 @@ paths: value: 10 unit: ms '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' post: operationId: PostMqttTopicsTopicId tags: @@ -760,16 +891,16 @@ paths: application/json: schema: type: integer - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' '/mqtt/topics/{topicId}': get: operationId: GetMqttTopicsTopicId @@ -831,13 +962,13 @@ paths: value: 1000 unit: ms '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' delete: operationId: DeleteMqttTopicsTopicId tags: @@ -849,16 +980,16 @@ paths: responses: '204': description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' + '400': # code 104 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' '/mqtt/connectionstatus': get: operationId: GetMqttConnectionstatus @@ -874,13 +1005,13 @@ paths: schema: $ref: '#/components/schemas/mqttConnectionStatusGet' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' '/iodds': get: operationId: GetIodds @@ -902,16 +1033,16 @@ paths: application/json: schema: $ref: '#/components/schemas/ioddsGet' - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' delete: operationId: DeleteIodds tags: @@ -925,16 +1056,16 @@ paths: responses: '204': description: Successful operation - '400': # code 104, 305, 306 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' '/iodds/file': get: operationId: GetIoddsFile @@ -953,18 +1084,17 @@ paths: application/xml: schema: $ref: '#/components/schemas/ioddFile' - example: - "IODD XML file" - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' + example: 'IODD XML file' + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' post: operationId: PostIoddsFile tags: @@ -979,21 +1109,20 @@ paths: application/xml: schema: $ref: '#/components/schemas/ioddFile' - example: - "IODD XML file" + example: 'IODD XML file' responses: '204': description: Successful operation - '400': # code 104, 208, 603, 604, 605 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 208, 603, 604, 605 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' - '500': # code 101, 602 - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_404' + '500': # code 101, 602 + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' '/masters': get: operationId: GetMasters @@ -1011,9 +1140,9 @@ paths: schema: $ref: '#/components/schemas/identificationMasters' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/capabilities': get: operationId: GetMastersMasterNumberCapabilities @@ -1040,13 +1169,13 @@ paths: # wireless: # @todo wireless # value: # masterType: Wireless_Master - # numberOfPorts: 40 + # numberOfPorts: 40 '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/identification': get: operationId: GetMastersMasterNumberIdentification @@ -1064,11 +1193,11 @@ paths: schema: $ref: '#/components/schemas/identificationGet' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' post: operationId: PostMastersMasterNumberIdentification tags: @@ -1092,15 +1221,15 @@ paths: responses: '204': description: Successful operation - '400': # code 104, 201, 202, 203, 206, 208 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 206, 208 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' - + $ref: '#/components/responses/HTTP_500' + '/masters/{masterNumber}/configuration': #@todo wireles get: operationId: GetMastersMasterNumberConfiguration @@ -1109,7 +1238,7 @@ paths: summary: Read the actual configuration of the specified Master. description: Read the actual configuration of the specified Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/masterNumber' responses: '200': description: Successful operation @@ -1118,9 +1247,9 @@ paths: schema: $ref: '#/components/schemas/masterConfiguration' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' post: operationId: PostMastersMasterNumberConfiguration tags: @@ -1128,7 +1257,7 @@ paths: summary: Write the configuration of the specified Master. description: Write the configuration of the specified Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/masterNumber' requestBody: required: true content: @@ -1143,49 +1272,49 @@ paths: content: application/json: examples: - "104": + '104': value: code: 104 message: Action locked by another client - "201": + '201': value: code: 201 message: JSON parsing failed - "202": + '202': value: code: 202 message: JSON data value invalid - "203": + '203': value: code: 203 message: JSON data type invalid - "206": + '206': value: code: 206 message: JSON data value out of bounds - "208": + '208': value: code: 208 message: POST request without content '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' - -################################################################################ -# tracks -################################################################################ + $ref: '#/components/responses/HTTP_500' + + ################################################################################ + # tracks + ################################################################################ '/masters/{masterNumber}/tracks': #@todo wireles get: operationId: GetMastersMasterNumberTracks tags: - tracks - summary: Read the information about the available wireless tracks. Mandatory for W-Masters. + summary: Read the information about the available wireless tracks. Mandatory for W-Masters. parameters: - $ref: '#/components/parameters/masterNumber' description: >- - A W-Master can handle up to 5 transmission tracks in parallel, each trackNumber can handle a maximum of 8 W-Devices, thus supporting up to 40 W-Devices per W-Master. + A W-Master can handle up to 5 transmission tracks in parallel, each trackNumber can handle a maximum of 8 W-Devices, thus supporting up to 40 W-Devices per W-Master. responses: '200': description: Successful operation @@ -1213,20 +1342,20 @@ paths: example: tracksInfo: - trackNumber: 1 - statusInfo: "STOP" + statusInfo: 'STOP' - trackNumber: 2 - statusInfo: "CYCLIC" + statusInfo: 'CYCLIC' - trackNumber: 3 - statusInfo: "ROAMING" + statusInfo: 'ROAMING' - trackNumber: 4 - statusInfo: "SCANNING" + statusInfo: 'SCANNING' - trackNumber: 5 - statusInfo: "PAIRING" + statusInfo: 'PAIRING' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' - + $ref: '#/components/responses/HTTP_500' + '/masters/{masterNumber}/tracks/scan': #@todo wireles post: operationId: PostMastersMasterNumberTracksScan @@ -1236,7 +1365,7 @@ paths: parameters: - $ref: '#/components/parameters/masterNumber' description: >- - Discover unpaired W-Devices in the proximity of the W-Master. + Discover unpaired W-Devices in the proximity of the W-Master. requestBody: required: true content: @@ -1258,39 +1387,39 @@ paths: content: application/json: examples: - "104": + '104': value: code: 104 message: Action locked by another client - "201": + '201': value: code: 201 message: JSON parsing failed - "202": + '202': value: code: 202 message: JSON data value invalid - "203": + '203': value: code: 203 message: JSON data type invalid - "205": + '205': value: code: 205 message: JSON data value out of range - "208": + '208': value: code: 208 message: POST request without content - "701": + '701': value: code: 701 message: Data set incomplete - "702": + '702': value: code: 702 message: Data set not applicable - "703": + '703': value: code: 703 message: Data set combination incompatible @@ -1308,9 +1437,9 @@ paths: - tracks summary: Read back the last scan result. Mandatory for W-Masters. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: '#/components/parameters/masterNumber' description: >- - List the unique identifiers (UniqueID) of the discovered unpaired W-Devices. + List the unique identifiers (UniqueID) of the discovered unpaired W-Devices. responses: '200': description: Successful operation @@ -1335,17 +1464,17 @@ paths: maxLength: 32 example: - slotType: SSLOT - revisionId: "1.1" + revisionId: '1.1' uniqueId: 03:78:00:00:01:32:50:60:46 - lastSeen: "2019-02-19T08:02:51.786Z" + lastSeen: '2019-02-19T08:02:51.786Z' - slotType: DSLOT - revisionId: "1.1" + revisionId: '1.1' uniqueId: 03:78:00:00:01:32:50:60:47 - lastSeen: "2019-02-19T08:02:51.786Z" + lastSeen: '2019-02-19T08:02:51.786Z' - slotType: SSLOT - revisionId: "1.1" + revisionId: '1.1' uniqueId: 03:78:00:00:01:32:50:60:48 - lastSeen: "2019-02-19T08:02:51.786Z" + lastSeen: '2019-02-19T08:02:51.786Z' '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1353,7 +1482,7 @@ paths: '500': $ref: '#/components/responses/HTTP_500' '503': - $ref: '#/components/responses/HTTP_503' + $ref: '#/components/responses/HTTP_503' '/masters/{masterNumber}/tracks/{trackNumber}/status': #@todo wireles get: operationId: GetMastersMasterNumberTracksTrackNumberstatus @@ -1364,7 +1493,7 @@ paths: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/trackNumber' description: >- - Indicates the actual operational mode of the trackNumber (STOP, CYCLIC, SCAN, PAIRING, ROAMING) and the transmission power of the trackNumber radio. + Indicates the actual operational mode of the trackNumber (STOP, CYCLIC, SCAN, PAIRING, ROAMING) and the transmission power of the trackNumber radio. responses: '200': description: Successful operation @@ -1394,9 +1523,9 @@ paths: minimum: 1 maximum: 31 example: - trackNumber: 2 - statusInfo: "STOP" - txPower: 31 + trackNumber: 2 + statusInfo: 'STOP' + txPower: 31 '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1414,7 +1543,7 @@ paths: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/trackNumber' description: >- - Monitoring the wireless environment regarding reliability indicating link quality. + Monitoring the wireless environment regarding reliability indicating link quality. responses: '200': description: Successful operation @@ -1468,7 +1597,7 @@ paths: $ref: '#/components/responses/HTTP_404' '500': $ref: '#/components/responses/HTTP_500' - + '/masters/{masterNumber}/tracks/{trackNumber}/statisticsChannel': #@todo wireles get: operationId: GetMastersMasterNumberTracksTrackNumberstatisticsChannel @@ -1479,7 +1608,7 @@ paths: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/trackNumber' description: >- - Monitoring the wireless channel regarding reliability indicating link quality. 100 transmissions per channel are computed. + Monitoring the wireless channel regarding reliability indicating link quality. 100 transmissions per channel are computed. responses: '200': description: Successful operation @@ -1540,43 +1669,43 @@ paths: content: application/json: examples: - "104": + '104': value: code: 104 message: Action locked by another client - "201": + '201': value: code: 201 message: JSON parsing failed - "202": + '202': value: code: 202 message: JSON data value invalid - "203": + '203': value: code: 203 message: JSON data type invalid - "204": + '204': value: code: 204 message: Enumeration value unknown - "205": + '205': value: code: 205 message: JSON data value out of range - "208": + '208': value: code: 208 message: POST request without content - "701": + '701': value: code: 701 message: Data set incomplete - "702": + '702': value: code: 702 message: Data set not applicable - "703": + '703': value: code: 703 message: Data set combination incompatible @@ -1587,9 +1716,9 @@ paths: '500': $ref: '#/components/responses/HTTP_500' -################################################################################ -# ports -################################################################################ + ################################################################################ + # ports + ################################################################################ '/masters/{masterNumber}/ports': get: operationId: GetMastersMasterNumberPorts @@ -1619,17 +1748,17 @@ paths: type: string statusInfo: type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE # slotNumber: # @todo wireles # type: number # trackNumber: @@ -1648,32 +1777,32 @@ paths: # type: number # productName: # type: string - example: - - portNumber: 1 - statusInfo: "DEVICE_ONLINE" - deviceAlias: "Distance_Sensor" - - portNumber: 2 - statusInfo: "DIGITAL_INPUT_C/Q" - deviceAlias: "Switching_Sensor" - # - portNumber: 3 # @todo wireles - # trackNumber: 1 - # slotNumber: 2 - # slotType: "SSLOT" - # statusInfo: "DEVICE_ONLINE" - # deviceAlias: "Wireless_Bridge" - # deviceInfo: - # vendorId: 888 - # deviceId: 10485760 - # productName: "BNI IOW-302-W01-K080" - - portNumber: 4 - statusInfo: "DEACTIVATED" - deviceAlias: "Empty_port" + example: + - portNumber: 1 + statusInfo: 'DEVICE_ONLINE' + deviceAlias: 'Distance_Sensor' + - portNumber: 2 + statusInfo: 'DIGITAL_INPUT_C/Q' + deviceAlias: 'Switching_Sensor' + # - portNumber: 3 # @todo wireles + # trackNumber: 1 + # slotNumber: 2 + # slotType: "SSLOT" + # statusInfo: "DEVICE_ONLINE" + # deviceAlias: "Wireless_Bridge" + # deviceInfo: + # vendorId: 888 + # deviceId: 10485760 + # productName: "BNI IOW-302-W01-K080" + - portNumber: 4 + statusInfo: 'DEACTIVATED' + deviceAlias: 'Empty_port' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/ports/{portNumber}/capabilities': get: operationId: GetMastersMasterNumberPortsPortNumberCapabilities @@ -1703,7 +1832,7 @@ paths: maxPowerSupply: value: 2.0 unit: A - portType: CLASS_B + portType: CLASS_B CLASS_A_WITH_PORT_POWER_OFF_ON: value: maxPowerSupply: @@ -1721,25 +1850,25 @@ paths: maxPowerSupply: value: 0.2 unit: A - portType: FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS + portType: FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS FAILSAFE_PORT_B: value: maxPowerSupply: value: 2.0 unit: A - portType: FAILSAFE_PORT_B + portType: FAILSAFE_PORT_B WIRELESS: value: portType: WIRELESS_MASTER - slotType: "DSLOT" + slotType: 'DSLOT' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' - + $ref: '#/components/responses/HTTP_500' + '/masters/{masterNumber}/ports/{portNumber}/status': get: operationId: GetMastersMasterNumberPortsPortNumberStatus @@ -1763,18 +1892,18 @@ paths: properties: statusInfo: type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + ioLinkRevision: description: >- Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or @@ -1803,8 +1932,8 @@ paths: portQualityInfo: type: object required: - - value - - unit + - value + - unit properties: value: type: integer @@ -1812,35 +1941,35 @@ paths: maximum: 100 unit: type: string - enum: - - "%" + enum: + - '%' examples: wired: value: - statusInfo: "DEVICE_ONLINE" - ioLinkRevision: "1.1" + statusInfo: 'DEVICE_ONLINE' + ioLinkRevision: '1.1' transmissionRate: COM2 masterCycleTime: value: 2.3 unit: ms wireless: # @todo wireles value: - statusInfo: "DEVICE_ONLINE" - ioLinkRevision: "1.1" - transmissionRate: WIRELESS - masterCycleTime: + statusInfo: 'DEVICE_ONLINE' + ioLinkRevision: '1.1' + transmissionRate: WIRELESS + masterCycleTime: value: 5 - unit: "ms" + unit: 'ms' portQuality: value: 100 - unit: "%" + unit: '%' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/ports/{portNumber}/configuration': get: operationId: GetMastersMasterNumberPortsPortNumberConfiguration @@ -1869,11 +1998,11 @@ paths: deviceId: 333 deviceAlias: Distance_sensor_1 '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' post: operationId: PostMastersMasterNumberPortsPortNumberConfiguration tags: @@ -1887,7 +2016,7 @@ paths: required: true content: application/json: - schema: + schema: $ref: '#/components/schemas/portConfigurationPost' examples: Complete configuration: @@ -1913,14 +2042,14 @@ paths: responses: '204': description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '/masters/{masterNumber}/ports/{portNumber}/datastorage': get: operationId: GetMastersMasterNumberPortsPortNumberDatastorages @@ -1953,11 +2082,11 @@ paths: header: {} content: '' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' post: operationId: PostMastersMasterNumberPortsPortNumberDatastorages tags: @@ -1989,17 +2118,17 @@ paths: responses: '204': description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' -################################################################################ -# devices -################################################################################ + $ref: '#/components/responses/HTTP_500' + ################################################################################ + # devices + ################################################################################ '/devices': get: @@ -2046,9 +2175,9 @@ paths: masterNumber: 1 portNumber: 4 '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '/devices/{deviceAlias}/capabilities': get: operationId: GetDevicesDeviceAliasCapabilities @@ -2070,14 +2199,14 @@ paths: value: 2.3 unit: ms supportedProfiles: [10, 32770] - '400': # code 307 - $ref: '#/components/responses/HTTP_400' + '400': # code 307 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '/devices/{deviceAlias}/identification': get: operationId: GetDevicesDeviceAliasidentification @@ -2097,14 +2226,14 @@ paths: application/json: schema: $ref: '#/components/schemas/deviceIdentificationGet' - '400': # code 307 - $ref: '#/components/responses/HTTP_400' + '400': # code 307 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' post: operationId: PostDevicesDeviceAliasidentification tags: @@ -2128,14 +2257,14 @@ paths: responses: '204': description: Successful operation - '400': # code 104, 201, 202, 203, 206, 208, 307 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 206, 208, 307 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '/devices/{deviceAlias}/processdata/value': get: operationId: GetDevicesDeviceAliasProcessData @@ -2154,8 +2283,8 @@ paths: schema: $ref: '#/components/schemas/deviceProcessDataValueGet' examples: - 'Format=byteArray, CQ in IO-Link (only input), IQ in digital output': - value: + ? 'Format=byteArray, CQ in IO-Link (only input), IQ in digital output' + : value: getData: ioLink: valid: true @@ -2165,34 +2294,34 @@ paths: - 216 setData: iqValue: true - 'Format=iodd, CQ in IO-Link (input and output), IQ in digital input': - value: - getData: - ioLink: - valid: true - value: - Distance: - value: 55 - unit: "cm" - Quality: - value: 12 - iqValue: true - setData: - ioLink: - valid: true - value: - Buzzer: - value: 5 - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' + ? 'Format=iodd, CQ in IO-Link (input and output), IQ in digital input' + : value: + getData: + ioLink: + valid: true + value: + Distance: + value: 55 + unit: 'cm' + Quality: + value: 12 + iqValue: true + setData: + ioLink: + valid: true + value: + Buzzer: + value: 5 + '400': # code 305, 306, 601 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' post: operationId: PostDevicesDeviceAliasProcessData tags: @@ -2208,8 +2337,8 @@ paths: schema: $ref: '#/components/schemas/deviceProcessDataValuePost' examples: - 'format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output': - value: + ? 'format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output' + : value: ioLink: valid: true value: @@ -2230,17 +2359,17 @@ paths: responses: '204': description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' - + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/processdata/getdata/value': get: operationId: GetDevicesDeviceAliasProcessDataGetData @@ -2260,8 +2389,8 @@ paths: schema: $ref: '#/components/schemas/processDataValue' examples: - 'Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input': - value: + ? 'Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input' + : value: ioLink: valid: true value: @@ -2276,21 +2405,21 @@ paths: value: Distance: value: 55 - unit: "cm" + unit: 'cm' Quality: value: 12 iqValue: true - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' + '400': # code 305, 306, 601 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' - + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/processdata/setdata/value': get: operationId: GetDevicesDeviceAliasProcessDataSetData @@ -2310,8 +2439,8 @@ paths: schema: $ref: '#/components/schemas/processDataValue' examples: - 'Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input': - value: + ? 'Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input' + : value: cqValue: false 'Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input': value: @@ -2322,17 +2451,17 @@ paths: value: true Valve_2: value: false - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' + '400': # code 305, 306, 601 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' - + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters': get: operationId: GetDevicesDeviceAliasParameters @@ -2351,17 +2480,17 @@ paths: application/json: schema: $ref: '#/components/schemas/deviceParametersGet' - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' + '400': # code 305, 306, 601 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' - + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{index}/value': get: operationId: GetDevicesDeviceAliasParametersIndexValue @@ -2382,8 +2511,8 @@ paths: $ref: '#/components/schemas/deviceParameterValueGetPost' examples: format=byteArray: - value: - value: + value: + value: - 0 - 156 - 125 @@ -2391,25 +2520,25 @@ paths: 'format=iodd, simple type': value: value: 15.2 - unit: "cm" + unit: 'cm' 'format=iodd, complex type': value: value: Distance: value: 15 - unit: "cm" + unit: 'cm' Quality: value: 12 - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' + '400': # code 305, 306, 307, 311, 601 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' post: operationId: PostDevicesDeviceAliasParametersIndexValue @@ -2419,7 +2548,7 @@ paths: description: Write a parameter value with the given index to the specified Device. parameters: - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' + - $ref: '#/components/parameters/index' requestBody: required: true content: @@ -2428,38 +2557,38 @@ paths: $ref: '#/components/schemas/deviceParameterValueGetPost' examples: 'payload as byteArray': - value: - value: - - 0 - - 156 - - 125 - - 25 + value: + value: + - 0 + - 156 + - 125 + - 25 'payload as iodd, simple type': value: value: 15.2 - unit: "cm" + unit: 'cm' 'payload as iodd, complex type': value: value: Distance: value: 15 - unit: "cm" + unit: 'cm' Quality: value: 12 responses: '204': description: Successful operation - '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' + '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' - + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{parameterName}/value': get: operationId: GetDevicesDeviceAliasParametersValue @@ -2482,37 +2611,30 @@ paths: $ref: '#/components/schemas/deviceParameterValueGetPost' examples: format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } + value: { 'value': [0, 156, 125, 25] } 'format=iodd, simple type': value: value: 15.2 - unit: "cm" + unit: 'cm' 'format=iodd, complex type': value: value: Distance: value: 15 - unit: "cm" + unit: 'cm' Quality: value: 12 - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' + '400': # code 305, 306, 307, 311, 601 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' post: operationId: PostDevicesDeviceAliasParametersValue tags: @@ -2532,40 +2654,33 @@ paths: $ref: '#/components/schemas/deviceParameterValueGetPost' examples: format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } + value: { 'value': [0, 156, 125, 25] } 'format=iodd, simple type': value: value: 15.2 - unit: "cm" + unit: 'cm' 'format=iodd, complex type': value: value: Distance: value: 15 - unit: "cm" + unit: 'cm' Quality: value: 12 responses: '204': description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' - + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{index}/subindices': get: operationId: GetDevicesDeviceAliasParametersIndexSubindices @@ -2585,17 +2700,17 @@ paths: application/json: schema: $ref: '#/components/schemas/deviceSubParametersGet' - '400': # code 601 - $ref: '#/components/responses/HTTP_400' + '400': # code 601 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' - + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{parameterName}/subindices': get: operationId: GetDevicesDeviceAliasParametersSubindices @@ -2615,17 +2730,17 @@ paths: application/json: schema: $ref: '#/components/schemas/deviceSubParametersGet' - '400': # code 601 - $ref: '#/components/responses/HTTP_400' + '400': # code 601 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' - + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value': get: operationId: GetDevicesDeviceAliasParametersSubindicesSubindexValue @@ -2648,7 +2763,7 @@ paths: $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' examples: format=byteArray: - value: + value: value: - 0 - 156 @@ -2659,17 +2774,17 @@ paths: value: Distance: value: 15.2 - unit: "cm" - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' + unit: 'cm' + '400': # code 305, 306, 307, 311, 601 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' post: operationId: PostDevicesDeviceAliasParametersSubindicesSubindexValue tags: @@ -2689,34 +2804,27 @@ paths: $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' examples: format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } + value: { 'value': [0, 156, 125, 25] } format=iodd: value: value: 15.2 - unit: "cm" + unit: 'cm' responses: '204': description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' - - '/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value': - get: + $ref: '#/components/responses/HTTP_501' + + ? '/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value' + : get: operationId: GetDevicesDeviceAliasParametersSubindicesValue tags: - devices @@ -2738,29 +2846,22 @@ paths: $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' examples: format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } + value: { 'value': [0, 156, 125, 25] } format=iodd: value: value: 15.2 - unit: "cm" + unit: 'cm' - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' + '400': # code 305, 306, 307, 311, 601 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' post: operationId: PostDevicesDeviceAliasParametersSubindicesValue tags: @@ -2781,32 +2882,25 @@ paths: $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' examples: format=byteArray: - value: { - "value": [ - 0, - 156, - 125, - 25 - ] - } + value: { 'value': [0, 156, 125, 25] } format=iodd: value: value: 15.2 - unit: "cm" + unit: 'cm' responses: '204': description: Successful operation - '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' + '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' - + $ref: '#/components/responses/HTTP_501' + '/devices/{deviceAlias}/blockparameterization': post: operationId: PostDevicesDeviceAliasBlockparameterization @@ -2972,16 +3066,16 @@ paths: iolinkError: code: 32817 message: Parameter value above limit - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' + '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' '501': - $ref: '#/components/responses/HTTP_501' + $ref: '#/components/responses/HTTP_501' '/devices/{deviceAlias}/events': get: @@ -2992,7 +3086,7 @@ paths: - $ref: '#/components/parameters/deviceAlias' - $ref: '#/components/parameters/eventTop' - $ref: '#/components/parameters/eventBottom' - summary: Reading the EventLog filtered for a specific Device. + summary: Reading the EventLog filtered for a specific Device. description: Reading the EventLog filtered for a specific Device. responses: '200': @@ -3003,14 +3097,14 @@ paths: application/json: schema: $ref: '#/components/schemas/deviceEventsGet' - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' + '400': # code 305, 306 + $ref: '#/components/responses/HTTP_400' '403': - $ref: '#/components/responses/HTTP_403' + $ref: '#/components/responses/HTTP_403' '404': - $ref: '#/components/responses/HTTP_404' + $ref: '#/components/responses/HTTP_404' '500': - $ref: '#/components/responses/HTTP_500' + $ref: '#/components/responses/HTTP_500' components: schemas: cycleTime: @@ -3022,8 +3116,7 @@ components: value: type: number minimum: 0 - example: - 10 + example: 10 unit: type: string enum: @@ -3103,24 +3196,20 @@ components: properties: parameterName: type: string - example: - Direct_Parameters_1 + example: Direct_Parameters_1 subParameterName: type: string - example: - Min_Cycle_Time + example: Min_Cycle_Time - type: object required: - index properties: index: type: integer - example: - 233 + example: 233 subindex: type: integer - example: - 2 + example: 2 eventOrigin: type: string enum: @@ -3231,8 +3320,8 @@ components: format: uri productInstanceUri: type: string - gsdUri: - type: string + gsdUri: + type: string applicationSpecificTag: type: string minLength: 1 @@ -3258,7 +3347,7 @@ components: firmwareRevision: 3.2.1.888R vendorUrl: 'http://www.io-link.com' productInstanceUri: 'http://www.io-link.com/PROD123456/IOLWM123456' - gsdUri: 'https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml' + gsdUri: 'https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml' manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' applicationSpecificTag: Fallback reader locationTag: Down under @@ -3647,7 +3736,7 @@ components: type: string description: Unique deviceAlias. - oneOf: - - type: object + - type: object properties: event: $ref: '#/components/schemas/event' @@ -3757,7 +3846,7 @@ components: vendorText: type: string vendorUrl: - type: string + type: string productName: description: Mandatory if the Device suports the ISDU. type: string @@ -3782,9 +3871,9 @@ components: firmwareRevision: type: string productInstanceUri: - type: string + type: string ioddUri: - type: string + type: string applicationSpecificTag: type: string minLength: 1 @@ -3811,7 +3900,7 @@ components: firmwareRevision: 3.2.1.888R vendorUrl: 'http://www.sick.com' productInstanceUri: 'http://www.sick.com/SLG-2/Serial123456' - ioddUri: 'https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1' + ioddUri: 'https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1' # 'https://ioddfinder.io-link.com/api/vendors/26/iodds/11541/files/zip/rated' # 'https://ioddfinder.io-link.com/productvariants/search/32872' applicationSpecificTag: Fallback light switch @@ -3854,7 +3943,7 @@ components: type: string enum: - SSLOT - - DSLOT + - DSLOT maxPowerSupply: type: object required: @@ -3932,7 +4021,7 @@ components: vendorId: 26 deviceId: 333 deviceAlias: Distance_sensor_1 - + masterConfiguration: properties: masterId: @@ -3950,337 +4039,337 @@ components: properties: value: type: integer - minimum: 5 - maximum: 65535 + minimum: 5 + maximum: 65535 unit: type: string - enum: + enum: - s blacklist: type: object required: - all properties: - "2402": + '2402': type: boolean default: false - "2403": + '2403': type: boolean default: false - "2404": + '2404': type: boolean default: false - "2405": + '2405': type: boolean default: false - "2406": + '2406': type: boolean default: false - "2407": + '2407': type: boolean default: false - "2408": + '2408': type: boolean default: false - "2409": + '2409': type: boolean default: false - "2410": + '2410': type: boolean default: false - "2411": + '2411': type: boolean default: false - "2412": + '2412': type: boolean default: false - "2413": + '2413': type: boolean default: false - "2414": + '2414': type: boolean default: false - "2415": + '2415': type: boolean default: false - "2416": + '2416': type: boolean default: false - "2417": + '2417': type: boolean default: false - "2418": + '2418': type: boolean default: false - "2419": + '2419': type: boolean default: false - "2420": + '2420': type: boolean default: false - "2421": + '2421': type: boolean default: false - "2422": + '2422': type: boolean default: false - "2423": + '2423': type: boolean default: false - "2424": + '2424': type: boolean default: false - "2425": + '2425': type: boolean default: false - "2426": + '2426': type: boolean default: false - "2427": + '2427': type: boolean default: false - "2428": + '2428': type: boolean default: false - "2429": + '2429': type: boolean default: false - "2430": + '2430': type: boolean default: false - "2431": + '2431': type: boolean default: false - "2432": + '2432': type: boolean default: false - "2433": + '2433': type: boolean default: false - "2434": + '2434': type: boolean default: false - "2435": + '2435': type: boolean default: false - "2436": + '2436': type: boolean default: false - "2437": + '2437': type: boolean default: false - "2438": + '2438': type: boolean default: false - "2439": + '2439': type: boolean default: false - "2440": + '2440': type: boolean default: false - "2441": + '2441': type: boolean default: false - "2442": + '2442': type: boolean default: false - "2443": + '2443': type: boolean default: false - "2444": + '2444': type: boolean default: false - "2445": + '2445': type: boolean default: false - "2446": + '2446': type: boolean default: false - "2447": + '2447': type: boolean default: false - "2448": + '2448': type: boolean default: false - "2449": + '2449': type: boolean default: false - "2450": + '2450': type: boolean default: false - "2451": + '2451': type: boolean default: false - "2452": + '2452': type: boolean default: false - "2453": + '2453': type: boolean default: false - "2454": + '2454': type: boolean default: false - "2455": + '2455': type: boolean default: false - "2456": + '2456': type: boolean default: false - "2457": + '2457': type: boolean default: false - "2458": + '2458': type: boolean default: false - "2459": + '2459': type: boolean default: false - "2460": + '2460': type: boolean default: false - "2461": + '2461': type: boolean default: false - "2462": + '2462': type: boolean default: false - "2463": + '2463': type: boolean default: false - "2464": + '2464': type: boolean default: false - "2465": + '2465': type: boolean default: false - "2466": + '2466': type: boolean default: false - "2467": + '2467': type: boolean default: false - "2468": + '2468': type: boolean default: false - "2469": + '2469': type: boolean default: false - "2470": + '2470': type: boolean default: false - "2471": + '2471': type: boolean default: false - "2472": + '2472': type: boolean default: false - "2473": + '2473': type: boolean default: false - "2474": + '2474': type: boolean default: false - "2475": + '2475': type: boolean default: false - "2476": + '2476': type: boolean default: false - "2477": + '2477': type: boolean default: false - "2478": + '2478': type: boolean default: false - "2479": + '2479': type: boolean default: false example: masterId: 5 ahtEnable: false - pairingTimeout: + pairingTimeout: value: 25 unit: s blackList: - "2402": false - "2403": false - "2404": false - "2405": false - "2406": false - "2407": false - "2408": false - "2409": false - "2410": false - "2411": false - "2412": false - "2413": false - "2414": false - "2415": false - "2416": false - "2417": false - "2418": false - "2419": false - "2420": false - "2421": false - "2422": false - "2423": false - "2424": false - "2425": false - "2426": false - "2427": false - "2428": false - "2429": false - "2430": false - "2431": false - "2432": false - "2433": false - "2434": false - "2435": false - "2436": false - "2437": false - "2438": false - "2439": false - "2440": false - "2441": false - "2442": false - "2443": false - "2444": false - "2445": false - "2446": false - "2447": false - "2448": false - "2449": false - "2450": false - "2451": false - "2452": false - "2453": false - "2454": false - "2455": false - "2456": false - "2457": false - "2458": false - "2459": false - "2460": false - "2461": false - "2462": false - "2463": false - "2464": false - "2465": false - "2466": false - "2467": false - "2468": false - "2469": false - "2470": false - "2471": false - "2472": false - "2473": false - "2474": false - "2475": false - "2476": false - "2477": false - "2478": false - "2479": false - + '2402': false + '2403': false + '2404': false + '2405': false + '2406': false + '2407': false + '2408': false + '2409': false + '2410': false + '2411': false + '2412': false + '2413': false + '2414': false + '2415': false + '2416': false + '2417': false + '2418': false + '2419': false + '2420': false + '2421': false + '2422': false + '2423': false + '2424': false + '2425': false + '2426': false + '2427': false + '2428': false + '2429': false + '2430': false + '2431': false + '2432': false + '2433': false + '2434': false + '2435': false + '2436': false + '2437': false + '2438': false + '2439': false + '2440': false + '2441': false + '2442': false + '2443': false + '2444': false + '2445': false + '2446': false + '2447': false + '2448': false + '2449': false + '2450': false + '2451': false + '2452': false + '2453': false + '2454': false + '2455': false + '2456': false + '2457': false + '2458': false + '2459': false + '2460': false + '2461': false + '2462': false + '2463': false + '2464': false + '2465': false + '2466': false + '2467': false + '2468': false + '2469': false + '2470': false + '2471': false + '2472': false + '2473': false + '2474': false + '2475': false + '2476': false + '2477': false + '2478': false + '2479': false + tracksStatisticsChannel: properties: trackNumber: @@ -4292,400 +4381,400 @@ components: # required: # @todo wireles # - all properties: - "2402": + '2402': type: integer minimum: 0 - maximum: 65535 # 0 to 100, 65535 means no data available - "2403": + maximum: 65535 # 0 to 100, 65535 means no data available + '2403': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2404": + '2404': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2405": + '2405': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2406": + '2406': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2407": + '2407': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2408": + '2408': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2409": + '2409': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2410": + '2410': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2411": + '2411': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2412": + '2412': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2413": + '2413': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2414": + '2414': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2415": + '2415': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2416": + '2416': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2417": + '2417': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2418": + '2418': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2419": + '2419': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2420": + '2420': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2421": + '2421': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2422": + '2422': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2423": + '2423': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2424": + '2424': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2425": + '2425': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2426": + '2426': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2427": + '2427': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2428": + '2428': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2429": + '2429': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2430": + '2430': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2431": + '2431': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2432": + '2432': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2433": + '2433': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2434": + '2434': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2435": + '2435': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2436": + '2436': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2437": + '2437': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2438": + '2438': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2439": + '2439': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2440": + '2440': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2441": + '2441': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2442": + '2442': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2443": + '2443': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2444": + '2444': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2445": + '2445': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2446": + '2446': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2447": + '2447': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2448": + '2448': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2449": + '2449': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2450": + '2450': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2451": + '2451': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2452": + '2452': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2453": + '2453': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2454": + '2454': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2455": + '2455': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2456": + '2456': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2457": + '2457': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2458": + '2458': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2459": + '2459': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2460": + '2460': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2461": + '2461': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2462": + '2462': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2463": + '2463': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2464": + '2464': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2465": + '2465': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2466": + '2466': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2467": + '2467': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2468": + '2468': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2469": + '2469': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2470": + '2470': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2471": + '2471': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2472": + '2472': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2473": + '2473': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2474": + '2474': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2475": + '2475': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2476": + '2476': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2477": + '2477': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2478": + '2478': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available - "2479": + '2479': type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available example: trackNumber: 2 channelErrors: - "2402": 0 - "2403": 0 - "2404": 0 - "2405": 0 - "2406": 0 - "2407": 3 - "2408": 1 - "2409": 5 - "2410": 9 - "2411": 6 - "2412": 4 - "2413": 1 - "2414": 0 - "2415": 0 - "2416": 0 - "2417": 0 - "2418": 0 - "2419": 0 - "2420": 0 - "2421": 0 - "2422": 0 - "2423": 0 - "2424": 0 - "2425": 0 - "2426": 0 - "2427": 0 - "2428": 0 - "2429": 0 - "2430": 0 - "2431": 0 - "2432": 0 - "2433": 0 - "2434": 0 - "2435": 3 - "2436": 2 - "2437": 5 - "2438": 2 - "2439": 0 - "2440": 0 - "2441": 0 - "2442": 0 - "2443": 0 - "2444": 0 - "2445": 0 - "2446": 0 - "2447": 0 - "2448": 0 - "2449": 0 - "2450": 0 - "2451": 0 - "2452": 0 - "2453": 0 - "2454": 0 - "2455": 0 - "2456": 0 - "2457": 0 - "2458": 0 - "2459": 0 - "2460": 0 - "2461": 0 - "2462": 0 - "2463": 0 - "2464": 0 - "2465": 0 - "2466": 0 - "2467": 0 - "2468": 0 - "2469": 0 - "2470": 0 - "2471": 0 - "2472": 0 - "2473": 0 - "2474": 0 - "2475": 0 - "2476": 0 - "2477": 0 - "2478": 0 - "2479": 0 - + '2402': 0 + '2403': 0 + '2404': 0 + '2405': 0 + '2406': 0 + '2407': 3 + '2408': 1 + '2409': 5 + '2410': 9 + '2411': 6 + '2412': 4 + '2413': 1 + '2414': 0 + '2415': 0 + '2416': 0 + '2417': 0 + '2418': 0 + '2419': 0 + '2420': 0 + '2421': 0 + '2422': 0 + '2423': 0 + '2424': 0 + '2425': 0 + '2426': 0 + '2427': 0 + '2428': 0 + '2429': 0 + '2430': 0 + '2431': 0 + '2432': 0 + '2433': 0 + '2434': 0 + '2435': 3 + '2436': 2 + '2437': 5 + '2438': 2 + '2439': 0 + '2440': 0 + '2441': 0 + '2442': 0 + '2443': 0 + '2444': 0 + '2445': 0 + '2446': 0 + '2447': 0 + '2448': 0 + '2449': 0 + '2450': 0 + '2451': 0 + '2452': 0 + '2453': 0 + '2454': 0 + '2455': 0 + '2456': 0 + '2457': 0 + '2458': 0 + '2459': 0 + '2460': 0 + '2461': 0 + '2462': 0 + '2463': 0 + '2464': 0 + '2465': 0 + '2466': 0 + '2467': 0 + '2468': 0 + '2469': 0 + '2470': 0 + '2471': 0 + '2472': 0 + '2473': 0 + '2474': 0 + '2475': 0 + '2476': 0 + '2477': 0 + '2478': 0 + '2479': 0 + trackConfiguration: properties: statusInfo: @@ -4701,7 +4790,7 @@ components: maximum: 31 example: trackMode: CYCLIC - + trackConfigurationPost: properties: statusInfo: @@ -4718,7 +4807,7 @@ components: example: trackMode: CYCLIC txPower: 20 - + # wirelessPortConfigurationGet: # @todo wireles # properties: # portMode: @@ -4754,7 +4843,7 @@ components: # maximum: 315 ## Step size 5ms # unit: # type: string - # enum: + # enum: # - ms # trackNumber: # type: integer @@ -4768,7 +4857,7 @@ components: # type: string # enum: # - "SSLOT" - # - "DSLOT" + # - "DSLOT" # maxRetry: # type: integer # minimum: 2 @@ -4793,7 +4882,7 @@ components: # deviceTxPower: # type: integer # minimum: 0 - # maximum: 31 + # maximum: 31 # lowPowerDevice: # type: string # enum: @@ -4817,17 +4906,17 @@ components: # unit: ms # trackNumber: 5 # slotNumber: 1 - # slotType: SSLOT + # slotType: SSLOT # maxRetry: 20 # imaTime: # base: 1664us # multiplier: 60 - # deviceTxPower: 31 + # deviceTxPower: 31 # lowPowerDevice: NORMAL # maxPDSegLength: 0 # uniqueId: 03:78:00:00:01:32:50:60:46 # deviceAlias: "Port_X01" - + # wirelessPortConfigurationPost: # @todo wireles # properties: # portMode: @@ -4863,12 +4952,12 @@ components: # maximum: 315 ## Step size 5ms # unit: # type: string - # enum: + # enum: # - ms # trackNumber: # type: integer # minimum: 1 - # maximum: 5 + # maximum: 5 # slotNumber: # type: integer # minimum: 0 @@ -4877,7 +4966,7 @@ components: # type: string # enum: # - "SSLOT" - # - "DSLOT" + # - "DSLOT" # maxRetry: # type: integer # minimum: 2 @@ -4898,11 +4987,11 @@ components: # multiplier: # type: integer # minimum: 1 - # maximum: 255 + # maximum: 255 # deviceTxPower: # type: integer # minimum: 0 - # maximum: 31 + # maximum: 31 # lowPowerDevice: # type: string # enum: @@ -4924,19 +5013,19 @@ components: # unit: ms # trackNumber: 5 # slotNumber: 1 - # slotType: SSLOT + # slotType: SSLOT # maxRetry: 20 # imaTime: # base: 1664us # multiplier: 60 - # deviceTxPower: 31 + # deviceTxPower: 31 # lowPowerDevice: NORMAL # maxPDSegLength: 0 # uniqueId: 03:78:00:00:01:32:50:60:46 portConfigurationPost: - description: "Note: At least one of the mode, iqConfiguration, - deviceAlias properties shall be included to the POST request" + description: 'Note: At least one of the mode, iqConfiguration, + deviceAlias properties shall be included to the POST request' type: object properties: mode: @@ -5039,7 +5128,7 @@ components: type: object properties: ioLink: - description: Process data in IO-Link mode + description: Process data in IO-Link mode allOf: - type: object required: @@ -5163,13 +5252,13 @@ components: description: only for complex parameters (records or arrays) required. Not allowed for simple parameters example: - index: 16 - parameterName: "Vendor_Name" + parameterName: 'Vendor_Name' - index: 18 - parameterName: "Product_Name" + parameterName: 'Product_Name' - index: 19 - parameterName: "ProductID" + parameterName: 'ProductID' - index: 60 - parameterName: "SSC_1_Param" + parameterName: 'SSC_1_Param' subindexAccessSupported: true deviceSubParametersGet: type: array @@ -5197,7 +5286,7 @@ components: deviceParameterValueGetPost: type: object properties: - value: + value: oneOf: - $ref: '#/components/schemas/deviceByteArrayTypeValue' - $ref: '#/components/schemas/deviceSimpleTypeValue' @@ -5209,7 +5298,7 @@ components: deviceParameterSubindexValueGetPost: type: object properties: - value: + value: oneOf: - $ref: '#/components/schemas/deviceByteArrayTypeValue' - $ref: '#/components/schemas/deviceSimpleTypeValue' @@ -5299,8 +5388,8 @@ components: minLength: 1 iolinkError: $ref: '#/components/schemas/iolinkErrorObject' - - #--------------------------------------------------------------------------- + + #--------------------------------------------------------------------------- parameters: vendorId: name: vendorId @@ -5354,7 +5443,7 @@ components: schema: type: integer minimum: 1 - required: true + required: true portNumber: name: portNumber in: path @@ -5469,106 +5558,106 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - "104": - description: Fieldbus controller or another gateway protocol has claimed priority - value: - code: 104 - message: Action locked by another client - "201": - description: Error while parsing the incoming JSON object - value: - code: 201 - message: JSON parsing failed - "202": - description: Error while parsing a specific JSON value, e.g. a malformed IP address - value: - code: 202 - message: JSON data value invalid - "203": - description: e.g. string instead of number - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - description: Exceeds the minimum or maximum value - value: - code: 205 - message: JSON data value out of range - "206": - description: An array or string was accessed exceeding its maximum length - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST or PUT request without content - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "401": - value: - code: 401 - message: Data storage mismatch - "501": - value: - code: 501 - message: I/Q is not configured as DIGITAL_OUTPUT - "502": - value: - code: 502 - message: C/Q is not configured as DIGITAL_OUTPUT - "503": - value: - code: 503 - message: IO-Link Device has no output process data - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - "603": - value: - code: 603 - message: IODD upload failed. IODD XML invalid - "604": - value: - code: 604 - message: IODD upload failed. CRC error - "605": - value: - code: 605 - message: IODD upload failed. Parsing error - "701": - value: - code: 701 - message: Data set incomplete - "702": - description: whole data set is rejected - value: - code: 702 - message: Data set not applicable - "703": - description: whole data set is rejected - value: - code: 703 - message: Data set combination incompatible + '104': + description: Fieldbus controller or another gateway protocol has claimed priority + value: + code: 104 + message: Action locked by another client + '201': + description: Error while parsing the incoming JSON object + value: + code: 201 + message: JSON parsing failed + '202': + description: Error while parsing a specific JSON value, e.g. a malformed IP address + value: + code: 202 + message: JSON data value invalid + '203': + description: e.g. string instead of number + value: + code: 203 + message: JSON data type invalid + '204': + value: + code: 204 + message: Enumeration value unknown + '205': + description: Exceeds the minimum or maximum value + value: + code: 205 + message: JSON data value out of range + '206': + description: An array or string was accessed exceeding its maximum length + value: + code: 206 + message: JSON data value out of bounds + '208': + value: + code: 208 + message: POST or PUT request without content + '305': + value: + code: 305 + message: Query parameter name invalid + '306': + value: + code: 306 + message: Query parameter value invalid + '307': + value: + code: 307 + message: Port is not configured to IO-Link + '311': + value: + code: 311 + message: IO-Link parameter access error + '401': + value: + code: 401 + message: Data storage mismatch + '501': + value: + code: 501 + message: I/Q is not configured as DIGITAL_OUTPUT + '502': + value: + code: 502 + message: C/Q is not configured as DIGITAL_OUTPUT + '503': + value: + code: 503 + message: IO-Link Device has no output process data + '601': + value: + code: 601 + message: IODD (representation) for this IO-Link device is not available + '603': + value: + code: 603 + message: IODD upload failed. IODD XML invalid + '604': + value: + code: 604 + message: IODD upload failed. CRC error + '605': + value: + code: 605 + message: IODD upload failed. Parsing error + '701': + value: + code: 701 + message: Data set incomplete + '702': + description: whole data set is rejected + value: + code: 702 + message: Data set not applicable + '703': + description: whole data set is rejected + value: + code: 703 + message: Data set combination incompatible HTTP_401: description: Unauthorized content: @@ -5576,11 +5665,11 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - "150": - description: due to user management restrictions - value: - code: 140 - message: Invalid credentials + '150': + description: due to user management restrictions + value: + code: 140 + message: Invalid credentials HTTP_403: description: Forbidden content: @@ -5588,11 +5677,11 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - "150": - description: due to user management restrictions - value: - code: 150 - message: Permission denied + '150': + description: due to user management restrictions + value: + code: 150 + message: Permission denied HTTP_404: description: Not found content: @@ -5600,44 +5689,44 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - "103": - value: - code: 103 - message: Operation not supported - "301": - description: e.g. wrong URL - value: - code: 301 - message: Resource not found - "302": - value: - code: 302 - message: masterNumber not found - "303": - value: - code: 303 - message: portNumber not found - "304": - value: - code: 304 - message: deviceAlias not found - "308": - description: e.g. not connected or communication error - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link Parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the Device - "312": - value: - code: 312 - message: IO-Link parameter name is not unique + '103': + value: + code: 103 + message: Operation not supported + '301': + description: e.g. wrong URL + value: + code: 301 + message: Resource not found + '302': + value: + code: 302 + message: masterNumber not found + '303': + value: + code: 303 + message: portNumber not found + '304': + value: + code: 304 + message: deviceAlias not found + '308': + description: e.g. not connected or communication error + value: + code: 308 + message: IO-Link Device is not accessible + '309': + value: + code: 309 + message: IO-Link Parameter not found + '310': + value: + code: 310 + message: IO-Link parameter access not supported by the Device + '312': + value: + code: 312 + message: IO-Link parameter name is not unique HTTP_500: description: Internal server error content: @@ -5645,18 +5734,18 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - "602": - value: - code: 602 - message: IODD upload failed. Not enough memory + '101': + value: + code: 101 + message: Internal server error + '102': + value: + code: 102 + message: Internal communication error + '602': + value: + code: 602 + message: IODD upload failed. Not enough memory HTTP_501: description: Not Implemented content: @@ -5664,14 +5753,14 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - "105": - value: - code: 105 - message: IODD feature not supported - "106": - value: - code: 106 - message: MQTT feature not supported + '105': + value: + code: 105 + message: IODD feature not supported + '106': + value: + code: 106 + message: MQTT feature not supported HTTP_503: description: Service unavailable content: @@ -5679,9 +5768,7 @@ components: schema: $ref: '#/components/schemas/errorObject' examples: - "107": - value: - code: 107 - message: 'Service temporarily unavailable' - - + '107': + value: + code: 107 + message: 'Service temporarily unavailable' From 4354e07620f683c61e9c6dcc4a255220bb677df9 Mon Sep 17 00:00:00 2001 From: Julian Ste <31321934+julian-st@users.noreply.github.com> Date: Fri, 20 Jan 2023 13:51:19 +0100 Subject: [PATCH 030/279] Replaced W- abbreviation with Wireless --- JSON_for_IO-Link.yaml | 72 +++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 5fb2969..c2ef52f 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1384,8 +1384,8 @@ paths: operationId: GetMastersMasterNumberTrackstatus tags: - masters - summary: Read the actual Track status of the specified W-Master. - description: Read the actual Track status of the specified W-Master. + summary: Read the actual Track status of the specified Wireless-Master. + description: Read the actual Track status of the specified Wireless-Master. parameters: - $ref: '#/components/parameters/masterNumber' responses: @@ -1405,8 +1405,8 @@ paths: operationId: GetMastersMasterNumberScan tags: - masters - summary: Read the actual scan results of the specified W-Master. - description: Read the actual scan results of the specified W-Master. + summary: Read the actual scan results of the specified Wireless-Master. + description: Read the actual scan results of the specified Wireless-Master. parameters: - $ref: '#/components/parameters/masterNumber' responses: @@ -1424,8 +1424,8 @@ paths: operationId: PostMastersMasterNumberScan tags: - masters - summary: To start a scan of the specified W-Master. - description: To start a scan of the specified W-Master. + summary: To start a scan of the specified Wireless-Master. + description: To start a scan of the specified Wireless-Master. parameters: - $ref: '#/components/parameters/masterNumber' requestBody: @@ -1532,8 +1532,8 @@ paths: - ports parameters: - $ref: '#/components/parameters/masterNumber' - summary: Read the link quality and the RSSI of all used W-Ports (W-Device and W-Master). - description: Read the link quality and the RSSI of all used W-Ports (W-Device and W-Master). + summary: Read the link quality and the RSSI of all used Wireless-Ports (Wireless-Device and Wireless-Master). + description: Read the link quality and the RSSI of all used Wireless-Ports (Wireless-Device and Wireless-Master). responses: '200': description: Successful operation @@ -1868,8 +1868,8 @@ paths: operationId: PostMastersMasterNumberPortsPortNumberPairing tags: - ports - summary: To pair a W-Device with the specified W-Port. - description: To pair a W-Device with the specified W-Port. + summary: To pair a Wireless-Device with the specified Wireless-Port. + description: To pair a Wireless-Device with the specified Wireless-Port. parameters: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/portNumber' @@ -1899,8 +1899,8 @@ paths: parameters: - $ref: '#/components/parameters/masterNumber' - $ref: '#/components/parameters/portNumber' - summary: Read the link quality and the RSSI of the specified W-Port (W-Device and W-Master). - description: Read the link quality and the RSSI of the specified W-Port (W-Device and W-Master). + summary: Read the link quality and the RSSI of the specified Wireless-Port (Wireless-Device and Wireless-Master). + description: Read the link quality and the RSSI of the specified Wireless-Port (Wireless-Device and Wireless-Master). responses: '200': description: Successful operation @@ -3858,20 +3858,20 @@ components: type: string slotNumber: description: >- - slot number of the W-Device (Wireless Master only). + slot number of the Wireless-Device (Wireless Master only). type: integer minimum: 0 maximum: 7 trackNumber: description: >- - track number of the W-Device, maximum depends on the number of - available tracks on the W-Master (Wireless Master only). + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). type: integer minimum: 1 maximum: 5 deviceTxPower: description: >- - transmission power of the W-Device (Wireless Master only). + transmission power of the Wireless-Device (Wireless Master only). type: integer minimum: 1 maximum: 31 @@ -3913,7 +3913,7 @@ components: - "DSLOT" lowEnergyDevice: description: >- - to set low energy mode (Wireless Master only and W-Device has to support low energy). + to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). type: boolean default: false maxPDSegLength: @@ -3924,7 +3924,7 @@ components: maximum: 32 wMasterCycleTimeOut: description: >- - W-Master cycle time output for PD data (Wireless Master only). + Wireless-Master cycle time output for PD data (Wireless Master only). type: object required: - base @@ -3940,7 +3940,7 @@ components: maximum: 63 wMasterCycleTimeIn: description: >- - W-Master cycle time input for PD data (Wireless Master only). + Wireless-Master cycle time input for PD data (Wireless Master only). type: object required: - base @@ -3956,7 +3956,7 @@ components: maximum: 63 uniqueId: description: >- - unique identifier for each W-Device (Wireless Master only). + unique identifier for each Wireless-Device (Wireless Master only). type: string minLength: 26 maxLength: 26 @@ -3967,13 +3967,13 @@ components: properties: wMasterId: description: >- - Master identifier for connection with W-Devices. + Master identifier for connection with Wireless-Devices. type: integer minimum: 1 maximum: 29 advancedConnectivity: description: >- - To set advanced connectivity functions on the W-Master. + To set advanced connectivity functions on the Wireless-Master. type: object properties: "ahtEnable": @@ -4364,14 +4364,14 @@ components: - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE slotNumber: description: >- - slot number of the W-Device (Wireless Master only). + slot number of the Wireless-Device (Wireless Master only). type: integer minimum: 0 maximum: 7 trackNumber: description: >- - track number of the W-Device, maximum depends on the number of - available tracks on the W-Master (Wireless Master only). + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). type: integer minimum: 1 maximum: 5 @@ -4482,7 +4482,7 @@ components: maximum: 16777215 wMasterCycleTimeOut: description: >- - W-Master cycle time output for PD data (Wireless Master only). + Wireless-Master cycle time output for PD data (Wireless Master only). type: object required: - base @@ -4498,7 +4498,7 @@ components: maximum: 63 wMasterCycleTimeIn: description: >- - W-Master cycle time input for PD data (Wireless Master only). + Wireless-Master cycle time input for PD data (Wireless Master only). type: object required: - base @@ -4673,20 +4673,20 @@ components: maxLength: 32 slotNumber: description: >- - slot number of the W-Device (Wireless Master only). + slot number of the Wireless-Device (Wireless Master only). type: integer minimum: 0 maximum: 7 trackNumber: description: >- - track number of the W-Device, maximum depends on the number of - available tracks on the W-Master (Wireless Master only). + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). type: integer minimum: 1 maximum: 5 deviceTxPower: description: >- - transmission power of the W-Device (Wireless Master only). + transmission power of the Wireless-Device (Wireless Master only). type: integer minimum: 1 maximum: 31 @@ -4728,7 +4728,7 @@ components: - "DSLOT" lowEnergyDevice: description: >- - to set low energy mode (Wireless Master only and W-Device has to support low energy). + to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). type: boolean default: false maxPDSegLength: @@ -4739,7 +4739,7 @@ components: maximum: 32 wMasterCycleTimeOut: description: >- - W-Master cycle time output for PD data (Wireless Master only). + Wireless-Master cycle time output for PD data (Wireless Master only). type: object required: - base @@ -4755,7 +4755,7 @@ components: maximum: 63 wMasterCycleTimeIn: description: >- - W-Master cycle time input for PD data (Wireless Master only). + Wireless-Master cycle time input for PD data (Wireless Master only). type: object required: - base @@ -4771,7 +4771,7 @@ components: maximum: 63 uniqueId: description: >- - unique identifier for each W-Device (Wireless Master only). + unique identifier for each Wireless-Device (Wireless Master only). type: string minLength: 26 maxLength: 26 @@ -5465,4 +5465,4 @@ components: code: 107 message: 'Service temporarily unavailable' - + From b0c2307fcdb5ddfe069ebcbe25aacbcbdc5fdb3b Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 20 Jan 2023 17:34:41 +0100 Subject: [PATCH 031/279] Change context-type and add version key pair. --- JSON_for_IO-Link.yaml | 49 +++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 9007570..4280a61 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -78,7 +78,7 @@ paths: '200': description: Successful operation content: - application/json: + application/text: schema: type: string examples: @@ -87,6 +87,10 @@ paths: 'url-vendor': value: >- https://www.iolink-master-vendor.com/de/de/p/p672882 + application/yaml: + schema: + type: string + example: 'yaml': value: >- openapi: 3.0.3 @@ -112,21 +116,22 @@ paths: name: tbd url: 'http://www.io-link.com' ... + application/json: + schema: + type: string + example: 'json': - value: >- + value: { - "openapi": "3.0.3", - "info": null, - "description": "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 1.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", - "version": "1.1.0", - "title": "Swagger IO-Link Master", - "contact": { - "email": "info@io-link.com" - }, - "license": { - "name": "tbd", - "url": "http://www.io-link.com" - } + 'openapi': '3.0.3', + 'info': null, + 'description': "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 1.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", + 'version': '1.1.0', + 'title': 'Swagger IO-Link Master', + 'contact': { 'email': 'info@io-link.com' }, + 'license': + { 'name': 'tbd', 'url': 'http://www.io-link.com' }, + ...: 'to be continued', } '403': description: Forbidden @@ -165,13 +170,21 @@ paths: application/json: schema: type: object + required: + - version + properties: + version: + type: string + additionalInfo: + type: string examples: - default: + 'mandatory': value: - version: '1.0.0' - vendor-extension: + version: 1.0.0 + 'optional addition': value: - version: '1.0.0-feature-xyz' + version: 1.0.0 + additionalInfo: 1.2.3-feature-xyz '403': description: Forbidden content: From 4246c84cbf3e36e6fb78b944ee0bd871f0981186 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 20 Jan 2023 17:42:14 +0100 Subject: [PATCH 032/279] Fix spectral error. --- JSON_for_IO-Link.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4280a61..2e4a860 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -88,8 +88,6 @@ paths: value: >- https://www.iolink-master-vendor.com/de/de/p/p672882 application/yaml: - schema: - type: string example: 'yaml': value: >- @@ -117,8 +115,6 @@ paths: url: 'http://www.io-link.com' ... application/json: - schema: - type: string example: 'json': value: From d21cac623ada3d70f7965965ba91a11fb27b239f Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Sat, 21 Jan 2023 20:15:41 +0100 Subject: [PATCH 033/279] Corrected some errors that prevented display in asyncApi-Studio. --- MQTT_for_IO-Link.yaml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index 72eec39..bef2e03 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -1,4 +1,4 @@ -asyncapi: 2.3.0 +asyncapi: 2.5.0 info: title: MQTT for IO-Link Topics version: 0.0.1 @@ -36,11 +36,6 @@ channels: schema: type: string example: iomaster_nr1 - deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' - schema: - type: string - example: port1 subscribe: message: $ref: '#/components/messages/connection' @@ -235,7 +230,7 @@ components: properties: vendorName: type: string - default: Murrelektronik" + default: Murrelektronik vendorId: type: number default: 303 @@ -245,7 +240,7 @@ components: default: 'http://www.murrelektronik.com' productName: type: string - example: Impact67 PN DIO12 IOL4 IRT 7/8" 5pin + example: Impact67 PN DIO12 IOL4 IRT 7/8 5pin orderCode: type: string example: 55132 From fc5ef25f5534d29f6848d223744aacbb064e1982 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Mon, 6 Feb 2023 22:22:14 +0100 Subject: [PATCH 034/279] Improvements after meeting of 06/02/2023 and removed new linter warnings --- JSON_for_IO-Link.yaml | 142 +++++++++++++++++++++++++----------------- 1 file changed, 84 insertions(+), 58 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 49c2016..6803e42 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -337,19 +337,25 @@ paths: type: string specDesc: type: string - example: # Wireless Master with Profinet - - specUri: 'http://www.io-link.com/io-link/10.222/V2.0' - specDesc: 'JSON Integration for IO-Link - Draft V2.0' + examples: + IO-Link_with_Profinet: + value: - specUri: 'http://www.io-link.com/io-link/10.222/V1.0' specDesc: 'JSON Integration for IO-Link V1.0' - specUri: 'http://www.io-link.com/io-link/10.002/V1.13' - specDesc: 'IO-Link Interface and System Specification V1.13' - - specUri: 'http://www.io-link.com/io-link/10.122/V1.1' - specDesc: 'IO-Link Wireless System Extensions V1.1' + specDesc: 'IO-Link Interface and System Specification V1.13' - specUri: 'http://profibus.com/profinet/2.722/V2.4MU2' specDesc: 'Application Layer protocol for decentralized periphery - Technical Specification for PROFINET IO' - specUri: 'http://profibus.com/profinet/2.712/V2.4MU2' specDesc: 'Application Layer services for decentralized periphery - Technical Specification for PROFINET IO' + IO-Link_Wireless: + value: + - specUri: 'http://www.io-link.com/io-link/10.222/V2.0' + specDesc: 'JSON Integration for IO-Link - Draft V2.0' + - specUri: 'http://www.io-link.com/io-link/10.002/V1.13' + specDesc: 'IO-Link Interface and System Specification V1.13' + - specUri: 'http://www.io-link.com/io-link/10.122/V1.1' + specDesc: 'IO-Link Wireless System Extensions V1.1' '/gateways': get: operationId: GetGateways @@ -378,15 +384,21 @@ paths: portNumber: type: integer minimum: 1 - example: - - gatewayAlias: gateway1 - gatewayUrl: 'http://gateway1' - - gatewayAlias: gatewayXYZ - gatewayUrl: 'http://gatewayXYZ' - - gatewayAlias: BNI_IOL - gatewayUrl: 'https://BNI_IOL/' - - gatewayAlias: master1 - gatewayUrl: 'https://192.168.88.191' + examples: + self: + value: + - gatewayAlias: gateway1 + gatewayUrl: 'http://gateway1' + multiple: + value: + - gatewayAlias: gateway1 + gatewayUrl: 'http://gateway1' + - gatewayAlias: gatewayXYZ + gatewayUrl: 'http://gatewayXYZ' + - gatewayAlias: BNI_IOL + gatewayUrl: 'https://BNI_IOL/' + - gatewayAlias: master_ABC + gatewayUrl: 'https://192.168.88.191' '403': $ref: '#/components/responses/HTTP_403' '500': @@ -1181,12 +1193,16 @@ paths: application/json: schema: $ref: '#/components/schemas/masterCapabilitiesGet' - example: - value: - numberOfPorts: 8 - maxPowerSupply: #overall power consumption - value: 0.3 - unit: A + examples: + IO-Link: + value: + numberOfPorts: 8 + maxPowerSupply: # max power supply per port + value: 0.3 + unit: A + IO-Link_Wireless: + value: + numberOfPorts: 40 '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1208,7 +1224,44 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/identificationGet' + $ref: '#/components/schemas/masterIdentificationGet' + examples: + IO-Link: + value: + vendorName: Vendor GmbH + vendorId: 26 + masterId: 42 + masterType: Master acc. V1.0 + serialNumber: IOLM123456 + orderCode: PROD-123456 + productName: IO-Link Master + productId: PROD-123456 + hardwareRevision: "3.2.1.444R" + firmwareRevision: "3.2.1.888R" + vendorUrl: 'http://www.io-link.com/io-link-master' + manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' + applicationSpecificTag: End of the belt + locationTag: Down under + functionTag: Code reading + IO-Link_Wireless: + value: + vendorName: Vendor GmbH + vendorId: 01 + masterId: 22 + masterType: Wireless_Master + serialNumber: IOLWM123456 + orderCode: PROD6789 + productName: IO-Link Wireless Master + productId: PROD6789 + hardwareRevision: "1" + firmwareRevision: "2.0.0" + vendorUrl: 'http://www.io-link.com' + productInstanceUri: 'http://www.io-link.com/PROD123456/IOLWM123456' + descriptionFileUri: 'https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml' + manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' + applicationSpecificTag: "***" + locationTag: "***" + functionTag: "***" '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1228,7 +1281,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/identificationPost' + $ref: '#/components/schemas/masterIdentificationPost' examples: All optional fiels: value: @@ -1738,7 +1791,6 @@ paths: IO-Link_Wireless: value: portType: WIRELESS_MASTER - slotType: "DSLOT" '403': $ref: '#/components/responses/HTTP_403' '404': @@ -1778,7 +1830,7 @@ paths: portQualityInfo: pdInValid: true pdOutValid: true - ioLinkRevision: 1.1 + ioLinkRevision: '1.1' inputDataLength: 2 outputDataLength: 2 vendorId: 888 @@ -1826,6 +1878,7 @@ paths: value: mode: WIOLINK_CYCLIC_AUTOPAIRING validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + iqConfiguration: NOT_SUPPORTED vendorId: 888 deviceId: 1 slotNumber: 1 @@ -3183,7 +3236,7 @@ components: - masterNumber: 2 serialNumber: 123A45B783 locationTag: slotNumber 6 - identificationGet: + masterIdentificationGet: required: - vendorName - vendorId @@ -3243,7 +3296,7 @@ components: format: uri productInstanceUri: type: string - gsdUri: + descriptionFileUri: type: string applicationSpecificTag: type: string @@ -3257,25 +3310,7 @@ components: type: string minLength: 1 maxLength: 32 - example: - vendorName: Vendor GmbH - vendorId: 26 - masterId: 42 - masterType: Wireless_Master - serialNumber: IOLWM123456 - orderCode: PROD123456 - productName: IO-Link Wireless Master - productId: PROD123456 - hardwareRevision: 3.2.1.444R - firmwareRevision: 3.2.1.888R - vendorUrl: 'http://www.io-link.com' - productInstanceUri: 'http://www.io-link.com/PROD123456/IOLWM123456' - gsdUri: 'https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml' - manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' - applicationSpecificTag: Fallback reader - locationTag: Down under - functionTag: Code reading - identificationPost: + masterIdentificationPost: type: object properties: applicationSpecificTag: @@ -3306,7 +3341,6 @@ components: masterCapabilitiesGet: required: - numberOfPorts - - maxPowerSupply type: object properties: numberOfPorts: @@ -3744,8 +3778,6 @@ components: - vendorId - deviceId - ioLinkRevision - - vendorName - - productName type: object properties: vendorId: @@ -4135,8 +4167,6 @@ components: default: 0 blockList: type: object - required: - - all properties: '2402': type: boolean @@ -4411,11 +4441,11 @@ components: scanResults: - slotType: SSLOT uniqueId: 03:78:00:00:01:32:50:60:46 - ioLinkRevision: 1.1 + ioLinkRevision: '1.1' lastSeen: "2022-12-01T08:42:23.314Z" - slotType: DSLOT uniqueId: 03:78:00:00:01:32:50:60:47 - ioLinkRevision: 1.1 + ioLinkRevision: '1.1' lastSeen: "2022-12-01T09:42:23.314Z" mastersScanPost: # TODO: IOLW @@ -4538,8 +4568,6 @@ components: description: >- status information of the Process Data (Wireless Master only). type: object - required: - - all properties: "pdInValid": type: boolean @@ -4896,10 +4924,8 @@ components: enum: - '1.0' - '1.1' - parameterChecksum: + parameterChecks: type: integer - minimum: 0 - maximum: 4294967296 - type: object # empty object additionalProperties: false minProperties: 0 From 055971da5308202d758d6688e4861937d9c7f353 Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 1 Mar 2023 11:45:26 +0100 Subject: [PATCH 035/279] Fix for missing required parameter and parameterchecksum --- JSON_for_IO-Link.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 6803e42..34821c0 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3778,6 +3778,7 @@ components: - vendorId - deviceId - ioLinkRevision + - vendorName type: object properties: vendorId: @@ -4924,7 +4925,7 @@ components: enum: - '1.0' - '1.1' - parameterChecks: + parameterChecksum: type: integer - type: object # empty object additionalProperties: false From 0ddd64ee7642e3bccef829ca554108429382ee7f Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 1 Mar 2023 11:59:06 +0100 Subject: [PATCH 036/279] Add productname as required parameter --- JSON_for_IO-Link.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 34821c0..8a84c85 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3779,6 +3779,7 @@ components: - deviceId - ioLinkRevision - vendorName + - productName type: object properties: vendorId: From 16e0df692e4452549e83bee8af0a6f19f7a1bead Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Mon, 13 Mar 2023 20:14:15 +0100 Subject: [PATCH 037/279] Beautified descriptive section Removed "Swagger" in title and improved description. --- JSON_for_IO-Link.yaml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 8a84c85..4e829c0 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1,14 +1,16 @@ openapi: 3.0.3 info: + version: 1.1.0 + title: JSON for IO-Link Specification description: >- - This is a sample IO-Link Master server. You can find out more about IO-Link + This is an openapi specification for IO-Link gateways, masters and devices. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description - * Draft for version 1.x + * Draft for version 1.1.0 - ## Disclaimer: + # Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. @@ -23,13 +25,12 @@ info: >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. - version: 1.1.0 - title: Swagger IO-Link Master + contact: email: info@io-link.com license: - name: tbd - url: 'http://www.io-link.com' + name: Legal Information + url: 'https://io-link.com/en/Global/Impressum.php' servers: - url: '{scheme}://{host}/{basePath}' From e067ec8832f9570e301a9814b5c3dc84da32bdf7 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Wed, 15 Mar 2023 08:13:57 +0100 Subject: [PATCH 038/279] 2nd try to remove /specs --- JSON_for_IO-Link.yaml | 62 ++++++++++++------------------------------- 1 file changed, 17 insertions(+), 45 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4e829c0..5fae56c 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3,12 +3,24 @@ info: version: 1.1.0 title: JSON for IO-Link Specification description: >- - This is an openapi specification for IO-Link gateways, masters and devices. You can find out more about IO-Link - at [http://www.io-link.com](http://www.io-link.com) # Description - + + This is an openapi specification for IO-Link gateways, masters and devices. You can find out more about IO-Link + at [http://www.io-link.com](http://www.io-link.com) + * Draft for version 1.1.0 + + # Specification References: + + > [JSON Integration for IO-Link - Draft V2.0](http://www.io-link.com/io-link/10.222/V2.0) + + > [JSON Integration for IO-Link V1.0](http://www.io-link.com/io-link/10.222/V1.0) + + > [IO-Link Interface and System Specification V1.13](http://www.io-link.com/io-link/10.002/V1.13) + + > [IO-Link Wireless System Extensions V1.1](http://www.io-link.com/io-link/10.122/V1.1) + # Disclaimer: @@ -26,6 +38,8 @@ info: >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. + --- + contact: email: info@io-link.com license: @@ -315,48 +329,6 @@ paths: example: code: 141 message: 'Unknown SESSIONID' - '/specs': - get: - operationId: GetSpecs - tags: - - general - summary: Read the version information as list of specification references. - description: >- - This command is mandatory. - responses: - '200': - description: Successful operation - content: - application/json: - schema: - type: array - items: - required: - - specUri - properties: - specUri: - type: string - specDesc: - type: string - examples: - IO-Link_with_Profinet: - value: - - specUri: 'http://www.io-link.com/io-link/10.222/V1.0' - specDesc: 'JSON Integration for IO-Link V1.0' - - specUri: 'http://www.io-link.com/io-link/10.002/V1.13' - specDesc: 'IO-Link Interface and System Specification V1.13' - - specUri: 'http://profibus.com/profinet/2.722/V2.4MU2' - specDesc: 'Application Layer protocol for decentralized periphery - Technical Specification for PROFINET IO' - - specUri: 'http://profibus.com/profinet/2.712/V2.4MU2' - specDesc: 'Application Layer services for decentralized periphery - Technical Specification for PROFINET IO' - IO-Link_Wireless: - value: - - specUri: 'http://www.io-link.com/io-link/10.222/V2.0' - specDesc: 'JSON Integration for IO-Link - Draft V2.0' - - specUri: 'http://www.io-link.com/io-link/10.002/V1.13' - specDesc: 'IO-Link Interface and System Specification V1.13' - - specUri: 'http://www.io-link.com/io-link/10.122/V1.1' - specDesc: 'IO-Link Wireless System Extensions V1.1' '/gateways': get: operationId: GetGateways From faa9de7d95b3df5dcc05342e997536b732aafd31 Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 21 Mar 2023 09:34:35 +0100 Subject: [PATCH 039/279] Change to consistently use of double quotes. --- JSON_for_IO-Link.yaml | 2440 ++++++++++++++++++++--------------------- MQTT_for_IO-Link.yaml | 122 +-- 2 files changed, 1274 insertions(+), 1288 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4e829c0..4d6188b 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -25,26 +25,26 @@ info: >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. - + contact: email: info@io-link.com license: name: Legal Information - url: 'https://io-link.com/en/Global/Impressum.php' + url: "https://io-link.com/en/Global/Impressum.php" servers: - - url: '{scheme}://{host}/{basePath}' + - url: "{scheme}://{host}/{basePath}" variables: host: - default: 'iolmaster.io-link.com' + default: "iolmaster.io-link.com" basePath: default: iolink/v1 scheme: - description: 'The IO-Link gateway can expose the API over https and/or http' + description: "The IO-Link gateway can expose the API over https and/or http" enum: - - 'https' - - 'http' - default: 'http' + - "https" + - "http" + default: "http" tags: - name: general description: Access to general informations @@ -62,10 +62,10 @@ tags: description: Access to the IO-Link Devices connected ot the Master paths: -################################################################################ -# general -################################################################################ - '/openapi': + ################################################################################ + # general + ################################################################################ + "/openapi": get: tags: - general @@ -76,21 +76,21 @@ paths: Get the REST interface description of the IO-Link API as OpenAPI YAML document. responses: - '200': + "200": description: Successful operation content: application/text: schema: type: string examples: - 'url-github': + "url-github": value: https://github.com/iolinkcommunity/JSON_for_IO-Link/blob/1.0.0/JSON_for_IO-Link.yaml - 'url-vendor': + "url-vendor": value: >- https://www.iolink-master-vendor.com/de/de/p/p672882 application/yaml: example: - 'yaml': + "yaml": value: >- openapi: 3.0.3 info: @@ -117,38 +117,38 @@ paths: ... application/json: example: - 'json': + "json": value: { - 'openapi': '3.0.3', - 'info': null, - 'description': "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 1.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", - 'version': '1.1.0', - 'title': 'Swagger IO-Link Master', - 'contact': { 'email': 'info@io-link.com' }, - 'license': - { 'name': 'tbd', 'url': 'http://www.io-link.com' }, - ...: 'to be continued', + "openapi": "3.0.3", + "info": null, + "description": "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 1.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", + "version": "1.1.0", + "title": "Swagger IO-Link Master", + "contact": { "email": "info@io-link.com" }, + "license": + { "name": "tbd", "url": "http://www.io-link.com" }, + ...: "to be continued", } - '403': + "403": description: Forbidden content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '150': + "150": value: code: 150 message: Permission denied - '500': + "500": description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '101': + "101": value: code: 101 message: Internal server error @@ -161,7 +161,7 @@ paths: description: >- This version relates to the released version by the iolink community on github (e.g. https://github.com/iolinkcommunity/JSON_for_IO-Link/releases). It can be extended by vendor specific parts. responses: - '200': + "200": description: Successful operation content: application/json: @@ -175,36 +175,36 @@ paths: additionalInfo: type: string examples: - 'mandatory': + "mandatory": value: version: 1.0.0 - 'optional addition': + "optional addition": value: version: 1.0.0 additionalInfo: 1.2.3-feature-xyz - '403': + "403": description: Forbidden content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '150': + "150": value: code: 150 message: Permission denied - '500': + "500": description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '101': + "101": value: code: 101 message: Internal server error - '/login': + "/login": get: tags: - general @@ -213,7 +213,7 @@ paths: Returns the login status of the user as a boolean value operationId: getUsersLogin responses: - '200': + "200": description: OK content: application/json: @@ -223,10 +223,10 @@ paths: type: boolean userRole: type: string - description: 'Is true in case of a valid user, that is logged in.' + description: "Is true in case of a valid user, that is logged in." example: isLoggedIn: true - userRole: 'Operator' + userRole: "Operator" post: tags: - general @@ -250,10 +250,10 @@ paths: type: string example: username: fred - password: '12345678' + password: "12345678" security: [] responses: - '200': + "200": description: > Successfully authenticated.

The set cookie header is only sent if the server supports HTTP cookies. Otherwise, the session ID @@ -286,14 +286,14 @@ paths: value: userRole: Maintenance - '401': - $ref: '#/components/responses/HTTP_401' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "401": + $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" - '/logout': + "/logout": post: tags: - general @@ -302,20 +302,20 @@ paths: This command does not discern between a logged out or a logged in user. operationId: postUsersLogout responses: - '204': + "204": description: | Successfully logged out. Session-Token is now invalid. - '401': + "401": description: | Session-Token invalid or not found. No action. content: application/json: schema: - $ref: '#/components/schemas/eventObject' + $ref: "#/components/schemas/eventObject" example: code: 141 - message: 'Unknown SESSIONID' - '/specs': + message: "Unknown SESSIONID" + "/specs": get: operationId: GetSpecs tags: @@ -324,7 +324,7 @@ paths: description: >- This command is mandatory. responses: - '200': + "200": description: Successful operation content: application/json: @@ -341,23 +341,23 @@ paths: examples: IO-Link_with_Profinet: value: - - specUri: 'http://www.io-link.com/io-link/10.222/V1.0' - specDesc: 'JSON Integration for IO-Link V1.0' - - specUri: 'http://www.io-link.com/io-link/10.002/V1.13' - specDesc: 'IO-Link Interface and System Specification V1.13' - - specUri: 'http://profibus.com/profinet/2.722/V2.4MU2' - specDesc: 'Application Layer protocol for decentralized periphery - Technical Specification for PROFINET IO' - - specUri: 'http://profibus.com/profinet/2.712/V2.4MU2' - specDesc: 'Application Layer services for decentralized periphery - Technical Specification for PROFINET IO' + - specUri: "http://www.io-link.com/io-link/10.222/V1.0" + specDesc: "JSON Integration for IO-Link V1.0" + - specUri: "http://www.io-link.com/io-link/10.002/V1.13" + specDesc: "IO-Link Interface and System Specification V1.13" + - specUri: "http://profibus.com/profinet/2.722/V2.4MU2" + specDesc: "Application Layer protocol for decentralized periphery - Technical Specification for PROFINET IO" + - specUri: "http://profibus.com/profinet/2.712/V2.4MU2" + specDesc: "Application Layer services for decentralized periphery - Technical Specification for PROFINET IO" IO-Link_Wireless: value: - - specUri: 'http://www.io-link.com/io-link/10.222/V2.0' - specDesc: 'JSON Integration for IO-Link - Draft V2.0' - - specUri: 'http://www.io-link.com/io-link/10.002/V1.13' - specDesc: 'IO-Link Interface and System Specification V1.13' - - specUri: 'http://www.io-link.com/io-link/10.122/V1.1' - specDesc: 'IO-Link Wireless System Extensions V1.1' - '/gateways': + - specUri: "http://www.io-link.com/io-link/10.222/V2.0" + specDesc: "JSON Integration for IO-Link - Draft V2.0" + - specUri: "http://www.io-link.com/io-link/10.002/V1.13" + specDesc: "IO-Link Interface and System Specification V1.13" + - specUri: "http://www.io-link.com/io-link/10.122/V1.1" + specDesc: "IO-Link Wireless System Extensions V1.1" + "/gateways": get: operationId: GetGateways tags: @@ -366,7 +366,7 @@ paths: description: >- This command is optional. responses: - '200': + "200": description: Successful operation content: application/json: @@ -389,25 +389,25 @@ paths: self: value: - gatewayAlias: gateway1 - gatewayUrl: 'http://gateway1' + gatewayUrl: "http://gateway1" multiple: value: - gatewayAlias: gateway1 - gatewayUrl: 'http://gateway1' + gatewayUrl: "http://gateway1" - gatewayAlias: gatewayXYZ - gatewayUrl: 'http://gatewayXYZ' + gatewayUrl: "http://gatewayXYZ" - gatewayAlias: BNI_IOL - gatewayUrl: 'https://BNI_IOL/' + gatewayUrl: "https://BNI_IOL/" - gatewayAlias: master_ABC - gatewayUrl: 'https://192.168.88.191' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' -################################################################################ -# gateway -################################################################################ - '/gateway/identification': + gatewayUrl: "https://192.168.88.191" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + ################################################################################ + # gateway + ################################################################################ + "/gateway/identification": get: operationId: GetGatewayIdentification tags: @@ -415,17 +415,17 @@ paths: summary: Read the identification of the Gateway. description: Read the identification of the Gateway. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayIdentificationGet' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/gateway/capabilities': + $ref: "#/components/schemas/gatewayIdentificationGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/gateway/capabilities": get: operationId: PostGatewayCapabilities tags: @@ -433,17 +433,17 @@ paths: summary: Read the capabilities of the Gateway. description: Read the capabilities of the Gateway. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayCapabilitiesGet' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/gateway/configuration': + $ref: "#/components/schemas/gatewayCapabilitiesGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/gateway/configuration": get: operationId: GetGatewayConfiguration tags: @@ -451,12 +451,12 @@ paths: summary: Read the configuration of the Gateway. description: Read the actual active configuration of the IO-Link Gateway. The Gateway may support multiple IPv4 interfaces responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayConfigurationGetPost' + $ref: "#/components/schemas/gatewayConfigurationGetPost" examples: Manual: value: @@ -487,10 +487,10 @@ paths: ipAddress: 192.168.200.7 subnetMask: 255.255.255.0 standardGateway: 192.168.200.1 - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostGatewayConfiguration tags: @@ -502,7 +502,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/gatewayConfigurationGetPost' + $ref: "#/components/schemas/gatewayConfigurationGetPost" examples: Manual: value: @@ -528,16 +528,16 @@ paths: standardGateway: 192.168.2.1 - ipConfiguration: DHCP responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" - '/gateway/reset': + "/gateway/reset": post: operationId: PostGatewayReset tags: @@ -545,16 +545,16 @@ paths: summary: Reset the Gateway including all Masters. Optional. description: Invoke a reset of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog. responses: - '204': + "204": description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 104 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" - '/gateway/reboot': + "/gateway/reboot": post: operationId: PostGatewayReboot tags: @@ -562,16 +562,16 @@ paths: summary: Reboot the Gateway including all Masters. Optional. description: Invoke a reboot of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog responses: - '204': + "204": description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 104 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" - '/gateway/events': + "/gateway/events": get: operationId: GetGatewayEvents tags: @@ -581,29 +581,29 @@ paths: Each Gateway shall have an Event Log object containing the events of the devices, ports and the masters. The content of the Event Log can be read by getting the object "Gateway Event Log" parameters: - - $ref: '#/components/parameters/eventOrigin' - - $ref: '#/components/parameters/eventMasterNumber' - - $ref: '#/components/parameters/eventPortNumber' - - $ref: '#/components/parameters/eventdeviceAlias' - - $ref: '#/components/parameters/eventTop' - - $ref: '#/components/parameters/eventBottom' + - $ref: "#/components/parameters/eventOrigin" + - $ref: "#/components/parameters/eventMasterNumber" + - $ref: "#/components/parameters/eventPortNumber" + - $ref: "#/components/parameters/eventdeviceAlias" + - $ref: "#/components/parameters/eventTop" + - $ref: "#/components/parameters/eventBottom" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayEventsGet' + $ref: "#/components/schemas/gatewayEventsGet" examples: origin=ALL: value: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 message: text: IO-Link Master has restarted - - time: '2018-05-18T07:32:42.023Z' + - time: "2018-05-18T07:32:42.023Z" severity: ERROR origin: masterNumber: 1 @@ -612,7 +612,7 @@ paths: code: 6163 mode: APPEARS text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 @@ -624,7 +624,7 @@ paths: text: Device temperature over-run – Clear source of heat origin=MASTERS: value: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 @@ -632,7 +632,7 @@ paths: text: IO-Link Master has restarted origin=PORTS: value: - - time: '2018-05-18T07:32:42.023Z' + - time: "2018-05-18T07:32:42.023Z" severity: ERROR origin: masterNumber: 1 @@ -641,7 +641,7 @@ paths: code: 6163 mode: APPEARS text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:33:42.023Z' + - time: "2018-05-18T07:33:42.023Z" severity: ERROR origin: masterNumber: 1 @@ -650,7 +650,7 @@ paths: code: 6163 mode: DISAPPEARS text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:35:54.123Z' + - time: "2018-05-18T07:35:54.123Z" severity: NOTICE origin: masterNumber: 1 @@ -661,7 +661,7 @@ paths: text: New slave origin=DEVICES: value: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 @@ -671,7 +671,7 @@ paths: code: 16912 mode: APPEARS text: Device temperature over-run – Clear source of heat - - time: '2018-05-18T08:31:54.123Z' + - time: "2018-05-18T08:31:54.123Z" severity: ERROR origin: masterNumber: 1 @@ -681,12 +681,12 @@ paths: code: 20480 mode: APPEARS text: Device hardware fault – Device exchange - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" delete: operationId: DeleteGatewayEvents tags: @@ -694,27 +694,27 @@ paths: summary: Delete events of Gateway, Masters, Ports and Devices from EventLog according to filter query. description: Delete events of Gateway, Masters, Ports and Devices from EventLog according to filter query. parameters: - - $ref: '#/components/parameters/eventOrigin' - - $ref: '#/components/parameters/eventMasterNumber' - - $ref: '#/components/parameters/eventPortNumber' - - $ref: '#/components/parameters/eventdeviceAlias' - - $ref: '#/components/parameters/eventTop' - - $ref: '#/components/parameters/eventBottom' + - $ref: "#/components/parameters/eventOrigin" + - $ref: "#/components/parameters/eventMasterNumber" + - $ref: "#/components/parameters/eventPortNumber" + - $ref: "#/components/parameters/eventdeviceAlias" + - $ref: "#/components/parameters/eventTop" + - $ref: "#/components/parameters/eventBottom" responses: - '200': + "200": description: Successful operation - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" -################################################################################ -# mqtt -################################################################################ + ################################################################################ + # mqtt + ################################################################################ - '/mqtt/configuration': + "/mqtt/configuration": get: operationId: GetMqttConfiguration tags: @@ -723,19 +723,19 @@ paths: Read the MQTT configuration of the Gateway. description: Read the MQTT configuration of the Gateway. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationGetPost' + $ref: "#/components/schemas/mqttConfigurationGetPost" examples: Active client: value: - clientMode: 'ACTIVE' + clientMode: "ACTIVE" serverAddress: 192.168.2.1:1883/mqttbroker username: iolink_json - password: '1234' + password: "1234" lastwill: topic: process_data message: Process data transfer stopped. @@ -744,15 +744,15 @@ paths: keepAliveTime: 10 Inactive client: value: - clientMode: 'INACTIVE' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + clientMode: "INACTIVE" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostMqttConfiguration @@ -766,14 +766,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationGetPost' + $ref: "#/components/schemas/mqttConfigurationGetPost" examples: Active Client: value: clientMode: ACTIVE serverAddress: 192.168.2.1:1883/mqttbroker username: iolink_json - password: '1234' + password: "1234" lastwill: topic: process_data message: Process data transfer stopped. @@ -784,18 +784,18 @@ paths: value: clientMode: INACTIVE responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" - '/mqtt/topics': + "/mqtt/topics": get: operationId: GetMqttTopics tags: @@ -803,14 +803,14 @@ paths: summary: Get the list of MQTT topics. description: Get the list of MQTT topics. responses: - '200': + "200": description: Successful operation content: application/json: schema: type: array items: - $ref: '#/components/schemas/mqttConfigurationTopicGet' + $ref: "#/components/schemas/mqttConfigurationTopicGet" example: - topicId: 1 topicName: Sensor34/processData @@ -854,14 +854,14 @@ paths: interval: value: 10 unit: ms - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostMqttTopicsTopicId tags: @@ -873,7 +873,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationTopicPost' + $ref: "#/components/schemas/mqttConfigurationTopicPost" examples: Process Data: value: @@ -912,23 +912,23 @@ paths: value: 1000 unit: ms responses: - '200': + "200": description: Successful operation returning the topic ID content: application/json: schema: type: integer - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/mqtt/topics/{topicId}': + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + "/mqtt/topics/{topicId}": get: operationId: GetMqttTopicsTopicId tags: @@ -936,14 +936,14 @@ paths: summary: Get one MQTT topic. description: Get one MQTT topic. parameters: - - $ref: '#/components/parameters/mqttTopicId' + - $ref: "#/components/parameters/mqttTopicId" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationTopicGet' + $ref: "#/components/schemas/mqttConfigurationTopicGet" examples: Process Data: value: @@ -988,14 +988,14 @@ paths: interval: value: 1000 unit: ms - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" delete: operationId: DeleteMqttTopicsTopicId tags: @@ -1003,21 +1003,21 @@ paths: summary: Delete a specific MQTT topic. description: Delete a specific MQTT topic. parameters: - - $ref: '#/components/parameters/mqttTopicId' + - $ref: "#/components/parameters/mqttTopicId" responses: - '204': + "204": description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/mqtt/connectionstatus': + "400": # code 104 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + "/mqtt/connectionstatus": get: operationId: GetMqttConnectionstatus tags: @@ -1025,25 +1025,25 @@ paths: summary: Read the connection status of the MQTT client to the MQTT server. description: Read the connection status of the MQTT client to the MQTT server. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mqttConnectionStatusGet' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - -################################################################################ -# iodds -################################################################################ - '/iodds': + $ref: "#/components/schemas/mqttConnectionStatusGet" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + ################################################################################ + # iodds + ################################################################################ + "/iodds": get: operationId: GetIodds tags: @@ -1054,26 +1054,26 @@ paths: Only one version of an IODD is stored on the webserver at the same time for one vendorId-deviceId-ioLinkRevision-combination. parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' + - $ref: "#/components/parameters/vendorId" + - $ref: "#/components/parameters/deviceId" + - $ref: "#/components/parameters/revision" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/ioddsGet' - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + $ref: "#/components/schemas/ioddsGet" + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" delete: operationId: DeleteIodds tags: @@ -1081,23 +1081,23 @@ paths: summary: Delete a specific IODD representation. description: Delete a specific IODD representation. parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' + - $ref: "#/components/parameters/vendorId" + - $ref: "#/components/parameters/deviceId" + - $ref: "#/components/parameters/revision" responses: - '204': + "204": description: Successful operation - '400': # code 104, 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/iodds/file': + "400": # code 104, 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + "/iodds/file": get: operationId: GetIoddsFile tags: @@ -1105,27 +1105,27 @@ paths: summary: Get a specific IODD. Optional. description: All query parameters are mandatory. parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' + - $ref: "#/components/parameters/vendorId" + - $ref: "#/components/parameters/deviceId" + - $ref: "#/components/parameters/revision" responses: - '200': + "200": description: Successful operation content: application/xml: schema: - $ref: '#/components/schemas/ioddFile' - example: 'IODD XML file' - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + $ref: "#/components/schemas/ioddFile" + example: "IODD XML file" + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostIoddsFile tags: @@ -1139,26 +1139,26 @@ paths: content: application/xml: schema: - $ref: '#/components/schemas/ioddFile' - example: 'IODD XML file' + $ref: "#/components/schemas/ioddFile" + example: "IODD XML file" responses: - '204': + "204": description: Successful operation - '400': # code 104, 208, 603, 604, 605 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': # code 101, 602 - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - -################################################################################ -# masters -################################################################################ - '/masters': + "400": # code 104, 208, 603, 604, 605 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": # code 101, 602 + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + ################################################################################ + # masters + ################################################################################ + "/masters": get: operationId: GetMasters tags: @@ -1168,17 +1168,17 @@ paths: identification information. description: Read all the available masterNumber keys with the corresponding identification information. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/identificationMasters' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/capabilities': + $ref: "#/components/schemas/identificationMasters" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/capabilities": get: operationId: GetMastersMasterNumberCapabilities tags: @@ -1186,31 +1186,31 @@ paths: summary: Read the capabilities of the Master. description: Read the capabilities of the Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/masterCapabilitiesGet' + $ref: "#/components/schemas/masterCapabilitiesGet" examples: IO-Link: value: numberOfPorts: 8 maxPowerSupply: # max power supply per port value: 0.3 - unit: A + unit: A IO-Link_Wireless: value: numberOfPorts: 40 - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/identification': + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/identification": get: operationId: GetMastersMasterNumberIdentification tags: @@ -1218,57 +1218,57 @@ paths: summary: Read the identification of the Master. description: Read the identification of the Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/masterIdentificationGet' + $ref: "#/components/schemas/masterIdentificationGet" examples: - IO-Link: - value: - vendorName: Vendor GmbH - vendorId: 26 - masterId: 42 - masterType: Master acc. V1.0 - serialNumber: IOLM123456 - orderCode: PROD-123456 - productName: IO-Link Master - productId: PROD-123456 - hardwareRevision: "3.2.1.444R" - firmwareRevision: "3.2.1.888R" - vendorUrl: 'http://www.io-link.com/io-link-master' - manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' - applicationSpecificTag: End of the belt - locationTag: Down under - functionTag: Code reading - IO-Link_Wireless: - value: - vendorName: Vendor GmbH - vendorId: 01 - masterId: 22 - masterType: Wireless_Master - serialNumber: IOLWM123456 - orderCode: PROD6789 - productName: IO-Link Wireless Master - productId: PROD6789 - hardwareRevision: "1" - firmwareRevision: "2.0.0" - vendorUrl: 'http://www.io-link.com' - productInstanceUri: 'http://www.io-link.com/PROD123456/IOLWM123456' - descriptionFileUri: 'https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml' - manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' - applicationSpecificTag: "***" - locationTag: "***" - functionTag: "***" - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + IO-Link: + value: + vendorName: Vendor GmbH + vendorId: 26 + masterId: 42 + masterType: Master acc. V1.0 + serialNumber: IOLM123456 + orderCode: PROD-123456 + productName: IO-Link Master + productId: PROD-123456 + hardwareRevision: "3.2.1.444R" + firmwareRevision: "3.2.1.888R" + vendorUrl: "http://www.io-link.com/io-link-master" + manualUrl: "http://www.io-link.com/io-link-master/documentation.pdf" + applicationSpecificTag: End of the belt + locationTag: Down under + functionTag: Code reading + IO-Link_Wireless: + value: + vendorName: Vendor GmbH + vendorId: 01 + masterId: 22 + masterType: Wireless_Master + serialNumber: IOLWM123456 + orderCode: PROD6789 + productName: IO-Link Wireless Master + productId: PROD6789 + hardwareRevision: "1" + firmwareRevision: "2.0.0" + vendorUrl: "http://www.io-link.com" + productInstanceUri: "http://www.io-link.com/PROD123456/IOLWM123456" + descriptionFileUri: "https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml" + manualUrl: "http://www.io-link.com/io-link-master/documentation.pdf" + applicationSpecificTag: "***" + locationTag: "***" + functionTag: "***" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostMastersMasterNumberIdentification tags: @@ -1276,13 +1276,13 @@ paths: summary: Write application specific identification to a Master. description: Write application specific identification to a Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/masterIdentificationPost' + $ref: "#/components/schemas/masterIdentificationPost" examples: All optional fiels: value: @@ -1290,18 +1290,18 @@ paths: locationTag: Down under functionTag: Code reading responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 206, 208 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/configuration': #TODO: wireles + "400": # code 104, 201, 202, 203, 206, 208 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/configuration": #TODO: wireles get: operationId: GetMastersMasterNumberConfiguration tags: @@ -1309,14 +1309,14 @@ paths: summary: Read the actual configuration of the specified Master. description: Read the actual configuration of the specified Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersConfigurationGetPost' + $ref: "#/components/schemas/mastersConfigurationGetPost" examples: IO-Link: value: @@ -1325,13 +1325,13 @@ paths: masterId: 5 advancedConnectivity: "ahtEnable": false - pairingTimeout: + pairingTimeout: value: 25 unit: s serviceTrackNumber: 1 serviceTrackMode: CYCLIC trackTxPower: - "track_1": 31 + "track_1": 31 "track_2": 31 "track_3": 31 "track_4": 0 @@ -1414,10 +1414,10 @@ paths: "2476": false "2477": false "2478": false - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostMastersMasterNumberConfiguration tags: @@ -1425,13 +1425,13 @@ paths: summary: Write the configuration of the specified Master. description: Write the configuration of the specified Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/mastersConfigurationGetPost' + $ref: "#/components/schemas/mastersConfigurationGetPost" examples: IO-Link: value: @@ -1440,13 +1440,13 @@ paths: masterId: 5 advancedConnectivity: "ahtEnable": false - pairingTimeout: + pairingTimeout: value: 25 unit: s serviceTrackNumber: 1 serviceTrackMode: CYCLIC trackTxPower: - "track_1": 31 + "track_1": 31 "track_2": 31 "track_3": 31 "track_4": 0 @@ -1530,43 +1530,43 @@ paths: "2477": false "2478": false responses: - '204': + "204": description: Successful operation - '400': + "400": description: Bad request content: application/json: examples: - '104': + "104": value: code: 104 message: Action locked by another client - '201': + "201": value: code: 201 message: JSON parsing failed - '202': + "202": value: code: 202 message: JSON data value invalid - '203': + "203": value: code: 203 message: JSON data type invalid - '206': + "206": value: code: 206 message: JSON data value out of bounds - '208': + "208": value: code: 208 message: POST request without content - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/trackstatus': #TODO: wireles + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/trackstatus": #TODO: wireles get: operationId: GetMastersMasterNumberTrackstatus tags: @@ -1574,20 +1574,20 @@ paths: summary: Read the actual Track status of the specified Wireless-Master. description: Read the actual Track status of the specified Wireless-Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersTrackstatusGet' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/scan': #TODO: wireles + $ref: "#/components/schemas/mastersTrackstatusGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/scan": #TODO: wireles get: operationId: GetMastersMasterNumberScan tags: @@ -1595,18 +1595,18 @@ paths: summary: Read the actual scan results of the specified Wireless-Master. description: Read the actual scan results of the specified Wireless-Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersScanGet' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + $ref: "#/components/schemas/mastersScanGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostMastersMasterNumberScan tags: @@ -1614,34 +1614,34 @@ paths: summary: To start a scan of the specified Wireless-Master. description: To start a scan of the specified Wireless-Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/mastersScanPost' + $ref: "#/components/schemas/mastersScanPost" responses: - '204': + "204": description: Successful operation - '400': + "400": description: Bad request content: application/json: examples: - '104': + "104": value: code: 104 message: Action locked by another client - '201': + "201": value: code: 201 message: JSON parsing failed - '202': + "202": value: code: 202 message: JSON data value invalid - '203': + "203": value: code: 203 message: JSON data type invalid @@ -1653,16 +1653,15 @@ paths: value: code: 208 message: POST request without content - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" -################################################################################ -# ports -################################################################################ - '/masters/{masterNumber}/ports': + ################################################################################ + # ports + ################################################################################ + "/masters/{masterNumber}/ports": get: operationId: GetMastersMasterNumberPorts tags: @@ -1670,14 +1669,14 @@ paths: summary: Read all the available portNumber keys with the corresponding identification information. description: Read all the available portNumber keys with the corresponding identification information. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersPortsGet' + $ref: "#/components/schemas/mastersPortsGet" examples: IO-Link: value: @@ -1701,41 +1700,41 @@ paths: deviceInfo: vendorId: 888 deviceId: 10485760 - productName: "BNI IOW-302-W01-K080" + productName: "BNI IOW-302-W01-K080" - portNumber: 4 statusInfo: "DEACTIVATED" deviceAlias: "Empty_port" - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/ports/qualityall': + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/qualityall": get: operationId: GetMastersMasterNumberPortsQuality tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" summary: Read the link quality and the RSSI of all used Wireless-Ports (Wireless-Device and Wireless-Master). description: Read the link quality and the RSSI of all used Wireless-Ports (Wireless-Device and Wireless-Master). responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersPortsQualityallGet' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/ports/{portNumber}/capabilities': + $ref: "#/components/schemas/mastersPortsQualityallGet" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/{portNumber}/capabilities": get: operationId: GetMastersMasterNumberPortsPortNumberCapabilities tags: @@ -1743,15 +1742,15 @@ paths: summary: Read the capability information of the specified port. description: Read the capability information of the specified port. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/portCapabilitiesGet' + $ref: "#/components/schemas/portCapabilitiesGet" examples: CLASS_A: value: @@ -1764,7 +1763,7 @@ paths: maxPowerSupply: value: 2.0 unit: A - portType: CLASS_B + portType: CLASS_B CLASS_A_WITH_PORT_POWER_OFF_ON: value: maxPowerSupply: @@ -1782,24 +1781,24 @@ paths: maxPowerSupply: value: 0.2 unit: A - portType: FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS + portType: FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS FAILSAFE_PORT_B: value: maxPowerSupply: value: 2.0 unit: A - portType: FAILSAFE_PORT_B + portType: FAILSAFE_PORT_B IO-Link_Wireless: value: portType: WIRELESS_MASTER - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/ports/{portNumber}/status': + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/{portNumber}/status": get: operationId: GetMastersMasterNumberPortsPortNumberStatus tags: @@ -1807,20 +1806,20 @@ paths: summary: Read the actual status of the selected port. description: Read the actual status of the selected port. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersPortsStatusGet' + $ref: "#/components/schemas/mastersPortsStatusGet" examples: IO-Link: value: statusInfo: "DEVICE_ONLINE" - ioLinkRevision: "1.1" + ioLinkRevision: "1.1" transmissionRate: COM2 masterCycleTime: value: 2.3 @@ -1828,10 +1827,10 @@ paths: IO-Link_Wireless: value: statusInfo: DEVICE_ONLINE - portQualityInfo: + portQualityInfo: pdInValid: true pdOutValid: true - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" inputDataLength: 2 outputDataLength: 2 vendorId: 888 @@ -1840,29 +1839,29 @@ paths: base: FreeRunning wMasterCycleTimeIn: base: FreeRunning - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/ports/{portNumber}/configuration': + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/ports/{portNumber}/configuration": get: operationId: GetMastersMasterNumberPortsPortNumberConfiguration tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Read the actual configuration of the specified port. description: Read the actual configuration of the specified port. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/portConfigurationGet' + $ref: "#/components/schemas/portConfigurationGet" examples: IO-Link: value: @@ -1884,7 +1883,7 @@ paths: deviceId: 1 slotNumber: 1 trackNumber: 5 - deviceTxPower: 31 + deviceTxPower: 31 maxRetry: 20 imaTime: base: 1664us @@ -1898,12 +1897,12 @@ paths: base: FreeRunning uniqueId: 03:78:00:00:01:32:50:60:46 deviceAlias: Port_X01 - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostMastersMasterNumberPortsPortNumberConfiguration tags: @@ -1911,14 +1910,14 @@ paths: summary: Write the configuration of the specified port. description: Write the configuration of the specified port. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/portConfigurationPost' + $ref: "#/components/schemas/portConfigurationPost" examples: Complete configuration: value: @@ -1948,7 +1947,7 @@ paths: deviceId: 1 slotNumber: 1 trackNumber: 5 - deviceTxPower: 31 + deviceTxPower: 31 maxRetry: 20 imaTime: base: 1664us @@ -1963,60 +1962,60 @@ paths: uniqueId: 03:78:00:00:01:32:50:60:46 deviceAlias: Port_X01 responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/ports/{portNumber}/datastorage': + "400": # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/ports/{portNumber}/datastorage": get: operationId: GetMastersMasterNumberPortsPortNumberDatastorages tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Read the Data Storage content of a specific port. description: Read the Data Storage content of a specific port. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/dataStorageGetPost' + $ref: "#/components/schemas/dataStorageGetPost" examples: Data Storage with valid content: value: header: vendorId: 15 deviceId: 65253 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" parameterChecksum: 123456 content: >- TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl Empty Data Storage: value: header: {} - content: '' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + content: "" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostMastersMasterNumberPortsPortNumberDatastorages tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Write the Data Storage content to a specific port. description: Write the Data Storage content to a specific port. requestBody: @@ -2024,33 +2023,33 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/dataStorageGetPost' + $ref: "#/components/schemas/dataStorageGetPost" examples: Data Storage with valid content: value: header: vendorId: 15 deviceId: 65253 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" content: >- TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl Empty Data Storage: value: header: {} - content: '' + content: "" responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" - '/masters/{masterNumber}/ports/{portNumber}/pairing': + "/masters/{masterNumber}/ports/{portNumber}/pairing": post: operationId: PostMastersMasterNumberPortsPortNumberPairing tags: @@ -2058,55 +2057,54 @@ paths: summary: To pair a Wireless-Device with the specified Wireless-Port. description: To pair a Wireless-Device with the specified Wireless-Port. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/mastersPortsPairingPost' + $ref: "#/components/schemas/mastersPortsPairingPost" responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/ports/{portNumber}/quality': + "400": # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/{portNumber}/quality": get: operationId: GetMastersMasterNumberPortsPortNumberQuality tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Read the link quality and the RSSI of the specified Wireless-Port (Wireless-Device and Wireless-Master). description: Read the link quality and the RSSI of the specified Wireless-Port (Wireless-Device and Wireless-Master). responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersPortsQualityGet' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - -################################################################################ -# devices -################################################################################ - '/devices': + $ref: "#/components/schemas/mastersPortsQualityGet" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + ################################################################################ + # devices + ################################################################################ + "/devices": get: operationId: GetDevices tags: @@ -2114,7 +2112,7 @@ paths: summary: Get all available deviceAlias keys and the location by Master number and Port number. description: Get all available deviceAlias keys and the location by Master number and Port number. responses: - '200': + "200": description: Successful operation content: application/json: @@ -2150,11 +2148,11 @@ paths: - deviceAlias: master1port4 masterNumber: 1 portNumber: 4 - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/devices/{deviceAlias}/capabilities': + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/devices/{deviceAlias}/capabilities": get: operationId: GetDevicesDeviceAliasCapabilities tags: @@ -2162,28 +2160,28 @@ paths: summary: Read the capabilities from the specific Device. description: Read the capabilities from the specific Device. parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" responses: - '200': + "200": description: Successful opearation content: application/json: schema: - $ref: '#/components/schemas/deviceCapabilitiesGet' + $ref: "#/components/schemas/deviceCapabilitiesGet" example: minimumCycleTime: value: 2.3 unit: ms supportedProfiles: [10, 32770] - '400': # code 307 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/devices/{deviceAlias}/identification': + "400": # code 307 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/devices/{deviceAlias}/identification": get: operationId: GetDevicesDeviceAliasidentification tags: @@ -2194,22 +2192,22 @@ paths: applicationSpecificTag, locationTag and functionTag (if they are supported by the device). parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceIdentificationGet' - '400': # code 307 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + $ref: "#/components/schemas/deviceIdentificationGet" + "400": # code 307 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostDevicesDeviceAliasidentification tags: @@ -2217,13 +2215,13 @@ paths: summary: Write application specific identification to the Device. description: Write application specific identification to the Device. parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/portIdentificationPost' + $ref: "#/components/schemas/portIdentificationPost" examples: All optional fields: value: @@ -2231,17 +2229,17 @@ paths: locationTag: Down under functionTag: Check start of belt responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 206, 208, 307 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/devices/{deviceAlias}/processdata/value': + "400": # code 104, 201, 202, 203, 206, 208, 307 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/devices/{deviceAlias}/processdata/value": get: operationId: GetDevicesDeviceAliasProcessData tags: @@ -2249,17 +2247,17 @@ paths: summary: Read the process data values (input and output) from the specified Device. description: Read the process data values (input and output) from the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceProcessDataValueGet' + $ref: "#/components/schemas/deviceProcessDataValueGet" examples: - ? 'Format=byteArray, CQ in IO-Link (only input), IQ in digital output' + ? "Format=byteArray, CQ in IO-Link (only input), IQ in digital output" : value: getData: ioLink: @@ -2270,7 +2268,7 @@ paths: - 216 setData: iqValue: true - ? 'Format=iodd, CQ in IO-Link (input and output), IQ in digital input' + ? "Format=iodd, CQ in IO-Link (input and output), IQ in digital input" : value: getData: ioLink: @@ -2278,7 +2276,7 @@ paths: value: Distance: value: 55 - unit: 'cm' + unit: "cm" Quality: value: 12 iqValue: true @@ -2288,16 +2286,16 @@ paths: value: Buzzer: value: 5 - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasProcessData tags: @@ -2305,15 +2303,15 @@ paths: summary: Write the process data output values to the specified Device. description: Write the process data output values to the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceProcessDataValuePost' + $ref: "#/components/schemas/deviceProcessDataValuePost" examples: - ? 'format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output' + ? "format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output" : value: ioLink: valid: true @@ -2323,7 +2321,7 @@ paths: - 126 - 236 iqValue: true - 'format=iodd, CQ (pin4) in IO-Link, IQ (pin2) not available': + "format=iodd, CQ (pin4) in IO-Link, IQ (pin2) not available": value: iolink: valid: true @@ -2333,20 +2331,20 @@ paths: Valve_2: value: false responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/processdata/getdata/value': + "/devices/{deviceAlias}/processdata/getdata/value": get: operationId: GetDevicesDeviceAliasProcessDataGetData tags: @@ -2355,17 +2353,17 @@ paths: Read the process data input values from the specified Device. description: Read the process data input values from the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" examples: - ? 'Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input' + ? "Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input" : value: ioLink: valid: true @@ -2374,29 +2372,29 @@ paths: - 22 - 216 iqValue: true - 'Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input': + "Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input": value: ioLink: valid: true value: Distance: value: 55 - unit: 'cm' + unit: "cm" Quality: value: 12 iqValue: true - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/processdata/setdata/value': + "/devices/{deviceAlias}/processdata/setdata/value": get: operationId: GetDevicesDeviceAliasProcessDataSetData tags: @@ -2405,20 +2403,20 @@ paths: Read the process data output values from the specified Device. description: Read the process data output values from the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" examples: - ? 'Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input' + ? "Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input" : value: cqValue: false - 'Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input': + "Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input": value: iolink: valid: true @@ -2427,18 +2425,18 @@ paths: value: true Valve_2: value: false - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters': + "/devices/{deviceAlias}/parameters": get: operationId: GetDevicesDeviceAliasParameters tags: @@ -2448,26 +2446,26 @@ paths: IODD support is required. description: Read all available parameter indices and parameter names from the specific Device. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParametersGet' - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + $ref: "#/components/schemas/deviceParametersGet" + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters/{index}/value': + "/devices/{deviceAlias}/parameters/{index}/value": get: operationId: GetDevicesDeviceAliasParametersIndexValue tags: @@ -2475,16 +2473,16 @@ paths: summary: Read a parameter value from the specific Device with the given index. description: Read a parameter value from the specific Device with the given index. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: format=byteArray: value: @@ -2493,28 +2491,28 @@ paths: - 156 - 125 - 25 - 'format=iodd, simple type': + "format=iodd, simple type": value: value: 15.2 - unit: 'cm' - 'format=iodd, complex type': + unit: "cm" + "format=iodd, complex type": value: value: Distance: value: 15 - unit: 'cm' + unit: "cm" Quality: value: 12 - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasParametersIndexValue @@ -2523,49 +2521,49 @@ paths: summary: Write a parameter value with the given index to the specified Device. description: Write a parameter value with the given index to the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: - 'payload as byteArray': + "payload as byteArray": value: value: - 0 - 156 - 125 - 25 - 'payload as iodd, simple type': + "payload as iodd, simple type": value: value: 15.2 - unit: 'cm' - 'payload as iodd, complex type': + unit: "cm" + "payload as iodd, complex type": value: value: Distance: value: 15 - unit: 'cm' + unit: "cm" Quality: value: 12 responses: - '204': + "204": description: Successful operation - '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters/{parameterName}/value': + "/devices/{deviceAlias}/parameters/{parameterName}/value": get: operationId: GetDevicesDeviceAliasParametersValue tags: @@ -2575,42 +2573,42 @@ paths: IODD support is required. description: Read a parameter value from the specific Device by parameter name. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: format=byteArray: - value: { 'value': [0, 156, 125, 25] } - 'format=iodd, simple type': + value: { "value": [0, 156, 125, 25] } + "format=iodd, simple type": value: value: 15.2 - unit: 'cm' - 'format=iodd, complex type': + unit: "cm" + "format=iodd, complex type": value: value: Distance: value: 15 - unit: 'cm' + unit: "cm" Quality: value: 12 - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasParametersValue tags: @@ -2620,44 +2618,44 @@ paths: IODD support is required. description: Write a parameter value by name to the specified Device.IODD support is required. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: format=byteArray: - value: { 'value': [0, 156, 125, 25] } - 'format=iodd, simple type': + value: { "value": [0, 156, 125, 25] } + "format=iodd, simple type": value: value: 15.2 - unit: 'cm' - 'format=iodd, complex type': + unit: "cm" + "format=iodd, complex type": value: value: Distance: value: 15 - unit: 'cm' + unit: "cm" Quality: value: 12 responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters/{index}/subindices': + "/devices/{deviceAlias}/parameters/{index}/subindices": get: operationId: GetDevicesDeviceAliasParametersIndexSubindices tags: @@ -2667,27 +2665,27 @@ paths: IODD support is required. description: Read all available parameter sub-indices and sub-parameter names from the specific Device. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceSubParametersGet' - '400': # code 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + $ref: "#/components/schemas/deviceSubParametersGet" + "400": # code 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters/{parameterName}/subindices': + "/devices/{deviceAlias}/parameters/{parameterName}/subindices": get: operationId: GetDevicesDeviceAliasParametersSubindices tags: @@ -2697,27 +2695,27 @@ paths: IODD support is required. description: Read all available parameter sub-indices and sub-parameter names from the specific Device (referenced by parameter name). IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceSubParametersGet' - '400': # code 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + $ref: "#/components/schemas/deviceSubParametersGet" + "400": # code 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value': + "/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value": get: operationId: GetDevicesDeviceAliasParametersSubindicesSubindexValue tags: @@ -2726,17 +2724,17 @@ paths: Read a parameter value from the specific Device with the given index and subindex. description: Read a parameter value from the specific Device with the given index and subindex. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/subindex' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/subindex" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: value: @@ -2750,17 +2748,17 @@ paths: value: Distance: value: 15.2 - unit: 'cm' - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + unit: "cm" + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasParametersSubindicesSubindexValue tags: @@ -2769,37 +2767,37 @@ paths: Write the parameter with the given index and subindex. description: Write the parameter with the given index and subindex. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/subindex' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/subindex" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: - value: { 'value': [0, 156, 125, 25] } + value: { "value": [0, 156, 125, 25] } format=iodd: value: value: 15.2 - unit: 'cm' + unit: "cm" responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - ? '/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value' + ? "/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value" : get: operationId: GetDevicesDeviceAliasParametersSubindicesValue tags: @@ -2809,35 +2807,35 @@ paths: IODD support is required. description: Read a parameter value from the specific Device by parameter name and subname. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/subParameterName' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" + - $ref: "#/components/parameters/subParameterName" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: - value: { 'value': [0, 156, 125, 25] } + value: { "value": [0, 156, 125, 25] } format=iodd: value: value: 15.2 - unit: 'cm' + unit: "cm" - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasParametersSubindicesValue tags: @@ -2847,37 +2845,37 @@ paths: IODD support is required. description: Write a parameter value to the specific Device by the parameter name and subname. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/subParameterName' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" + - $ref: "#/components/parameters/subParameterName" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: - value: { 'value': [0, 156, 125, 25] } + value: { "value": [0, 156, 125, 25] } format=iodd: value: value: 15.2 - unit: 'cm' + unit: "cm" responses: - '204': + "204": description: Successful operation - '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/blockparameterization': + "/devices/{deviceAlias}/blockparameterization": post: operationId: PostDevicesDeviceAliasBlockparameterization tags: @@ -2886,16 +2884,16 @@ paths: Write or read one or more parameters using the block parameterization method. description: Write or read one or more parameters using the block parameterization method. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceBlockParameterizationPost' + $ref: "#/components/schemas/deviceBlockParameterizationPost" examples: - 'read, format=byteArray': + "read, format=byteArray": value: direction: READ parameters: @@ -2904,7 +2902,7 @@ paths: - identifier: index: 65 subIndex: 2 - 'read, format=iodd': + "read, format=iodd": value: direction: READ parameters: @@ -2913,7 +2911,7 @@ paths: - identifier: parameterName: Distance subParameterName: Quality - 'write, format=byteArray': + "write, format=byteArray": value: direction: WRITE parameters: @@ -2932,28 +2930,28 @@ paths: - 23 - 149 - 206 - 'write, format=iodd': + "write, format=iodd": value: direction: WRITE parameters: - identifier: parameterName: Application_tag content: - value: 'Level 2, row 3' + value: "Level 2, row 3" - identifier: parameterName: Hysteresis subParameterName: Channel_B content: value: 123 responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceBlockParameterizationPostParametersAnswer' + $ref: "#/components/schemas/deviceBlockParameterizationPostParametersAnswer" examples: - 'read, format=byteArray': + "read, format=byteArray": value: - identifier: index: 123 @@ -2974,14 +2972,14 @@ paths: - 23 - 149 - 206 - 'read, format=iodd': + "read, format=iodd": value: - identifier: parameterName: Application_tag result: parameterExchangeResult: READ_SUCCESS content: - value: 'Level 2, row 3' + value: "Level 2, row 3" - identifier: parameterName: Hysteresis subParameterName: Channel_B @@ -2989,7 +2987,7 @@ paths: parameterExchangeResult: READ_SUCCESS content: value: 123 - 'read, format=byteArray with error': + "read, format=byteArray with error": value: - identifier: index: 123 @@ -3005,7 +3003,7 @@ paths: iolinkError: code: 32803 message: Access denied - 'write, format=byteArray': + "write, format=byteArray": value: - identifier: index: 123 @@ -3015,7 +3013,7 @@ paths: index: 233 result: parameterExchangeResult: WRITE_SUCCESS - 'write, format=iodd': + "write, format=iodd": value: - identifier: parameterName: Application_tag @@ -3026,7 +3024,7 @@ paths: subParameterName: Channel_B result: parameterExchangeResult: WRITE_SUCCESS - 'write, format=byteArray, with error': + "write, format=byteArray, with error": value: - identifier: index: 123 @@ -3042,46 +3040,46 @@ paths: iolinkError: code: 32817 message: Parameter value above limit - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/events': + "/devices/{deviceAlias}/events": get: operationId: GetDevicesDeviceAliasEvents tags: - devices parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/eventTop' - - $ref: '#/components/parameters/eventBottom' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/eventTop" + - $ref: "#/components/parameters/eventBottom" summary: Reading the EventLog filtered for a specific Device. description: Reading the EventLog filtered for a specific Device. responses: - '200': + "200": description: >- Successful operation. In case of empty event log, an empty array is returned. content: application/json: schema: - $ref: '#/components/schemas/deviceEventsGet' - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - + $ref: "#/components/schemas/deviceEventsGet" + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + components: schemas: cycleTime: @@ -3114,16 +3112,16 @@ components: - format properties: direction: - $ref: '#/components/schemas/content' + $ref: "#/components/schemas/content" format: - $ref: '#/components/schemas/format' + $ref: "#/components/schemas/format" oneOf: - type: object required: - interval properties: interval: - $ref: '#/components/schemas/cycleTime' + $ref: "#/components/schemas/cycleTime" - type: object required: - onChange @@ -3149,16 +3147,16 @@ components: - format properties: parameter: - $ref: '#/components/schemas/parameter' + $ref: "#/components/schemas/parameter" format: - $ref: '#/components/schemas/format' + $ref: "#/components/schemas/format" oneOf: - type: object required: - interval properties: interval: - $ref: '#/components/schemas/cycleTime' + $ref: "#/components/schemas/cycleTime" - type: object required: - onChange @@ -3437,13 +3435,13 @@ components: - message properties: time: - $ref: '#/components/schemas/eventTime' + $ref: "#/components/schemas/eventTime" severity: - $ref: '#/components/schemas/eventSeverity' + $ref: "#/components/schemas/eventSeverity" origin: - $ref: '#/components/schemas/eventOriginObject' + $ref: "#/components/schemas/eventOriginObject" message: - $ref: '#/components/schemas/eventObject' + $ref: "#/components/schemas/eventObject" blockParameterizationPostParametersRequest: type: array minItems: 1 @@ -3479,7 +3477,7 @@ components: minLength: 1 maxLength: 71 content: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" deviceBlockParameterizationPostParametersAnswer: type: array items: @@ -3526,9 +3524,9 @@ components: - READ_SUCCESS - ERROR content: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" iolinkError: - $ref: '#/components/schemas/iolinkErrorObject' + $ref: "#/components/schemas/iolinkErrorObject" deviceEventsGet: type: array items: @@ -3540,24 +3538,24 @@ components: - message properties: time: - $ref: '#/components/schemas/eventTime' + $ref: "#/components/schemas/eventTime" severity: - $ref: '#/components/schemas/eventSeverity' + $ref: "#/components/schemas/eventSeverity" origin: required: - master - port - deviceAlias allOf: - - $ref: '#/components/schemas/eventOriginObject' + - $ref: "#/components/schemas/eventOriginObject" message: required: - code - mode allOf: - - $ref: '#/components/schemas/eventObject' + - $ref: "#/components/schemas/eventObject" example: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: master: 1 @@ -3575,7 +3573,7 @@ components: properties: macAddress: type: string - pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' + pattern: "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$" serialNumber: type: string orderCode: @@ -3605,14 +3603,14 @@ components: functionTag: type: string example: - macAddress: '00:02:72:CE:A6:49' - serialNumber: 'C134A746' - productId: 'TMP34Z' - vendorName: 'SensorCompany' - productName: 'FlowSensor34' - hardwareRevision: 'V3.45' - firmwareRevision: 'V1.30' - productInstanceUri: 'sensor.tmp.23.com' + macAddress: "00:02:72:CE:A6:49" + serialNumber: "C134A746" + productId: "TMP34Z" + vendorName: "SensorCompany" + productName: "FlowSensor34" + hardwareRevision: "V3.45" + firmwareRevision: "V1.30" + productInstanceUri: "sensor.tmp.23.com" gatewayConfigurationGetPost: type: object required: @@ -3627,7 +3625,7 @@ components: - ipConfiguration properties: ipConfiguration: - $ref: '#/components/schemas/ipConfiguration' + $ref: "#/components/schemas/ipConfiguration" ipAddress: type: string format: ipv4 @@ -3697,18 +3695,18 @@ components: - type: object properties: event: - $ref: '#/components/schemas/event' + $ref: "#/components/schemas/event" processData: - $ref: '#/components/schemas/processData' + $ref: "#/components/schemas/processData" parameter: - $ref: '#/components/schemas/mqttParameter' + $ref: "#/components/schemas/mqttParameter" mqttConfigurationTopicPost: allOf: - type: object properties: topicName: type: string - - $ref: '#/components/schemas/mqttConfigurationTopic' + - $ref: "#/components/schemas/mqttConfigurationTopic" mqttConfigurationTopicGet: allOf: - type: object @@ -3723,7 +3721,7 @@ components: properties: topicName: type: string - - $ref: '#/components/schemas/mqttConfigurationTopic' + - $ref: "#/components/schemas/mqttConfigurationTopic" example: topicId: 1 topicName: PD input @@ -3759,7 +3757,7 @@ components: type: integer example: connectionStatus: CONNECTION_ACCEPTED - serverAddress: 'http://broker-address.com' + serverAddress: "http://broker-address.com" upTime: 1050 deviceCapabilitiesGet: required: @@ -3768,7 +3766,7 @@ components: type: object properties: minimumCycleTime: - $ref: '#/components/schemas/cycleTime' + $ref: "#/components/schemas/cycleTime" supportedProfiles: type: array items: @@ -3794,8 +3792,8 @@ components: ioLinkRevision: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" vendorName: description: Mandatory if the Device suports the ISDU. type: string @@ -3847,7 +3845,7 @@ components: example: vendorId: 26 deviceId: 8389226 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" vendorName: SICK AG vendorText: Sensor Intelligence. productName: SLG-2 @@ -3856,9 +3854,9 @@ components: serialNumber: Serial123456 hardwareRevision: 3.2.1.444R firmwareRevision: 3.2.1.888R - vendorUrl: 'http://www.sick.com' - productInstanceUri: 'http://www.sick.com/SLG-2/Serial123456' - ioddUri: 'https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1' + vendorUrl: "http://www.sick.com" + productInstanceUri: "http://www.sick.com/SLG-2/Serial123456" + ioddUri: "https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1" # 'https://ioddfinder.io-link.com/api/vendors/26/iodds/11541/files/zip/rated' # 'https://ioddfinder.io-link.com/productvariants/search/32872' applicationSpecificTag: Fallback light switch @@ -3899,7 +3897,7 @@ components: - WIRELESS_MASTER slotType: description: >- - slotType for Wireless Master only + slotType for Wireless Master only type: string enum: - SSLOT @@ -3917,8 +3915,6 @@ components: unit: type: string - - portConfigurationGet: type: object required: @@ -3955,10 +3951,10 @@ components: the port shall use the next possible higher value. If the cycle time is greater than 132.8 ms the error 702 shall be returned. Note: This value is not used in IO-Link wireless use - wMasterCycleTimeOut and wMasterCycleTimeIn instead. + wMasterCycleTimeOut and wMasterCycleTimeIn instead. type: object allOf: - - $ref: '#/components/schemas/cycleTime' + - $ref: "#/components/schemas/cycleTime" vendorId: description: >- required if portMode is IOLINK_MANUAL and @@ -4037,7 +4033,7 @@ components: type: string enum: - "SSLOT" - - "DSLOT" + - "DSLOT" lowEnergyDevice: description: >- to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). @@ -4088,9 +4084,7 @@ components: minLength: 26 maxLength: 26 - - - mastersConfigurationGetPost : # TODO: IOLW + mastersConfigurationGetPost: # TODO: IOLW properties: wMasterId: description: >- @@ -4118,8 +4112,8 @@ components: properties: value: type: integer - minimum: 5 - maximum: 255 + minimum: 5 + maximum: 255 unit: type: string enum: @@ -4171,238 +4165,238 @@ components: blockList: type: object properties: - '2402': + "2402": type: boolean default: false - '2403': + "2403": type: boolean default: false - '2404': + "2404": type: boolean default: false - '2405': + "2405": type: boolean default: false - '2406': + "2406": type: boolean default: false - '2407': + "2407": type: boolean default: false - '2408': + "2408": type: boolean default: false - '2409': + "2409": type: boolean default: false - '2410': + "2410": type: boolean default: false - '2411': + "2411": type: boolean default: false - '2412': + "2412": type: boolean default: false - '2413': + "2413": type: boolean default: false - '2414': + "2414": type: boolean default: false - '2415': + "2415": type: boolean default: false - '2416': + "2416": type: boolean default: false - '2417': + "2417": type: boolean default: false - '2418': + "2418": type: boolean default: false - '2419': + "2419": type: boolean default: false - '2420': + "2420": type: boolean default: false - '2421': + "2421": type: boolean default: false - '2422': + "2422": type: boolean default: false - '2423': + "2423": type: boolean default: false - '2424': + "2424": type: boolean default: false - '2425': + "2425": type: boolean default: false - '2426': + "2426": type: boolean default: false - '2427': + "2427": type: boolean default: false - '2428': + "2428": type: boolean default: false - '2429': + "2429": type: boolean default: false - '2430': + "2430": type: boolean default: false - '2431': + "2431": type: boolean default: false - '2432': + "2432": type: boolean default: false - '2433': + "2433": type: boolean default: false - '2434': + "2434": type: boolean default: false - '2435': + "2435": type: boolean default: false - '2436': + "2436": type: boolean default: false - '2437': + "2437": type: boolean default: false - '2438': + "2438": type: boolean default: false - '2439': + "2439": type: boolean default: false - '2440': + "2440": type: boolean default: false - '2441': + "2441": type: boolean default: false - '2442': + "2442": type: boolean default: false - '2443': + "2443": type: boolean default: false - '2444': + "2444": type: boolean default: false - '2445': + "2445": type: boolean default: false - '2446': + "2446": type: boolean default: false - '2447': + "2447": type: boolean default: false - '2448': + "2448": type: boolean default: false - '2449': + "2449": type: boolean default: false - '2450': + "2450": type: boolean default: false - '2451': + "2451": type: boolean default: false - '2452': + "2452": type: boolean default: false - '2453': + "2453": type: boolean default: false - '2454': + "2454": type: boolean default: false - '2455': + "2455": type: boolean default: false - '2456': + "2456": type: boolean default: false - '2457': + "2457": type: boolean default: false - '2458': + "2458": type: boolean default: false - '2459': + "2459": type: boolean default: false - '2460': + "2460": type: boolean default: false - '2461': + "2461": type: boolean default: false - '2462': + "2462": type: boolean default: false - '2463': + "2463": type: boolean default: false - '2464': + "2464": type: boolean default: false - '2465': + "2465": type: boolean default: false - '2466': + "2466": type: boolean default: false - '2467': + "2467": type: boolean default: false - '2468': + "2468": type: boolean default: false - '2469': + "2469": type: boolean default: false - '2470': + "2470": type: boolean default: false - '2471': + "2471": type: boolean default: false - '2472': + "2472": type: boolean default: false - '2473': + "2473": type: boolean default: false - '2474': + "2474": type: boolean default: false - '2475': + "2475": type: boolean default: false - '2476': + "2476": type: boolean default: false - '2477': + "2477": type: boolean default: false - '2478': + "2478": type: boolean - default: false - mastersPortsPairingPost: # TODO: IOLW + default: false + mastersPortsPairingPost: # TODO: IOLW properties: portPairing: type: string @@ -4413,12 +4407,12 @@ components: example: WPortPairing: PairingUnique - mastersScanGet: # TODO: IOLW + mastersScanGet: # TODO: IOLW properties: scanStatus: type: string - enum: - - NoScanWasPerformed + enum: + - NoScanWasPerformed - ScanInProgress - ScanEnded scanResults: @@ -4436,22 +4430,22 @@ components: ioLinkRevision: type: string enum: - - '1.1' + - "1.1" lastSeen: - $ref: '#/components/schemas/eventTime' + $ref: "#/components/schemas/eventTime" example: scanStatus: ScanEnded scanResults: - slotType: SSLOT uniqueId: 03:78:00:00:01:32:50:60:46 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" lastSeen: "2022-12-01T08:42:23.314Z" - slotType: DSLOT uniqueId: 03:78:00:00:01:32:50:60:47 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" lastSeen: "2022-12-01T09:42:23.314Z" - mastersScanPost: # TODO: IOLW + mastersScanPost: # TODO: IOLW properties: txPower: type: integer @@ -4459,8 +4453,8 @@ components: maximum: 31 example: txPower: 31 - - mastersPortsGet: # TODO: IOLW + + mastersPortsGet: # TODO: IOLW type: array items: type: object @@ -4475,17 +4469,17 @@ components: type: string statusInfo: type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE slotNumber: description: >- slot number of the Wireless-Device (Wireless Master only). @@ -4524,32 +4518,29 @@ components: minLength: 1 maxLength: 64 - - - - mastersPortsStatusGet: # TODO: IOLW + mastersPortsStatusGet: # TODO: IOLW properties: statusInfo: type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE ioLinkRevision: description: >- Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or OPERATE. type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" transmissionRate: description: >- Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or @@ -4566,7 +4557,7 @@ components: wMasterCycleTimeOut and wMasterCycleTimeIn instead. type: object allOf: - - $ref: '#/components/schemas/cycleTime' + - $ref: "#/components/schemas/cycleTime" portQualityInfo: description: >- status information of the Process Data (Wireless Master only). @@ -4635,10 +4626,7 @@ components: minimum: 1 maximum: 63 - - - - mastersTrackstatusGet: # TODO: IOLW + mastersTrackstatusGet: # TODO: IOLW type: array items: type: object @@ -4657,15 +4645,15 @@ components: type: integer minimum: 1 maximum: 31 - example: + example: - trackNumber: 1 Mode: CYCLIC txPower: 31 - trackNumber: 2 Mode: ROAMING txPower: 31 - - mastersPortsQualityallGet: # TODO: IOLW + + mastersPortsQualityallGet: # TODO: IOLW type: array items: type: object @@ -4688,7 +4676,7 @@ components: type: integer minimum: -128 maximum: 20 - example: + example: - portNumber: 1 lqiMaster: 100 rssiMaster: -40 @@ -4698,9 +4686,9 @@ components: lqiMaster: 100 rssiMaster: -60 lqiDevice: 100 - rssiDevice: -61 - - mastersPortsQualityGet: # TODO: IOLW + rssiDevice: -61 + + mastersPortsQualityGet: # TODO: IOLW properties: lqiMaster: type: integer @@ -4718,15 +4706,15 @@ components: type: integer minimum: -128 maximum: 20 - example: + example: lqiMaster: 100 rssiMaster: -40 lqiDevice: 100 - rssiDevice: -39 + rssiDevice: -39 portConfigurationPost: - description: 'Note: At least one of the mode, iqConfiguration, - deviceAlias properties shall be included to the POST request' + description: "Note: At least one of the mode, iqConfiguration, + deviceAlias properties shall be included to the POST request" type: object properties: mode: @@ -4762,7 +4750,7 @@ components: wMasterCycleTimeOut and wMasterCycleTimeIn instead. type: object allOf: - - $ref: '#/components/schemas/cycleTime' + - $ref: "#/components/schemas/cycleTime" vendorId: description: >- required if the port's mode is IOLINK_MANUAL and validationAndBackup is @@ -4846,7 +4834,7 @@ components: type: string enum: - "SSLOT" - - "DSLOT" + - "DSLOT" lowEnergyDevice: description: >- to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). @@ -4896,7 +4884,7 @@ components: type: string minLength: 26 maxLength: 26 - + dataStorageGetPost: description: >- In case the Data Storage is empty, the header object is empty and the @@ -4925,8 +4913,8 @@ components: ioLinkRevision: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" parameterChecksum: type: integer - type: object # empty object @@ -4957,11 +4945,11 @@ components: properties: value: oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" + - $ref: "#/components/schemas/deviceComplexTypeValue" unit: - $ref: '#/components/schemas/deviceSimpleTypeValueUnit' + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" description: > Process data value cqValue: @@ -4975,7 +4963,7 @@ components: IO-Link cable IQ (pin2) level if it is used as digital input or output. (false - 0 V, true - 24 V) example: - 'format=byteArray, pin4=IO-Link, pin2=sio': + "format=byteArray, pin4=IO-Link, pin2=sio": ioLink: valid: true value: @@ -4984,7 +4972,7 @@ components: - 126 - 236 iqValue: true - 'format=iodd, pin4=IO-Link, pin2=deactivated/not available': + "format=iodd, pin4=IO-Link, pin2=deactivated/not available": iolink: valid: true value: @@ -4992,7 +4980,7 @@ components: value: true Valve_2: value: false - 'format=byteArray/iodd, pin4=sio, pin2=deactivated/not available': + "format=byteArray/iodd, pin4=sio, pin2=deactivated/not available": cqValue: false deviceProcessDataValueGet: type: object @@ -5006,11 +4994,11 @@ components: is configured as digital output. properties: getData: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" setData: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" deviceProcessDataValuePost: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" deviceByteArrayTypeValue: type: array description: The value in byteArray format. @@ -5031,9 +5019,9 @@ components: - value properties: value: - $ref: '#/components/schemas/deviceSimpleTypeValue' + $ref: "#/components/schemas/deviceSimpleTypeValue" unit: - $ref: '#/components/schemas/deviceSimpleTypeValueUnit' + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" deviceSimpleTypeValueUnit: type: string description: The unit for the simple type number value in SI format. @@ -5043,7 +5031,7 @@ components: maxProperties: 255 description: The value (with complex type) in iodd format. additionalProperties: - $ref: '#/components/schemas/deviceComplexTypeEntry' + $ref: "#/components/schemas/deviceComplexTypeEntry" deviceParametersGet: type: array items: @@ -5065,13 +5053,13 @@ components: description: only for complex parameters (records or arrays) required. Not allowed for simple parameters example: - index: 16 - parameterName: 'Vendor_Name' + parameterName: "Vendor_Name" - index: 18 - parameterName: 'Product_Name' + parameterName: "Product_Name" - index: 19 - parameterName: 'ProductID' + parameterName: "ProductID" - index: 60 - parameterName: 'SSC_1_Param' + parameterName: "SSC_1_Param" subindexAccessSupported: true deviceSubParametersGet: type: array @@ -5101,11 +5089,11 @@ components: properties: value: oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" + - $ref: "#/components/schemas/deviceComplexTypeValue" unit: - $ref: '#/components/schemas/deviceSimpleTypeValueUnit' + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" required: - value deviceParameterSubindexValueGetPost: @@ -5113,11 +5101,11 @@ components: properties: value: oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" + - $ref: "#/components/schemas/deviceComplexTypeValue" unit: - $ref: '#/components/schemas/deviceSimpleTypeValueUnit' + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" required: - value deviceBlockParameterizationPost: @@ -5132,7 +5120,7 @@ components: - WRITE - READ parameters: - $ref: '#/components/schemas/blockParameterizationPostParametersRequest' + $ref: "#/components/schemas/blockParameterizationPostParametersRequest" ioddIdentification: type: object required: @@ -5153,8 +5141,8 @@ components: ioLinkRevision: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" ioddFile: description: The IODD XML file. type: string @@ -5162,18 +5150,18 @@ components: ioddsGet: type: array items: - $ref: '#/components/schemas/ioddIdentification' + $ref: "#/components/schemas/ioddIdentification" example: - vendorId: 1234 deviceId: 4567 - version: '4.3' - releaseDate: '2018-01-02' - ioLinkRevision: '1.1' + version: "4.3" + releaseDate: "2018-01-02" + ioLinkRevision: "1.1" - vendorId: 4321 deviceId: 8765 - version: '2.1' - releaseDate: '2015-01-02' - ioLinkRevision: '1.1' + version: "2.1" + releaseDate: "2015-01-02" + ioLinkRevision: "1.1" iolinkErrorObject: type: object required: @@ -5200,7 +5188,7 @@ components: type: string minLength: 1 iolinkError: - $ref: '#/components/schemas/iolinkErrorObject' + $ref: "#/components/schemas/iolinkErrorObject" #--------------------------------------------------------------------------- parameters: @@ -5230,8 +5218,8 @@ components: schema: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" mqttTopicId: name: topicId in: path @@ -5282,25 +5270,25 @@ components: in: query description: The event source to filter schema: - $ref: '#/components/schemas/eventOrigin' + $ref: "#/components/schemas/eventOrigin" eventMasterNumber: name: masterNumber in: query description: masterNumber is only applicable with origin=MASTERS and origin=PORTS schema: - $ref: '#/components/schemas/eventMasterNumber' + $ref: "#/components/schemas/eventMasterNumber" eventPortNumber: name: portNumber in: query description: portnumber is only applicable with origin=PORTS schema: - $ref: '#/components/schemas/eventPortNumber' + $ref: "#/components/schemas/eventPortNumber" eventdeviceAlias: name: deviceAlias in: query description: deviceAlias is only applicable with origin=DEVICES schema: - $ref: '#/components/schemas/eventdeviceAlias' + $ref: "#/components/schemas/eventdeviceAlias" eventTop: name: top in: query @@ -5308,7 +5296,7 @@ components: Delivers or removes the oldest n events of the event buffer. top is mutually exclusive to bottom. schema: - $ref: '#/components/schemas/eventTop' + $ref: "#/components/schemas/eventTop" eventBottom: name: bottom in: query @@ -5316,13 +5304,13 @@ components: Delivers or removes the youngest n events of the event buffer. bottom is mutually exclusive to top. schema: - $ref: '#/components/schemas/eventBottom' + $ref: "#/components/schemas/eventBottom" format: name: format in: query description: Value format in response document schema: - $ref: '#/components/schemas/format' + $ref: "#/components/schemas/format" index: name: index in: path @@ -5369,104 +5357,104 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '104': + "104": description: Fieldbus controller or another gateway protocol has claimed priority value: code: 104 message: Action locked by another client - '201': + "201": description: Error while parsing the incoming JSON object value: code: 201 message: JSON parsing failed - '202': + "202": description: Error while parsing a specific JSON value, e.g. a malformed IP address value: code: 202 message: JSON data value invalid - '203': + "203": description: e.g. string instead of number value: code: 203 message: JSON data type invalid - '204': + "204": value: code: 204 message: Enumeration value unknown - '205': + "205": description: Exceeds the minimum or maximum value value: code: 205 message: JSON data value out of range - '206': + "206": description: An array or string was accessed exceeding its maximum length value: code: 206 message: JSON data value out of bounds - '208': + "208": value: code: 208 message: POST or PUT request without content - '305': + "305": value: code: 305 message: Query parameter name invalid - '306': + "306": value: code: 306 message: Query parameter value invalid - '307': + "307": value: code: 307 message: Port is not configured to IO-Link - '311': + "311": value: code: 311 message: IO-Link parameter access error - '401': + "401": value: code: 401 message: Data storage mismatch - '501': + "501": value: code: 501 message: I/Q is not configured as DIGITAL_OUTPUT - '502': + "502": value: code: 502 message: C/Q is not configured as DIGITAL_OUTPUT - '503': + "503": value: code: 503 message: IO-Link Device has no output process data - '601': + "601": value: code: 601 message: IODD (representation) for this IO-Link device is not available - '603': + "603": value: code: 603 message: IODD upload failed. IODD XML invalid - '604': + "604": value: code: 604 message: IODD upload failed. CRC error - '605': + "605": value: code: 605 message: IODD upload failed. Parsing error - '701': + "701": value: code: 701 message: Data set incomplete - '702': + "702": description: whole data set is rejected value: code: 702 message: Data set not applicable - '703': + "703": description: whole data set is rejected value: code: 703 @@ -5476,9 +5464,9 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '150': + "150": description: due to user management restrictions value: code: 140 @@ -5488,9 +5476,9 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '150': + "150": description: due to user management restrictions value: code: 150 @@ -5500,43 +5488,43 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '103': + "103": value: code: 103 message: Operation not supported - '301': + "301": description: e.g. wrong URL value: code: 301 message: Resource not found - '302': + "302": value: code: 302 message: masterNumber not found - '303': + "303": value: code: 303 message: portNumber not found - '304': + "304": value: code: 304 message: deviceAlias not found - '308': + "308": description: e.g. not connected or communication error value: code: 308 message: IO-Link Device is not accessible - '309': + "309": value: code: 309 message: IO-Link Parameter not found - '310': + "310": value: code: 310 message: IO-Link parameter access not supported by the Device - '312': + "312": value: code: 312 message: IO-Link parameter name is not unique @@ -5545,17 +5533,17 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '101': + "101": value: code: 101 message: Internal server error - '102': + "102": value: code: 102 message: Internal communication error - '602': + "602": value: code: 602 message: IODD upload failed. Not enough memory @@ -5564,13 +5552,13 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '105': + "105": value: code: 105 message: IODD feature not supported - '106': + "106": value: code: 106 message: MQTT feature not supported @@ -5579,11 +5567,9 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - "107": - value: - code: 107 - message: 'Service temporarily unavailable' - - + "107": + value: + code: 107 + message: "Service temporarily unavailable" diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index 72eec39..b63a661 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -4,13 +4,13 @@ info: version: 0.0.1 description: > This is the _AsyncAPI_ specification of MQTT topics by the IO-Link consortium. - termsOfService: 'https://www.io-link.com' + termsOfService: "https://www.io-link.com" contact: name: Markus Rentschler email: markus.rentschler@murrelektronik.de servers: broker: - url: 'api.iolink.com:{port}' + url: "api.iolink.com:{port}" protocol: mqtt description: central mqtt Broker security: @@ -18,11 +18,11 @@ servers: variables: port: enum: - - '1883' - - '8883' - default: '1883' + - "1883" + - "8883" + default: "1883" channels: - '{originatorId}/connection': + "{originatorId}/connection": description: >- Topic that publishes online/offline state of the gateway, send at startup/"birth" and as "lastwill" @@ -37,18 +37,18 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: - $ref: '#/components/messages/connection' + $ref: "#/components/messages/connection" bindings: mqtt: qos: 1 retain: true - '{originatorId}/asset': + "{originatorId}/asset": description: >- publishes asset (e.g. gateway) nameplate information, send at startup or onChange @@ -64,12 +64,12 @@ channels: example: iomaster_nr1 subscribe: message: - $ref: '#/components/messages/nameplate' + $ref: "#/components/messages/nameplate" bindings: mqtt: qos: 1 retain: true - '{originatorId}/health': + "{originatorId}/health": description: publishes gateway health state parameters: originatorId: @@ -83,12 +83,12 @@ channels: example: iomaster_nr1 subscribe: message: - $ref: '#/components/messages/gatewayhealth' + $ref: "#/components/messages/gatewayhealth" bindings: mqtt: qos: 1 retain: true - '{originatorId}/{deviceId}(/event)/asset': + "{originatorId}/{deviceId}(/event)/asset": description: >- publishes asset (e.g. device) nameplate information, send at connection startup (new connection) @@ -103,19 +103,19 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: - $ref: '#/components/messages/nameplate_iolink' + $ref: "#/components/messages/nameplate_iolink" bindings: mqtt: qos: 1 retain: true - '{originatorId}/{deviceId}(/event)/status': - description: 'publishes the port status, send at startup/onChange' + "{originatorId}/{deviceId}(/event)/status": + description: "publishes the port status, send at startup/onChange" parameters: originatorId: description: >- @@ -127,18 +127,18 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: - $ref: '#/components/messages/portstatus' + $ref: "#/components/messages/portstatus" bindings: mqtt: qos: 1 retain: true - '{originatorId}/{deviceId}(/event)/health': + "{originatorId}/{deviceId}(/event)/health": description: health data of the device parameters: originatorId: @@ -151,18 +151,18 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: - $ref: '#/components/messages/devicehealth' + $ref: "#/components/messages/devicehealth" bindings: mqtt: qos: 1 retain: true - '{originatorId}/{deviceId}/processData': + "{originatorId}/{deviceId}/processData": parameters: originatorId: description: >- @@ -174,20 +174,20 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: oneOf: - - $ref: '#/components/messages/processdata_IOLink' - - $ref: '#/components/messages/processdata_Misc' + - $ref: "#/components/messages/processdata_IOLink" + - $ref: "#/components/messages/processdata_Misc" bindings: mqtt: qos: 1 retain: true - '{originatorId}/{deviceId}/events': + "{originatorId}/{deviceId}/events": description: >- eventlog of the io link device, see "iolink/v1/devices/{deviceAlias}/events" @@ -202,13 +202,13 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: - $ref: '#/components/messages/deviceEvents' + $ref: "#/components/messages/deviceEvents" bindings: mqtt: qos: 1 @@ -242,7 +242,7 @@ components: vendorUrl: type: string format: url - default: 'http://www.murrelektronik.com' + default: "http://www.murrelektronik.com" productName: type: string example: Impact67 PN DIO12 IOL4 IRT 7/8" 5pin @@ -258,7 +258,7 @@ components: description: >- Unique product identifier and link to product catalogue (https://product.murrelektronik.com/{productCode}/{orderCode}/{serialNumber}) - example: 'https://product.murrelektronik.com/XYZ/512345/01234567' + example: "https://product.murrelektronik.com/XYZ/512345/01234567" hardwareRevision: type: string example: 7 @@ -285,7 +285,7 @@ components: description: Location description of the device or system example: Factory ABC Hall 123 ethIpv4: - $ref: '#/components/schemas/networkConfiguration' + $ref: "#/components/schemas/networkConfiguration" gatewayhealth: summary: diagnostic health information of the gateway. tags: @@ -300,9 +300,9 @@ components: type: string description: Error message describing the error ocurred. health: - $ref: '#/components/schemas/namurHealth' + $ref: "#/components/schemas/namurHealth" healthState: - $ref: '#/components/schemas/namurHealthState' + $ref: "#/components/schemas/namurHealthState" example: health: NORMAL_0 healthState: 100 @@ -427,7 +427,7 @@ components: vendorUrl: type: string format: url - default: 'http://www.murrelektronik.com' + default: "http://www.murrelektronik.com" productName: type: string orderCode: @@ -447,10 +447,10 @@ components: example: vendorName: Murrelektronik vendorId: 303 - vendorUrl: 'http://www.murrelektronik.com/' + vendorUrl: "http://www.murrelektronik.com/" orderCode: 55132 productName: Impact67 PN DIO12 IOL4 IRT 7/8" 5pin - serialNumber: '123456789' + serialNumber: "123456789" hardwareRevision: 1.0.0 softwareRevision: 1.0.1 devicehealth: @@ -464,9 +464,9 @@ components: type: object properties: health: - $ref: '#/components/schemas/namurHealth' + $ref: "#/components/schemas/namurHealth" healthState: - $ref: '#/components/schemas/namurHealthState' + $ref: "#/components/schemas/namurHealthState" errors: type: object properties: @@ -517,7 +517,7 @@ components: tags: - name: device payload: - $ref: '#/components/schemas/deviceEvents' + $ref: "#/components/schemas/deviceEvents" processdata_IOLink: summary: >- Read the process data values (input and output) from the specified @@ -525,7 +525,7 @@ components: tags: - name: device payload: - $ref: '#/components/schemas/deviceProcessDataValueIOLINK' + $ref: "#/components/schemas/deviceProcessDataValueIOLINK" processdata_Misc: summary: >- Read the process data values (input and output) from the specified @@ -533,7 +533,7 @@ components: tags: - name: device payload: - $ref: '#/components/schemas/deviceProcessDataValueMisc' + $ref: "#/components/schemas/deviceProcessDataValueMisc" schemas: eventOrigin: type: string @@ -563,14 +563,14 @@ components: - direction properties: direction: - $ref: '#/components/schemas/content' + $ref: "#/components/schemas/content" oneOf: - type: object required: - interval properties: interval: - $ref: '#/components/schemas/cycleTime' + $ref: "#/components/schemas/cycleTime" - type: object required: - onChange @@ -643,7 +643,7 @@ components: type: integer example: connectionStatus: CONNECTION_ACCEPTED - serverAddress: 'http://broker-address.com' + serverAddress: "http://broker-address.com" upTime: 1050 deviceProcessDataValueIOLINK: type: object @@ -658,9 +658,9 @@ components: configured as digital output. properties: getData: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" setData: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" processDataValue: type: object properties: @@ -678,8 +678,8 @@ components: Process data validity value: anyOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" description: | Process data value cqValue: @@ -743,14 +743,14 @@ components: - message properties: time: - $ref: '#/components/schemas/eventTime' + $ref: "#/components/schemas/eventTime" severity: - $ref: '#/components/schemas/eventSeverity' + $ref: "#/components/schemas/eventSeverity" message: required: - code - mode - $ref: '#/components/schemas/eventObject' + $ref: "#/components/schemas/eventObject" eventObject: type: object properties: @@ -821,7 +821,7 @@ components: absolute time or a relative time. Both formats are defined in DIN ISO 8601. type: string - example: '2021-05-18T07:31:54.123Z' + example: "2021-05-18T07:31:54.123Z" namurHealthState: type: integer maximum: 100 @@ -875,7 +875,7 @@ components: - custom macAddress: type: string - example: 'FE:AB:3A:55:33:11' + example: "FE:AB:3A:55:33:11" valueUnitObject: type: object properties: @@ -899,21 +899,21 @@ components: description: Name of the interface. example: eth0 ipConfiguration: - $ref: '#/components/schemas/ipConfiguration' + $ref: "#/components/schemas/ipConfiguration" ipAddress: - $ref: '#/components/schemas/ipAddress' + $ref: "#/components/schemas/ipAddress" subnetMask: - $ref: '#/components/schemas/subnetMask' + $ref: "#/components/schemas/subnetMask" standardGateway: - $ref: '#/components/schemas/standardGateway' + $ref: "#/components/schemas/standardGateway" dnsServer: - $ref: '#/components/schemas/dnsServer' + $ref: "#/components/schemas/dnsServer" macAddress: - $ref: '#/components/schemas/macAddress' + $ref: "#/components/schemas/macAddress" ifSpeed: type: array items: - $ref: '#/components/schemas/valueUnitObject' + $ref: "#/components/schemas/valueUnitObject" ifOperStatus: type: array items: From 1dd5c88d9cdd9c6203fe680d7e232037c176039c Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 21 Mar 2023 10:22:37 +0100 Subject: [PATCH 040/279] Change to double quotes. Add regex pattern for ip address. --- JSON_for_IO-Link.yaml | 2444 ++++++++++++++++++++--------------------- 1 file changed, 1217 insertions(+), 1227 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4e829c0..40d0ddc 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -25,26 +25,26 @@ info: >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. - + contact: email: info@io-link.com license: name: Legal Information - url: 'https://io-link.com/en/Global/Impressum.php' + url: "https://io-link.com/en/Global/Impressum.php" servers: - - url: '{scheme}://{host}/{basePath}' + - url: "{scheme}://{host}/{basePath}" variables: host: - default: 'iolmaster.io-link.com' + default: "iolmaster.io-link.com" basePath: default: iolink/v1 scheme: - description: 'The IO-Link gateway can expose the API over https and/or http' + description: "The IO-Link gateway can expose the API over https and/or http" enum: - - 'https' - - 'http' - default: 'http' + - "https" + - "http" + default: "http" tags: - name: general description: Access to general informations @@ -62,10 +62,10 @@ tags: description: Access to the IO-Link Devices connected ot the Master paths: -################################################################################ -# general -################################################################################ - '/openapi': + ################################################################################ + # general + ################################################################################ + "/openapi": get: tags: - general @@ -76,21 +76,21 @@ paths: Get the REST interface description of the IO-Link API as OpenAPI YAML document. responses: - '200': + "200": description: Successful operation content: application/text: schema: type: string examples: - 'url-github': + "url-github": value: https://github.com/iolinkcommunity/JSON_for_IO-Link/blob/1.0.0/JSON_for_IO-Link.yaml - 'url-vendor': + "url-vendor": value: >- https://www.iolink-master-vendor.com/de/de/p/p672882 application/yaml: example: - 'yaml': + "yaml": value: >- openapi: 3.0.3 info: @@ -117,38 +117,38 @@ paths: ... application/json: example: - 'json': + "json": value: { - 'openapi': '3.0.3', - 'info': null, - 'description': "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 1.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", - 'version': '1.1.0', - 'title': 'Swagger IO-Link Master', - 'contact': { 'email': 'info@io-link.com' }, - 'license': - { 'name': 'tbd', 'url': 'http://www.io-link.com' }, - ...: 'to be continued', + "openapi": "3.0.3", + "info": null, + "description": "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 1.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", + "version": "1.1.0", + "title": "Swagger IO-Link Master", + "contact": { "email": "info@io-link.com" }, + "license": + { "name": "tbd", "url": "http://www.io-link.com" }, + ...: "to be continued", } - '403': + "403": description: Forbidden content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '150': + "150": value: code: 150 message: Permission denied - '500': + "500": description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '101': + "101": value: code: 101 message: Internal server error @@ -161,7 +161,7 @@ paths: description: >- This version relates to the released version by the iolink community on github (e.g. https://github.com/iolinkcommunity/JSON_for_IO-Link/releases). It can be extended by vendor specific parts. responses: - '200': + "200": description: Successful operation content: application/json: @@ -175,36 +175,36 @@ paths: additionalInfo: type: string examples: - 'mandatory': + "mandatory": value: version: 1.0.0 - 'optional addition': + "optional addition": value: version: 1.0.0 additionalInfo: 1.2.3-feature-xyz - '403': + "403": description: Forbidden content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '150': + "150": value: code: 150 message: Permission denied - '500': + "500": description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '101': + "101": value: code: 101 message: Internal server error - '/login': + "/login": get: tags: - general @@ -213,7 +213,7 @@ paths: Returns the login status of the user as a boolean value operationId: getUsersLogin responses: - '200': + "200": description: OK content: application/json: @@ -223,10 +223,10 @@ paths: type: boolean userRole: type: string - description: 'Is true in case of a valid user, that is logged in.' + description: "Is true in case of a valid user, that is logged in." example: isLoggedIn: true - userRole: 'Operator' + userRole: "Operator" post: tags: - general @@ -250,10 +250,10 @@ paths: type: string example: username: fred - password: '12345678' + password: "12345678" security: [] responses: - '200': + "200": description: > Successfully authenticated.

The set cookie header is only sent if the server supports HTTP cookies. Otherwise, the session ID @@ -286,14 +286,14 @@ paths: value: userRole: Maintenance - '401': - $ref: '#/components/responses/HTTP_401' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "401": + $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" - '/logout': + "/logout": post: tags: - general @@ -302,20 +302,20 @@ paths: This command does not discern between a logged out or a logged in user. operationId: postUsersLogout responses: - '204': + "204": description: | Successfully logged out. Session-Token is now invalid. - '401': + "401": description: | Session-Token invalid or not found. No action. content: application/json: schema: - $ref: '#/components/schemas/eventObject' + $ref: "#/components/schemas/eventObject" example: code: 141 - message: 'Unknown SESSIONID' - '/specs': + message: "Unknown SESSIONID" + "/specs": get: operationId: GetSpecs tags: @@ -324,7 +324,7 @@ paths: description: >- This command is mandatory. responses: - '200': + "200": description: Successful operation content: application/json: @@ -341,23 +341,23 @@ paths: examples: IO-Link_with_Profinet: value: - - specUri: 'http://www.io-link.com/io-link/10.222/V1.0' - specDesc: 'JSON Integration for IO-Link V1.0' - - specUri: 'http://www.io-link.com/io-link/10.002/V1.13' - specDesc: 'IO-Link Interface and System Specification V1.13' - - specUri: 'http://profibus.com/profinet/2.722/V2.4MU2' - specDesc: 'Application Layer protocol for decentralized periphery - Technical Specification for PROFINET IO' - - specUri: 'http://profibus.com/profinet/2.712/V2.4MU2' - specDesc: 'Application Layer services for decentralized periphery - Technical Specification for PROFINET IO' + - specUri: "http://www.io-link.com/io-link/10.222/V1.0" + specDesc: "JSON Integration for IO-Link V1.0" + - specUri: "http://www.io-link.com/io-link/10.002/V1.13" + specDesc: "IO-Link Interface and System Specification V1.13" + - specUri: "http://profibus.com/profinet/2.722/V2.4MU2" + specDesc: "Application Layer protocol for decentralized periphery - Technical Specification for PROFINET IO" + - specUri: "http://profibus.com/profinet/2.712/V2.4MU2" + specDesc: "Application Layer services for decentralized periphery - Technical Specification for PROFINET IO" IO-Link_Wireless: value: - - specUri: 'http://www.io-link.com/io-link/10.222/V2.0' - specDesc: 'JSON Integration for IO-Link - Draft V2.0' - - specUri: 'http://www.io-link.com/io-link/10.002/V1.13' - specDesc: 'IO-Link Interface and System Specification V1.13' - - specUri: 'http://www.io-link.com/io-link/10.122/V1.1' - specDesc: 'IO-Link Wireless System Extensions V1.1' - '/gateways': + - specUri: "http://www.io-link.com/io-link/10.222/V2.0" + specDesc: "JSON Integration for IO-Link - Draft V2.0" + - specUri: "http://www.io-link.com/io-link/10.002/V1.13" + specDesc: "IO-Link Interface and System Specification V1.13" + - specUri: "http://www.io-link.com/io-link/10.122/V1.1" + specDesc: "IO-Link Wireless System Extensions V1.1" + "/gateways": get: operationId: GetGateways tags: @@ -366,7 +366,7 @@ paths: description: >- This command is optional. responses: - '200': + "200": description: Successful operation content: application/json: @@ -389,25 +389,25 @@ paths: self: value: - gatewayAlias: gateway1 - gatewayUrl: 'http://gateway1' + gatewayUrl: "http://gateway1" multiple: value: - gatewayAlias: gateway1 - gatewayUrl: 'http://gateway1' + gatewayUrl: "http://gateway1" - gatewayAlias: gatewayXYZ - gatewayUrl: 'http://gatewayXYZ' + gatewayUrl: "http://gatewayXYZ" - gatewayAlias: BNI_IOL - gatewayUrl: 'https://BNI_IOL/' + gatewayUrl: "https://BNI_IOL/" - gatewayAlias: master_ABC - gatewayUrl: 'https://192.168.88.191' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' -################################################################################ -# gateway -################################################################################ - '/gateway/identification': + gatewayUrl: "https://192.168.88.191" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + ################################################################################ + # gateway + ################################################################################ + "/gateway/identification": get: operationId: GetGatewayIdentification tags: @@ -415,17 +415,17 @@ paths: summary: Read the identification of the Gateway. description: Read the identification of the Gateway. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayIdentificationGet' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/gateway/capabilities': + $ref: "#/components/schemas/gatewayIdentificationGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/gateway/capabilities": get: operationId: PostGatewayCapabilities tags: @@ -433,17 +433,17 @@ paths: summary: Read the capabilities of the Gateway. description: Read the capabilities of the Gateway. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayCapabilitiesGet' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/gateway/configuration': + $ref: "#/components/schemas/gatewayCapabilitiesGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/gateway/configuration": get: operationId: GetGatewayConfiguration tags: @@ -451,12 +451,12 @@ paths: summary: Read the configuration of the Gateway. description: Read the actual active configuration of the IO-Link Gateway. The Gateway may support multiple IPv4 interfaces responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayConfigurationGetPost' + $ref: "#/components/schemas/gatewayConfigurationGetPost" examples: Manual: value: @@ -487,10 +487,10 @@ paths: ipAddress: 192.168.200.7 subnetMask: 255.255.255.0 standardGateway: 192.168.200.1 - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostGatewayConfiguration tags: @@ -502,7 +502,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/gatewayConfigurationGetPost' + $ref: "#/components/schemas/gatewayConfigurationGetPost" examples: Manual: value: @@ -528,16 +528,16 @@ paths: standardGateway: 192.168.2.1 - ipConfiguration: DHCP responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" - '/gateway/reset': + "/gateway/reset": post: operationId: PostGatewayReset tags: @@ -545,16 +545,16 @@ paths: summary: Reset the Gateway including all Masters. Optional. description: Invoke a reset of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog. responses: - '204': + "204": description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 104 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" - '/gateway/reboot': + "/gateway/reboot": post: operationId: PostGatewayReboot tags: @@ -562,16 +562,16 @@ paths: summary: Reboot the Gateway including all Masters. Optional. description: Invoke a reboot of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog responses: - '204': + "204": description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 104 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" - '/gateway/events': + "/gateway/events": get: operationId: GetGatewayEvents tags: @@ -581,29 +581,29 @@ paths: Each Gateway shall have an Event Log object containing the events of the devices, ports and the masters. The content of the Event Log can be read by getting the object "Gateway Event Log" parameters: - - $ref: '#/components/parameters/eventOrigin' - - $ref: '#/components/parameters/eventMasterNumber' - - $ref: '#/components/parameters/eventPortNumber' - - $ref: '#/components/parameters/eventdeviceAlias' - - $ref: '#/components/parameters/eventTop' - - $ref: '#/components/parameters/eventBottom' + - $ref: "#/components/parameters/eventOrigin" + - $ref: "#/components/parameters/eventMasterNumber" + - $ref: "#/components/parameters/eventPortNumber" + - $ref: "#/components/parameters/eventdeviceAlias" + - $ref: "#/components/parameters/eventTop" + - $ref: "#/components/parameters/eventBottom" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayEventsGet' + $ref: "#/components/schemas/gatewayEventsGet" examples: origin=ALL: value: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 message: text: IO-Link Master has restarted - - time: '2018-05-18T07:32:42.023Z' + - time: "2018-05-18T07:32:42.023Z" severity: ERROR origin: masterNumber: 1 @@ -612,7 +612,7 @@ paths: code: 6163 mode: APPEARS text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 @@ -624,7 +624,7 @@ paths: text: Device temperature over-run – Clear source of heat origin=MASTERS: value: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 @@ -632,7 +632,7 @@ paths: text: IO-Link Master has restarted origin=PORTS: value: - - time: '2018-05-18T07:32:42.023Z' + - time: "2018-05-18T07:32:42.023Z" severity: ERROR origin: masterNumber: 1 @@ -641,7 +641,7 @@ paths: code: 6163 mode: APPEARS text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:33:42.023Z' + - time: "2018-05-18T07:33:42.023Z" severity: ERROR origin: masterNumber: 1 @@ -650,7 +650,7 @@ paths: code: 6163 mode: DISAPPEARS text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:35:54.123Z' + - time: "2018-05-18T07:35:54.123Z" severity: NOTICE origin: masterNumber: 1 @@ -661,7 +661,7 @@ paths: text: New slave origin=DEVICES: value: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 @@ -671,7 +671,7 @@ paths: code: 16912 mode: APPEARS text: Device temperature over-run – Clear source of heat - - time: '2018-05-18T08:31:54.123Z' + - time: "2018-05-18T08:31:54.123Z" severity: ERROR origin: masterNumber: 1 @@ -681,12 +681,12 @@ paths: code: 20480 mode: APPEARS text: Device hardware fault – Device exchange - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" delete: operationId: DeleteGatewayEvents tags: @@ -694,27 +694,27 @@ paths: summary: Delete events of Gateway, Masters, Ports and Devices from EventLog according to filter query. description: Delete events of Gateway, Masters, Ports and Devices from EventLog according to filter query. parameters: - - $ref: '#/components/parameters/eventOrigin' - - $ref: '#/components/parameters/eventMasterNumber' - - $ref: '#/components/parameters/eventPortNumber' - - $ref: '#/components/parameters/eventdeviceAlias' - - $ref: '#/components/parameters/eventTop' - - $ref: '#/components/parameters/eventBottom' + - $ref: "#/components/parameters/eventOrigin" + - $ref: "#/components/parameters/eventMasterNumber" + - $ref: "#/components/parameters/eventPortNumber" + - $ref: "#/components/parameters/eventdeviceAlias" + - $ref: "#/components/parameters/eventTop" + - $ref: "#/components/parameters/eventBottom" responses: - '200': + "200": description: Successful operation - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" -################################################################################ -# mqtt -################################################################################ + ################################################################################ + # mqtt + ################################################################################ - '/mqtt/configuration': + "/mqtt/configuration": get: operationId: GetMqttConfiguration tags: @@ -723,19 +723,19 @@ paths: Read the MQTT configuration of the Gateway. description: Read the MQTT configuration of the Gateway. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationGetPost' + $ref: "#/components/schemas/mqttConfigurationGetPost" examples: Active client: value: - clientMode: 'ACTIVE' + clientMode: "ACTIVE" serverAddress: 192.168.2.1:1883/mqttbroker username: iolink_json - password: '1234' + password: "1234" lastwill: topic: process_data message: Process data transfer stopped. @@ -744,15 +744,15 @@ paths: keepAliveTime: 10 Inactive client: value: - clientMode: 'INACTIVE' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + clientMode: "INACTIVE" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostMqttConfiguration @@ -766,14 +766,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationGetPost' + $ref: "#/components/schemas/mqttConfigurationGetPost" examples: Active Client: value: clientMode: ACTIVE serverAddress: 192.168.2.1:1883/mqttbroker username: iolink_json - password: '1234' + password: "1234" lastwill: topic: process_data message: Process data transfer stopped. @@ -784,18 +784,18 @@ paths: value: clientMode: INACTIVE responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" - '/mqtt/topics': + "/mqtt/topics": get: operationId: GetMqttTopics tags: @@ -803,14 +803,14 @@ paths: summary: Get the list of MQTT topics. description: Get the list of MQTT topics. responses: - '200': + "200": description: Successful operation content: application/json: schema: type: array items: - $ref: '#/components/schemas/mqttConfigurationTopicGet' + $ref: "#/components/schemas/mqttConfigurationTopicGet" example: - topicId: 1 topicName: Sensor34/processData @@ -854,14 +854,14 @@ paths: interval: value: 10 unit: ms - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostMqttTopicsTopicId tags: @@ -873,7 +873,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationTopicPost' + $ref: "#/components/schemas/mqttConfigurationTopicPost" examples: Process Data: value: @@ -912,23 +912,23 @@ paths: value: 1000 unit: ms responses: - '200': + "200": description: Successful operation returning the topic ID content: application/json: schema: type: integer - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/mqtt/topics/{topicId}': + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + "/mqtt/topics/{topicId}": get: operationId: GetMqttTopicsTopicId tags: @@ -936,14 +936,14 @@ paths: summary: Get one MQTT topic. description: Get one MQTT topic. parameters: - - $ref: '#/components/parameters/mqttTopicId' + - $ref: "#/components/parameters/mqttTopicId" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationTopicGet' + $ref: "#/components/schemas/mqttConfigurationTopicGet" examples: Process Data: value: @@ -988,14 +988,14 @@ paths: interval: value: 1000 unit: ms - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" delete: operationId: DeleteMqttTopicsTopicId tags: @@ -1003,21 +1003,21 @@ paths: summary: Delete a specific MQTT topic. description: Delete a specific MQTT topic. parameters: - - $ref: '#/components/parameters/mqttTopicId' + - $ref: "#/components/parameters/mqttTopicId" responses: - '204': + "204": description: Successful operation - '400': # code 104 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/mqtt/connectionstatus': + "400": # code 104 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + "/mqtt/connectionstatus": get: operationId: GetMqttConnectionstatus tags: @@ -1025,25 +1025,25 @@ paths: summary: Read the connection status of the MQTT client to the MQTT server. description: Read the connection status of the MQTT client to the MQTT server. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mqttConnectionStatusGet' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - -################################################################################ -# iodds -################################################################################ - '/iodds': + $ref: "#/components/schemas/mqttConnectionStatusGet" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + ################################################################################ + # iodds + ################################################################################ + "/iodds": get: operationId: GetIodds tags: @@ -1054,26 +1054,26 @@ paths: Only one version of an IODD is stored on the webserver at the same time for one vendorId-deviceId-ioLinkRevision-combination. parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' + - $ref: "#/components/parameters/vendorId" + - $ref: "#/components/parameters/deviceId" + - $ref: "#/components/parameters/revision" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/ioddsGet' - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + $ref: "#/components/schemas/ioddsGet" + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" delete: operationId: DeleteIodds tags: @@ -1081,23 +1081,23 @@ paths: summary: Delete a specific IODD representation. description: Delete a specific IODD representation. parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' + - $ref: "#/components/parameters/vendorId" + - $ref: "#/components/parameters/deviceId" + - $ref: "#/components/parameters/revision" responses: - '204': + "204": description: Successful operation - '400': # code 104, 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - '/iodds/file': + "400": # code 104, 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + "/iodds/file": get: operationId: GetIoddsFile tags: @@ -1105,27 +1105,27 @@ paths: summary: Get a specific IODD. Optional. description: All query parameters are mandatory. parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' + - $ref: "#/components/parameters/vendorId" + - $ref: "#/components/parameters/deviceId" + - $ref: "#/components/parameters/revision" responses: - '200': + "200": description: Successful operation content: application/xml: schema: - $ref: '#/components/schemas/ioddFile' - example: 'IODD XML file' - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + $ref: "#/components/schemas/ioddFile" + example: "IODD XML file" + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostIoddsFile tags: @@ -1139,26 +1139,26 @@ paths: content: application/xml: schema: - $ref: '#/components/schemas/ioddFile' - example: 'IODD XML file' + $ref: "#/components/schemas/ioddFile" + example: "IODD XML file" responses: - '204': + "204": description: Successful operation - '400': # code 104, 208, 603, 604, 605 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': # code 101, 602 - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' - -################################################################################ -# masters -################################################################################ - '/masters': + "400": # code 104, 208, 603, 604, 605 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": # code 101, 602 + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + ################################################################################ + # masters + ################################################################################ + "/masters": get: operationId: GetMasters tags: @@ -1168,17 +1168,17 @@ paths: identification information. description: Read all the available masterNumber keys with the corresponding identification information. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/identificationMasters' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/capabilities': + $ref: "#/components/schemas/identificationMasters" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/capabilities": get: operationId: GetMastersMasterNumberCapabilities tags: @@ -1186,31 +1186,31 @@ paths: summary: Read the capabilities of the Master. description: Read the capabilities of the Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/masterCapabilitiesGet' + $ref: "#/components/schemas/masterCapabilitiesGet" examples: IO-Link: value: numberOfPorts: 8 maxPowerSupply: # max power supply per port value: 0.3 - unit: A + unit: A IO-Link_Wireless: value: numberOfPorts: 40 - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/identification': + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/identification": get: operationId: GetMastersMasterNumberIdentification tags: @@ -1218,57 +1218,57 @@ paths: summary: Read the identification of the Master. description: Read the identification of the Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/masterIdentificationGet' + $ref: "#/components/schemas/masterIdentificationGet" examples: - IO-Link: - value: - vendorName: Vendor GmbH - vendorId: 26 - masterId: 42 - masterType: Master acc. V1.0 - serialNumber: IOLM123456 - orderCode: PROD-123456 - productName: IO-Link Master - productId: PROD-123456 - hardwareRevision: "3.2.1.444R" - firmwareRevision: "3.2.1.888R" - vendorUrl: 'http://www.io-link.com/io-link-master' - manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' - applicationSpecificTag: End of the belt - locationTag: Down under - functionTag: Code reading - IO-Link_Wireless: - value: - vendorName: Vendor GmbH - vendorId: 01 - masterId: 22 - masterType: Wireless_Master - serialNumber: IOLWM123456 - orderCode: PROD6789 - productName: IO-Link Wireless Master - productId: PROD6789 - hardwareRevision: "1" - firmwareRevision: "2.0.0" - vendorUrl: 'http://www.io-link.com' - productInstanceUri: 'http://www.io-link.com/PROD123456/IOLWM123456' - descriptionFileUri: 'https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml' - manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' - applicationSpecificTag: "***" - locationTag: "***" - functionTag: "***" - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + IO-Link: + value: + vendorName: Vendor GmbH + vendorId: 26 + masterId: 42 + masterType: Master acc. V1.0 + serialNumber: IOLM123456 + orderCode: PROD-123456 + productName: IO-Link Master + productId: PROD-123456 + hardwareRevision: "3.2.1.444R" + firmwareRevision: "3.2.1.888R" + vendorUrl: "http://www.io-link.com/io-link-master" + manualUrl: "http://www.io-link.com/io-link-master/documentation.pdf" + applicationSpecificTag: End of the belt + locationTag: Down under + functionTag: Code reading + IO-Link_Wireless: + value: + vendorName: Vendor GmbH + vendorId: 01 + masterId: 22 + masterType: Wireless_Master + serialNumber: IOLWM123456 + orderCode: PROD6789 + productName: IO-Link Wireless Master + productId: PROD6789 + hardwareRevision: "1" + firmwareRevision: "2.0.0" + vendorUrl: "http://www.io-link.com" + productInstanceUri: "http://www.io-link.com/PROD123456/IOLWM123456" + descriptionFileUri: "https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml" + manualUrl: "http://www.io-link.com/io-link-master/documentation.pdf" + applicationSpecificTag: "***" + locationTag: "***" + functionTag: "***" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostMastersMasterNumberIdentification tags: @@ -1276,13 +1276,13 @@ paths: summary: Write application specific identification to a Master. description: Write application specific identification to a Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/masterIdentificationPost' + $ref: "#/components/schemas/masterIdentificationPost" examples: All optional fiels: value: @@ -1290,18 +1290,18 @@ paths: locationTag: Down under functionTag: Code reading responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 206, 208 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/configuration': #TODO: wireles + "400": # code 104, 201, 202, 203, 206, 208 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/configuration": #TODO: wireles get: operationId: GetMastersMasterNumberConfiguration tags: @@ -1309,14 +1309,14 @@ paths: summary: Read the actual configuration of the specified Master. description: Read the actual configuration of the specified Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersConfigurationGetPost' + $ref: "#/components/schemas/mastersConfigurationGetPost" examples: IO-Link: value: @@ -1325,13 +1325,13 @@ paths: masterId: 5 advancedConnectivity: "ahtEnable": false - pairingTimeout: + pairingTimeout: value: 25 unit: s serviceTrackNumber: 1 serviceTrackMode: CYCLIC trackTxPower: - "track_1": 31 + "track_1": 31 "track_2": 31 "track_3": 31 "track_4": 0 @@ -1414,10 +1414,10 @@ paths: "2476": false "2477": false "2478": false - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostMastersMasterNumberConfiguration tags: @@ -1425,13 +1425,13 @@ paths: summary: Write the configuration of the specified Master. description: Write the configuration of the specified Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/mastersConfigurationGetPost' + $ref: "#/components/schemas/mastersConfigurationGetPost" examples: IO-Link: value: @@ -1440,13 +1440,13 @@ paths: masterId: 5 advancedConnectivity: "ahtEnable": false - pairingTimeout: + pairingTimeout: value: 25 unit: s serviceTrackNumber: 1 serviceTrackMode: CYCLIC trackTxPower: - "track_1": 31 + "track_1": 31 "track_2": 31 "track_3": 31 "track_4": 0 @@ -1530,43 +1530,43 @@ paths: "2477": false "2478": false responses: - '204': + "204": description: Successful operation - '400': + "400": description: Bad request content: application/json: examples: - '104': + "104": value: code: 104 message: Action locked by another client - '201': + "201": value: code: 201 message: JSON parsing failed - '202': + "202": value: code: 202 message: JSON data value invalid - '203': + "203": value: code: 203 message: JSON data type invalid - '206': + "206": value: code: 206 message: JSON data value out of bounds - '208': + "208": value: code: 208 message: POST request without content - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/trackstatus': #TODO: wireles + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/trackstatus": #TODO: wireles get: operationId: GetMastersMasterNumberTrackstatus tags: @@ -1574,20 +1574,20 @@ paths: summary: Read the actual Track status of the specified Wireless-Master. description: Read the actual Track status of the specified Wireless-Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersTrackstatusGet' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/scan': #TODO: wireles + $ref: "#/components/schemas/mastersTrackstatusGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/scan": #TODO: wireles get: operationId: GetMastersMasterNumberScan tags: @@ -1595,18 +1595,18 @@ paths: summary: Read the actual scan results of the specified Wireless-Master. description: Read the actual scan results of the specified Wireless-Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersScanGet' - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' + $ref: "#/components/schemas/mastersScanGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostMastersMasterNumberScan tags: @@ -1614,34 +1614,34 @@ paths: summary: To start a scan of the specified Wireless-Master. description: To start a scan of the specified Wireless-Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/mastersScanPost' + $ref: "#/components/schemas/mastersScanPost" responses: - '204': + "204": description: Successful operation - '400': + "400": description: Bad request content: application/json: examples: - '104': + "104": value: code: 104 message: Action locked by another client - '201': + "201": value: code: 201 message: JSON parsing failed - '202': + "202": value: code: 202 message: JSON data value invalid - '203': + "203": value: code: 203 message: JSON data type invalid @@ -1653,16 +1653,15 @@ paths: value: code: 208 message: POST request without content - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" -################################################################################ -# ports -################################################################################ - '/masters/{masterNumber}/ports': + ################################################################################ + # ports + ################################################################################ + "/masters/{masterNumber}/ports": get: operationId: GetMastersMasterNumberPorts tags: @@ -1670,14 +1669,14 @@ paths: summary: Read all the available portNumber keys with the corresponding identification information. description: Read all the available portNumber keys with the corresponding identification information. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersPortsGet' + $ref: "#/components/schemas/mastersPortsGet" examples: IO-Link: value: @@ -1701,41 +1700,41 @@ paths: deviceInfo: vendorId: 888 deviceId: 10485760 - productName: "BNI IOW-302-W01-K080" + productName: "BNI IOW-302-W01-K080" - portNumber: 4 statusInfo: "DEACTIVATED" deviceAlias: "Empty_port" - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/ports/qualityall': + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/qualityall": get: operationId: GetMastersMasterNumberPortsQuality tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" summary: Read the link quality and the RSSI of all used Wireless-Ports (Wireless-Device and Wireless-Master). description: Read the link quality and the RSSI of all used Wireless-Ports (Wireless-Device and Wireless-Master). responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersPortsQualityallGet' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/ports/{portNumber}/capabilities': + $ref: "#/components/schemas/mastersPortsQualityallGet" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/{portNumber}/capabilities": get: operationId: GetMastersMasterNumberPortsPortNumberCapabilities tags: @@ -1743,15 +1742,15 @@ paths: summary: Read the capability information of the specified port. description: Read the capability information of the specified port. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/portCapabilitiesGet' + $ref: "#/components/schemas/portCapabilitiesGet" examples: CLASS_A: value: @@ -1764,7 +1763,7 @@ paths: maxPowerSupply: value: 2.0 unit: A - portType: CLASS_B + portType: CLASS_B CLASS_A_WITH_PORT_POWER_OFF_ON: value: maxPowerSupply: @@ -1782,24 +1781,24 @@ paths: maxPowerSupply: value: 0.2 unit: A - portType: FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS + portType: FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS FAILSAFE_PORT_B: value: maxPowerSupply: value: 2.0 unit: A - portType: FAILSAFE_PORT_B + portType: FAILSAFE_PORT_B IO-Link_Wireless: value: portType: WIRELESS_MASTER - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/ports/{portNumber}/status': + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/{portNumber}/status": get: operationId: GetMastersMasterNumberPortsPortNumberStatus tags: @@ -1807,20 +1806,20 @@ paths: summary: Read the actual status of the selected port. description: Read the actual status of the selected port. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersPortsStatusGet' + $ref: "#/components/schemas/mastersPortsStatusGet" examples: IO-Link: value: statusInfo: "DEVICE_ONLINE" - ioLinkRevision: "1.1" + ioLinkRevision: "1.1" transmissionRate: COM2 masterCycleTime: value: 2.3 @@ -1828,10 +1827,10 @@ paths: IO-Link_Wireless: value: statusInfo: DEVICE_ONLINE - portQualityInfo: + portQualityInfo: pdInValid: true pdOutValid: true - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" inputDataLength: 2 outputDataLength: 2 vendorId: 888 @@ -1840,29 +1839,29 @@ paths: base: FreeRunning wMasterCycleTimeIn: base: FreeRunning - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/ports/{portNumber}/configuration': + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/ports/{portNumber}/configuration": get: operationId: GetMastersMasterNumberPortsPortNumberConfiguration tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Read the actual configuration of the specified port. description: Read the actual configuration of the specified port. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/portConfigurationGet' + $ref: "#/components/schemas/portConfigurationGet" examples: IO-Link: value: @@ -1884,7 +1883,7 @@ paths: deviceId: 1 slotNumber: 1 trackNumber: 5 - deviceTxPower: 31 + deviceTxPower: 31 maxRetry: 20 imaTime: base: 1664us @@ -1898,12 +1897,12 @@ paths: base: FreeRunning uniqueId: 03:78:00:00:01:32:50:60:46 deviceAlias: Port_X01 - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostMastersMasterNumberPortsPortNumberConfiguration tags: @@ -1911,14 +1910,14 @@ paths: summary: Write the configuration of the specified port. description: Write the configuration of the specified port. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/portConfigurationPost' + $ref: "#/components/schemas/portConfigurationPost" examples: Complete configuration: value: @@ -1948,7 +1947,7 @@ paths: deviceId: 1 slotNumber: 1 trackNumber: 5 - deviceTxPower: 31 + deviceTxPower: 31 maxRetry: 20 imaTime: base: 1664us @@ -1963,60 +1962,60 @@ paths: uniqueId: 03:78:00:00:01:32:50:60:46 deviceAlias: Port_X01 responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/masters/{masterNumber}/ports/{portNumber}/datastorage': + "400": # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/ports/{portNumber}/datastorage": get: operationId: GetMastersMasterNumberPortsPortNumberDatastorages tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Read the Data Storage content of a specific port. description: Read the Data Storage content of a specific port. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/dataStorageGetPost' + $ref: "#/components/schemas/dataStorageGetPost" examples: Data Storage with valid content: value: header: vendorId: 15 deviceId: 65253 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" parameterChecksum: 123456 content: >- TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl Empty Data Storage: value: header: {} - content: '' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + content: "" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostMastersMasterNumberPortsPortNumberDatastorages tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Write the Data Storage content to a specific port. description: Write the Data Storage content to a specific port. requestBody: @@ -2024,33 +2023,33 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/dataStorageGetPost' + $ref: "#/components/schemas/dataStorageGetPost" examples: Data Storage with valid content: value: header: vendorId: 15 deviceId: 65253 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" content: >- TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl Empty Data Storage: value: header: {} - content: '' + content: "" responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" - '/masters/{masterNumber}/ports/{portNumber}/pairing': + "/masters/{masterNumber}/ports/{portNumber}/pairing": post: operationId: PostMastersMasterNumberPortsPortNumberPairing tags: @@ -2058,55 +2057,54 @@ paths: summary: To pair a Wireless-Device with the specified Wireless-Port. description: To pair a Wireless-Device with the specified Wireless-Port. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/mastersPortsPairingPost' + $ref: "#/components/schemas/mastersPortsPairingPost" responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - '/masters/{masterNumber}/ports/{portNumber}/quality': + "400": # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/{portNumber}/quality": get: operationId: GetMastersMasterNumberPortsPortNumberQuality tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Read the link quality and the RSSI of the specified Wireless-Port (Wireless-Device and Wireless-Master). description: Read the link quality and the RSSI of the specified Wireless-Port (Wireless-Device and Wireless-Master). responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mastersPortsQualityGet' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - - -################################################################################ -# devices -################################################################################ - '/devices': + $ref: "#/components/schemas/mastersPortsQualityGet" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + ################################################################################ + # devices + ################################################################################ + "/devices": get: operationId: GetDevices tags: @@ -2114,7 +2112,7 @@ paths: summary: Get all available deviceAlias keys and the location by Master number and Port number. description: Get all available deviceAlias keys and the location by Master number and Port number. responses: - '200': + "200": description: Successful operation content: application/json: @@ -2150,11 +2148,11 @@ paths: - deviceAlias: master1port4 masterNumber: 1 portNumber: 4 - '403': - $ref: '#/components/responses/HTTP_403' - '500': - $ref: '#/components/responses/HTTP_500' - '/devices/{deviceAlias}/capabilities': + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/devices/{deviceAlias}/capabilities": get: operationId: GetDevicesDeviceAliasCapabilities tags: @@ -2162,28 +2160,28 @@ paths: summary: Read the capabilities from the specific Device. description: Read the capabilities from the specific Device. parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" responses: - '200': + "200": description: Successful opearation content: application/json: schema: - $ref: '#/components/schemas/deviceCapabilitiesGet' + $ref: "#/components/schemas/deviceCapabilitiesGet" example: minimumCycleTime: value: 2.3 unit: ms supportedProfiles: [10, 32770] - '400': # code 307 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/devices/{deviceAlias}/identification': + "400": # code 307 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/devices/{deviceAlias}/identification": get: operationId: GetDevicesDeviceAliasidentification tags: @@ -2194,22 +2192,22 @@ paths: applicationSpecificTag, locationTag and functionTag (if they are supported by the device). parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceIdentificationGet' - '400': # code 307 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' + $ref: "#/components/schemas/deviceIdentificationGet" + "400": # code 307 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: operationId: PostDevicesDeviceAliasidentification tags: @@ -2217,13 +2215,13 @@ paths: summary: Write application specific identification to the Device. description: Write application specific identification to the Device. parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/portIdentificationPost' + $ref: "#/components/schemas/portIdentificationPost" examples: All optional fields: value: @@ -2231,17 +2229,17 @@ paths: locationTag: Down under functionTag: Check start of belt responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 206, 208, 307 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '/devices/{deviceAlias}/processdata/value': + "400": # code 104, 201, 202, 203, 206, 208, 307 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/devices/{deviceAlias}/processdata/value": get: operationId: GetDevicesDeviceAliasProcessData tags: @@ -2249,17 +2247,17 @@ paths: summary: Read the process data values (input and output) from the specified Device. description: Read the process data values (input and output) from the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceProcessDataValueGet' + $ref: "#/components/schemas/deviceProcessDataValueGet" examples: - ? 'Format=byteArray, CQ in IO-Link (only input), IQ in digital output' + ? "Format=byteArray, CQ in IO-Link (only input), IQ in digital output" : value: getData: ioLink: @@ -2270,7 +2268,7 @@ paths: - 216 setData: iqValue: true - ? 'Format=iodd, CQ in IO-Link (input and output), IQ in digital input' + ? "Format=iodd, CQ in IO-Link (input and output), IQ in digital input" : value: getData: ioLink: @@ -2278,7 +2276,7 @@ paths: value: Distance: value: 55 - unit: 'cm' + unit: "cm" Quality: value: 12 iqValue: true @@ -2288,16 +2286,16 @@ paths: value: Buzzer: value: 5 - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasProcessData tags: @@ -2305,15 +2303,15 @@ paths: summary: Write the process data output values to the specified Device. description: Write the process data output values to the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceProcessDataValuePost' + $ref: "#/components/schemas/deviceProcessDataValuePost" examples: - ? 'format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output' + ? "format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output" : value: ioLink: valid: true @@ -2323,7 +2321,7 @@ paths: - 126 - 236 iqValue: true - 'format=iodd, CQ (pin4) in IO-Link, IQ (pin2) not available': + "format=iodd, CQ (pin4) in IO-Link, IQ (pin2) not available": value: iolink: valid: true @@ -2333,20 +2331,20 @@ paths: Valve_2: value: false responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/processdata/getdata/value': + "/devices/{deviceAlias}/processdata/getdata/value": get: operationId: GetDevicesDeviceAliasProcessDataGetData tags: @@ -2355,17 +2353,17 @@ paths: Read the process data input values from the specified Device. description: Read the process data input values from the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" examples: - ? 'Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input' + ? "Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input" : value: ioLink: valid: true @@ -2374,29 +2372,29 @@ paths: - 22 - 216 iqValue: true - 'Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input': + "Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input": value: ioLink: valid: true value: Distance: value: 55 - unit: 'cm' + unit: "cm" Quality: value: 12 iqValue: true - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/processdata/setdata/value': + "/devices/{deviceAlias}/processdata/setdata/value": get: operationId: GetDevicesDeviceAliasProcessDataSetData tags: @@ -2405,20 +2403,20 @@ paths: Read the process data output values from the specified Device. description: Read the process data output values from the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" examples: - ? 'Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input' + ? "Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input" : value: cqValue: false - 'Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input': + "Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input": value: iolink: valid: true @@ -2427,18 +2425,18 @@ paths: value: true Valve_2: value: false - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters': + "/devices/{deviceAlias}/parameters": get: operationId: GetDevicesDeviceAliasParameters tags: @@ -2448,26 +2446,26 @@ paths: IODD support is required. description: Read all available parameter indices and parameter names from the specific Device. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParametersGet' - '400': # code 305, 306, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + $ref: "#/components/schemas/deviceParametersGet" + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters/{index}/value': + "/devices/{deviceAlias}/parameters/{index}/value": get: operationId: GetDevicesDeviceAliasParametersIndexValue tags: @@ -2475,16 +2473,16 @@ paths: summary: Read a parameter value from the specific Device with the given index. description: Read a parameter value from the specific Device with the given index. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: format=byteArray: value: @@ -2493,28 +2491,28 @@ paths: - 156 - 125 - 25 - 'format=iodd, simple type': + "format=iodd, simple type": value: value: 15.2 - unit: 'cm' - 'format=iodd, complex type': + unit: "cm" + "format=iodd, complex type": value: value: Distance: value: 15 - unit: 'cm' + unit: "cm" Quality: value: 12 - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasParametersIndexValue @@ -2523,49 +2521,49 @@ paths: summary: Write a parameter value with the given index to the specified Device. description: Write a parameter value with the given index to the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: - 'payload as byteArray': + "payload as byteArray": value: value: - 0 - 156 - 125 - 25 - 'payload as iodd, simple type': + "payload as iodd, simple type": value: value: 15.2 - unit: 'cm' - 'payload as iodd, complex type': + unit: "cm" + "payload as iodd, complex type": value: value: Distance: value: 15 - unit: 'cm' + unit: "cm" Quality: value: 12 responses: - '204': + "204": description: Successful operation - '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters/{parameterName}/value': + "/devices/{deviceAlias}/parameters/{parameterName}/value": get: operationId: GetDevicesDeviceAliasParametersValue tags: @@ -2575,42 +2573,42 @@ paths: IODD support is required. description: Read a parameter value from the specific Device by parameter name. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: format=byteArray: - value: { 'value': [0, 156, 125, 25] } - 'format=iodd, simple type': + value: { "value": [0, 156, 125, 25] } + "format=iodd, simple type": value: value: 15.2 - unit: 'cm' - 'format=iodd, complex type': + unit: "cm" + "format=iodd, complex type": value: value: Distance: value: 15 - unit: 'cm' + unit: "cm" Quality: value: 12 - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasParametersValue tags: @@ -2620,44 +2618,44 @@ paths: IODD support is required. description: Write a parameter value by name to the specified Device.IODD support is required. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: format=byteArray: - value: { 'value': [0, 156, 125, 25] } - 'format=iodd, simple type': + value: { "value": [0, 156, 125, 25] } + "format=iodd, simple type": value: value: 15.2 - unit: 'cm' - 'format=iodd, complex type': + unit: "cm" + "format=iodd, complex type": value: value: Distance: value: 15 - unit: 'cm' + unit: "cm" Quality: value: 12 responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters/{index}/subindices': + "/devices/{deviceAlias}/parameters/{index}/subindices": get: operationId: GetDevicesDeviceAliasParametersIndexSubindices tags: @@ -2667,27 +2665,27 @@ paths: IODD support is required. description: Read all available parameter sub-indices and sub-parameter names from the specific Device. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceSubParametersGet' - '400': # code 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + $ref: "#/components/schemas/deviceSubParametersGet" + "400": # code 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters/{parameterName}/subindices': + "/devices/{deviceAlias}/parameters/{parameterName}/subindices": get: operationId: GetDevicesDeviceAliasParametersSubindices tags: @@ -2697,27 +2695,27 @@ paths: IODD support is required. description: Read all available parameter sub-indices and sub-parameter names from the specific Device (referenced by parameter name). IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceSubParametersGet' - '400': # code 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + $ref: "#/components/schemas/deviceSubParametersGet" + "400": # code 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value': + "/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value": get: operationId: GetDevicesDeviceAliasParametersSubindicesSubindexValue tags: @@ -2726,17 +2724,17 @@ paths: Read a parameter value from the specific Device with the given index and subindex. description: Read a parameter value from the specific Device with the given index and subindex. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/subindex' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/subindex" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: value: @@ -2750,17 +2748,17 @@ paths: value: Distance: value: 15.2 - unit: 'cm' - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + unit: "cm" + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasParametersSubindicesSubindexValue tags: @@ -2769,37 +2767,37 @@ paths: Write the parameter with the given index and subindex. description: Write the parameter with the given index and subindex. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/subindex' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/subindex" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: - value: { 'value': [0, 156, 125, 25] } + value: { "value": [0, 156, 125, 25] } format=iodd: value: value: 15.2 - unit: 'cm' + unit: "cm" responses: - '204': + "204": description: Successful operation - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - ? '/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value' + ? "/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value" : get: operationId: GetDevicesDeviceAliasParametersSubindicesValue tags: @@ -2809,35 +2807,35 @@ paths: IODD support is required. description: Read a parameter value from the specific Device by parameter name and subname. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/subParameterName' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" + - $ref: "#/components/parameters/subParameterName" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: - value: { 'value': [0, 156, 125, 25] } + value: { "value": [0, 156, 125, 25] } format=iodd: value: value: 15.2 - unit: 'cm' + unit: "cm" - '400': # code 305, 306, 307, 311, 601 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasParametersSubindicesValue tags: @@ -2847,37 +2845,37 @@ paths: IODD support is required. description: Write a parameter value to the specific Device by the parameter name and subname. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/subParameterName' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" + - $ref: "#/components/parameters/subParameterName" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: - value: { 'value': [0, 156, 125, 25] } + value: { "value": [0, 156, 125, 25] } format=iodd: value: value: 15.2 - unit: 'cm' + unit: "cm" responses: - '204': + "204": description: Successful operation - '400': # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/blockparameterization': + "/devices/{deviceAlias}/blockparameterization": post: operationId: PostDevicesDeviceAliasBlockparameterization tags: @@ -2886,16 +2884,16 @@ paths: Write or read one or more parameters using the block parameterization method. description: Write or read one or more parameters using the block parameterization method. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceBlockParameterizationPost' + $ref: "#/components/schemas/deviceBlockParameterizationPost" examples: - 'read, format=byteArray': + "read, format=byteArray": value: direction: READ parameters: @@ -2904,7 +2902,7 @@ paths: - identifier: index: 65 subIndex: 2 - 'read, format=iodd': + "read, format=iodd": value: direction: READ parameters: @@ -2913,7 +2911,7 @@ paths: - identifier: parameterName: Distance subParameterName: Quality - 'write, format=byteArray': + "write, format=byteArray": value: direction: WRITE parameters: @@ -2932,28 +2930,28 @@ paths: - 23 - 149 - 206 - 'write, format=iodd': + "write, format=iodd": value: direction: WRITE parameters: - identifier: parameterName: Application_tag content: - value: 'Level 2, row 3' + value: "Level 2, row 3" - identifier: parameterName: Hysteresis subParameterName: Channel_B content: value: 123 responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceBlockParameterizationPostParametersAnswer' + $ref: "#/components/schemas/deviceBlockParameterizationPostParametersAnswer" examples: - 'read, format=byteArray': + "read, format=byteArray": value: - identifier: index: 123 @@ -2974,14 +2972,14 @@ paths: - 23 - 149 - 206 - 'read, format=iodd': + "read, format=iodd": value: - identifier: parameterName: Application_tag result: parameterExchangeResult: READ_SUCCESS content: - value: 'Level 2, row 3' + value: "Level 2, row 3" - identifier: parameterName: Hysteresis subParameterName: Channel_B @@ -2989,7 +2987,7 @@ paths: parameterExchangeResult: READ_SUCCESS content: value: 123 - 'read, format=byteArray with error': + "read, format=byteArray with error": value: - identifier: index: 123 @@ -3005,7 +3003,7 @@ paths: iolinkError: code: 32803 message: Access denied - 'write, format=byteArray': + "write, format=byteArray": value: - identifier: index: 123 @@ -3015,7 +3013,7 @@ paths: index: 233 result: parameterExchangeResult: WRITE_SUCCESS - 'write, format=iodd': + "write, format=iodd": value: - identifier: parameterName: Application_tag @@ -3026,7 +3024,7 @@ paths: subParameterName: Channel_B result: parameterExchangeResult: WRITE_SUCCESS - 'write, format=byteArray, with error': + "write, format=byteArray, with error": value: - identifier: index: 123 @@ -3042,46 +3040,46 @@ paths: iolinkError: code: 32817 message: Parameter value above limit - '400': # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - '501': - $ref: '#/components/responses/HTTP_501' + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '/devices/{deviceAlias}/events': + "/devices/{deviceAlias}/events": get: operationId: GetDevicesDeviceAliasEvents tags: - devices parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/eventTop' - - $ref: '#/components/parameters/eventBottom' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/eventTop" + - $ref: "#/components/parameters/eventBottom" summary: Reading the EventLog filtered for a specific Device. description: Reading the EventLog filtered for a specific Device. responses: - '200': + "200": description: >- Successful operation. In case of empty event log, an empty array is returned. content: application/json: schema: - $ref: '#/components/schemas/deviceEventsGet' - '400': # code 305, 306 - $ref: '#/components/responses/HTTP_400' - '403': - $ref: '#/components/responses/HTTP_403' - '404': - $ref: '#/components/responses/HTTP_404' - '500': - $ref: '#/components/responses/HTTP_500' - + $ref: "#/components/schemas/deviceEventsGet" + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + components: schemas: cycleTime: @@ -3114,16 +3112,16 @@ components: - format properties: direction: - $ref: '#/components/schemas/content' + $ref: "#/components/schemas/content" format: - $ref: '#/components/schemas/format' + $ref: "#/components/schemas/format" oneOf: - type: object required: - interval properties: interval: - $ref: '#/components/schemas/cycleTime' + $ref: "#/components/schemas/cycleTime" - type: object required: - onChange @@ -3149,16 +3147,16 @@ components: - format properties: parameter: - $ref: '#/components/schemas/parameter' + $ref: "#/components/schemas/parameter" format: - $ref: '#/components/schemas/format' + $ref: "#/components/schemas/format" oneOf: - type: object required: - interval properties: interval: - $ref: '#/components/schemas/cycleTime' + $ref: "#/components/schemas/cycleTime" - type: object required: - onChange @@ -3437,13 +3435,13 @@ components: - message properties: time: - $ref: '#/components/schemas/eventTime' + $ref: "#/components/schemas/eventTime" severity: - $ref: '#/components/schemas/eventSeverity' + $ref: "#/components/schemas/eventSeverity" origin: - $ref: '#/components/schemas/eventOriginObject' + $ref: "#/components/schemas/eventOriginObject" message: - $ref: '#/components/schemas/eventObject' + $ref: "#/components/schemas/eventObject" blockParameterizationPostParametersRequest: type: array minItems: 1 @@ -3479,7 +3477,7 @@ components: minLength: 1 maxLength: 71 content: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" deviceBlockParameterizationPostParametersAnswer: type: array items: @@ -3526,9 +3524,9 @@ components: - READ_SUCCESS - ERROR content: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" iolinkError: - $ref: '#/components/schemas/iolinkErrorObject' + $ref: "#/components/schemas/iolinkErrorObject" deviceEventsGet: type: array items: @@ -3540,24 +3538,24 @@ components: - message properties: time: - $ref: '#/components/schemas/eventTime' + $ref: "#/components/schemas/eventTime" severity: - $ref: '#/components/schemas/eventSeverity' + $ref: "#/components/schemas/eventSeverity" origin: required: - master - port - deviceAlias allOf: - - $ref: '#/components/schemas/eventOriginObject' + - $ref: "#/components/schemas/eventOriginObject" message: required: - code - mode allOf: - - $ref: '#/components/schemas/eventObject' + - $ref: "#/components/schemas/eventObject" example: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: master: 1 @@ -3575,7 +3573,7 @@ components: properties: macAddress: type: string - pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' + pattern: ^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$ serialNumber: type: string orderCode: @@ -3605,14 +3603,14 @@ components: functionTag: type: string example: - macAddress: '00:02:72:CE:A6:49' - serialNumber: 'C134A746' - productId: 'TMP34Z' - vendorName: 'SensorCompany' - productName: 'FlowSensor34' - hardwareRevision: 'V3.45' - firmwareRevision: 'V1.30' - productInstanceUri: 'sensor.tmp.23.com' + macAddress: "00:02:72:CE:A6:49" + serialNumber: "C134A746" + productId: "TMP34Z" + vendorName: "SensorCompany" + productName: "FlowSensor34" + hardwareRevision: "V3.45" + firmwareRevision: "V1.30" + productInstanceUri: "sensor.tmp.23.com" gatewayConfigurationGetPost: type: object required: @@ -3627,15 +3625,19 @@ components: - ipConfiguration properties: ipConfiguration: - $ref: '#/components/schemas/ipConfiguration' + $ref: "#/components/schemas/ipConfiguration" ipAddress: type: string format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ subnetMask: type: string + format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ standardGateway: type: string format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ example: ethIpv4: - ipConfiguration: MANUAL @@ -3697,18 +3699,18 @@ components: - type: object properties: event: - $ref: '#/components/schemas/event' + $ref: "#/components/schemas/event" processData: - $ref: '#/components/schemas/processData' + $ref: "#/components/schemas/processData" parameter: - $ref: '#/components/schemas/mqttParameter' + $ref: "#/components/schemas/mqttParameter" mqttConfigurationTopicPost: allOf: - type: object properties: topicName: type: string - - $ref: '#/components/schemas/mqttConfigurationTopic' + - $ref: "#/components/schemas/mqttConfigurationTopic" mqttConfigurationTopicGet: allOf: - type: object @@ -3723,7 +3725,7 @@ components: properties: topicName: type: string - - $ref: '#/components/schemas/mqttConfigurationTopic' + - $ref: "#/components/schemas/mqttConfigurationTopic" example: topicId: 1 topicName: PD input @@ -3759,7 +3761,7 @@ components: type: integer example: connectionStatus: CONNECTION_ACCEPTED - serverAddress: 'http://broker-address.com' + serverAddress: "http://broker-address.com" upTime: 1050 deviceCapabilitiesGet: required: @@ -3768,7 +3770,7 @@ components: type: object properties: minimumCycleTime: - $ref: '#/components/schemas/cycleTime' + $ref: "#/components/schemas/cycleTime" supportedProfiles: type: array items: @@ -3794,8 +3796,8 @@ components: ioLinkRevision: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" vendorName: description: Mandatory if the Device suports the ISDU. type: string @@ -3847,7 +3849,7 @@ components: example: vendorId: 26 deviceId: 8389226 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" vendorName: SICK AG vendorText: Sensor Intelligence. productName: SLG-2 @@ -3856,9 +3858,9 @@ components: serialNumber: Serial123456 hardwareRevision: 3.2.1.444R firmwareRevision: 3.2.1.888R - vendorUrl: 'http://www.sick.com' - productInstanceUri: 'http://www.sick.com/SLG-2/Serial123456' - ioddUri: 'https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1' + vendorUrl: "http://www.sick.com" + productInstanceUri: "http://www.sick.com/SLG-2/Serial123456" + ioddUri: "https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1" # 'https://ioddfinder.io-link.com/api/vendors/26/iodds/11541/files/zip/rated' # 'https://ioddfinder.io-link.com/productvariants/search/32872' applicationSpecificTag: Fallback light switch @@ -3899,7 +3901,7 @@ components: - WIRELESS_MASTER slotType: description: >- - slotType for Wireless Master only + slotType for Wireless Master only type: string enum: - SSLOT @@ -3917,8 +3919,6 @@ components: unit: type: string - - portConfigurationGet: type: object required: @@ -3955,10 +3955,10 @@ components: the port shall use the next possible higher value. If the cycle time is greater than 132.8 ms the error 702 shall be returned. Note: This value is not used in IO-Link wireless use - wMasterCycleTimeOut and wMasterCycleTimeIn instead. + wMasterCycleTimeOut and wMasterCycleTimeIn instead. type: object allOf: - - $ref: '#/components/schemas/cycleTime' + - $ref: "#/components/schemas/cycleTime" vendorId: description: >- required if portMode is IOLINK_MANUAL and @@ -4037,7 +4037,7 @@ components: type: string enum: - "SSLOT" - - "DSLOT" + - "DSLOT" lowEnergyDevice: description: >- to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). @@ -4088,9 +4088,7 @@ components: minLength: 26 maxLength: 26 - - - mastersConfigurationGetPost : # TODO: IOLW + mastersConfigurationGetPost: # TODO: IOLW properties: wMasterId: description: >- @@ -4118,8 +4116,8 @@ components: properties: value: type: integer - minimum: 5 - maximum: 255 + minimum: 5 + maximum: 255 unit: type: string enum: @@ -4171,238 +4169,238 @@ components: blockList: type: object properties: - '2402': + "2402": type: boolean default: false - '2403': + "2403": type: boolean default: false - '2404': + "2404": type: boolean default: false - '2405': + "2405": type: boolean default: false - '2406': + "2406": type: boolean default: false - '2407': + "2407": type: boolean default: false - '2408': + "2408": type: boolean default: false - '2409': + "2409": type: boolean default: false - '2410': + "2410": type: boolean default: false - '2411': + "2411": type: boolean default: false - '2412': + "2412": type: boolean default: false - '2413': + "2413": type: boolean default: false - '2414': + "2414": type: boolean default: false - '2415': + "2415": type: boolean default: false - '2416': + "2416": type: boolean default: false - '2417': + "2417": type: boolean default: false - '2418': + "2418": type: boolean default: false - '2419': + "2419": type: boolean default: false - '2420': + "2420": type: boolean default: false - '2421': + "2421": type: boolean default: false - '2422': + "2422": type: boolean default: false - '2423': + "2423": type: boolean default: false - '2424': + "2424": type: boolean default: false - '2425': + "2425": type: boolean default: false - '2426': + "2426": type: boolean default: false - '2427': + "2427": type: boolean default: false - '2428': + "2428": type: boolean default: false - '2429': + "2429": type: boolean default: false - '2430': + "2430": type: boolean default: false - '2431': + "2431": type: boolean default: false - '2432': + "2432": type: boolean default: false - '2433': + "2433": type: boolean default: false - '2434': + "2434": type: boolean default: false - '2435': + "2435": type: boolean default: false - '2436': + "2436": type: boolean default: false - '2437': + "2437": type: boolean default: false - '2438': + "2438": type: boolean default: false - '2439': + "2439": type: boolean default: false - '2440': + "2440": type: boolean default: false - '2441': + "2441": type: boolean default: false - '2442': + "2442": type: boolean default: false - '2443': + "2443": type: boolean default: false - '2444': + "2444": type: boolean default: false - '2445': + "2445": type: boolean default: false - '2446': + "2446": type: boolean default: false - '2447': + "2447": type: boolean default: false - '2448': + "2448": type: boolean default: false - '2449': + "2449": type: boolean default: false - '2450': + "2450": type: boolean default: false - '2451': + "2451": type: boolean default: false - '2452': + "2452": type: boolean default: false - '2453': + "2453": type: boolean default: false - '2454': + "2454": type: boolean default: false - '2455': + "2455": type: boolean default: false - '2456': + "2456": type: boolean default: false - '2457': + "2457": type: boolean default: false - '2458': + "2458": type: boolean default: false - '2459': + "2459": type: boolean default: false - '2460': + "2460": type: boolean default: false - '2461': + "2461": type: boolean default: false - '2462': + "2462": type: boolean default: false - '2463': + "2463": type: boolean default: false - '2464': + "2464": type: boolean default: false - '2465': + "2465": type: boolean default: false - '2466': + "2466": type: boolean default: false - '2467': + "2467": type: boolean default: false - '2468': + "2468": type: boolean default: false - '2469': + "2469": type: boolean default: false - '2470': + "2470": type: boolean default: false - '2471': + "2471": type: boolean default: false - '2472': + "2472": type: boolean default: false - '2473': + "2473": type: boolean default: false - '2474': + "2474": type: boolean default: false - '2475': + "2475": type: boolean default: false - '2476': + "2476": type: boolean default: false - '2477': + "2477": type: boolean default: false - '2478': + "2478": type: boolean - default: false - mastersPortsPairingPost: # TODO: IOLW + default: false + mastersPortsPairingPost: # TODO: IOLW properties: portPairing: type: string @@ -4413,12 +4411,12 @@ components: example: WPortPairing: PairingUnique - mastersScanGet: # TODO: IOLW + mastersScanGet: # TODO: IOLW properties: scanStatus: type: string - enum: - - NoScanWasPerformed + enum: + - NoScanWasPerformed - ScanInProgress - ScanEnded scanResults: @@ -4436,22 +4434,22 @@ components: ioLinkRevision: type: string enum: - - '1.1' + - "1.1" lastSeen: - $ref: '#/components/schemas/eventTime' + $ref: "#/components/schemas/eventTime" example: scanStatus: ScanEnded scanResults: - slotType: SSLOT uniqueId: 03:78:00:00:01:32:50:60:46 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" lastSeen: "2022-12-01T08:42:23.314Z" - slotType: DSLOT uniqueId: 03:78:00:00:01:32:50:60:47 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" lastSeen: "2022-12-01T09:42:23.314Z" - mastersScanPost: # TODO: IOLW + mastersScanPost: # TODO: IOLW properties: txPower: type: integer @@ -4459,8 +4457,8 @@ components: maximum: 31 example: txPower: 31 - - mastersPortsGet: # TODO: IOLW + + mastersPortsGet: # TODO: IOLW type: array items: type: object @@ -4475,17 +4473,17 @@ components: type: string statusInfo: type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE slotNumber: description: >- slot number of the Wireless-Device (Wireless Master only). @@ -4524,32 +4522,29 @@ components: minLength: 1 maxLength: 64 - - - - mastersPortsStatusGet: # TODO: IOLW + mastersPortsStatusGet: # TODO: IOLW properties: statusInfo: type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE ioLinkRevision: description: >- Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or OPERATE. type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" transmissionRate: description: >- Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or @@ -4566,7 +4561,7 @@ components: wMasterCycleTimeOut and wMasterCycleTimeIn instead. type: object allOf: - - $ref: '#/components/schemas/cycleTime' + - $ref: "#/components/schemas/cycleTime" portQualityInfo: description: >- status information of the Process Data (Wireless Master only). @@ -4635,10 +4630,7 @@ components: minimum: 1 maximum: 63 - - - - mastersTrackstatusGet: # TODO: IOLW + mastersTrackstatusGet: # TODO: IOLW type: array items: type: object @@ -4657,15 +4649,15 @@ components: type: integer minimum: 1 maximum: 31 - example: + example: - trackNumber: 1 Mode: CYCLIC txPower: 31 - trackNumber: 2 Mode: ROAMING txPower: 31 - - mastersPortsQualityallGet: # TODO: IOLW + + mastersPortsQualityallGet: # TODO: IOLW type: array items: type: object @@ -4688,7 +4680,7 @@ components: type: integer minimum: -128 maximum: 20 - example: + example: - portNumber: 1 lqiMaster: 100 rssiMaster: -40 @@ -4698,9 +4690,9 @@ components: lqiMaster: 100 rssiMaster: -60 lqiDevice: 100 - rssiDevice: -61 - - mastersPortsQualityGet: # TODO: IOLW + rssiDevice: -61 + + mastersPortsQualityGet: # TODO: IOLW properties: lqiMaster: type: integer @@ -4718,15 +4710,15 @@ components: type: integer minimum: -128 maximum: 20 - example: + example: lqiMaster: 100 rssiMaster: -40 lqiDevice: 100 - rssiDevice: -39 + rssiDevice: -39 portConfigurationPost: - description: 'Note: At least one of the mode, iqConfiguration, - deviceAlias properties shall be included to the POST request' + description: "Note: At least one of the mode, iqConfiguration, + deviceAlias properties shall be included to the POST request" type: object properties: mode: @@ -4762,7 +4754,7 @@ components: wMasterCycleTimeOut and wMasterCycleTimeIn instead. type: object allOf: - - $ref: '#/components/schemas/cycleTime' + - $ref: "#/components/schemas/cycleTime" vendorId: description: >- required if the port's mode is IOLINK_MANUAL and validationAndBackup is @@ -4846,7 +4838,7 @@ components: type: string enum: - "SSLOT" - - "DSLOT" + - "DSLOT" lowEnergyDevice: description: >- to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). @@ -4896,7 +4888,7 @@ components: type: string minLength: 26 maxLength: 26 - + dataStorageGetPost: description: >- In case the Data Storage is empty, the header object is empty and the @@ -4925,8 +4917,8 @@ components: ioLinkRevision: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" parameterChecksum: type: integer - type: object # empty object @@ -4957,11 +4949,11 @@ components: properties: value: oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" + - $ref: "#/components/schemas/deviceComplexTypeValue" unit: - $ref: '#/components/schemas/deviceSimpleTypeValueUnit' + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" description: > Process data value cqValue: @@ -4975,7 +4967,7 @@ components: IO-Link cable IQ (pin2) level if it is used as digital input or output. (false - 0 V, true - 24 V) example: - 'format=byteArray, pin4=IO-Link, pin2=sio': + "format=byteArray, pin4=IO-Link, pin2=sio": ioLink: valid: true value: @@ -4984,7 +4976,7 @@ components: - 126 - 236 iqValue: true - 'format=iodd, pin4=IO-Link, pin2=deactivated/not available': + "format=iodd, pin4=IO-Link, pin2=deactivated/not available": iolink: valid: true value: @@ -4992,7 +4984,7 @@ components: value: true Valve_2: value: false - 'format=byteArray/iodd, pin4=sio, pin2=deactivated/not available': + "format=byteArray/iodd, pin4=sio, pin2=deactivated/not available": cqValue: false deviceProcessDataValueGet: type: object @@ -5006,11 +4998,11 @@ components: is configured as digital output. properties: getData: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" setData: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" deviceProcessDataValuePost: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" deviceByteArrayTypeValue: type: array description: The value in byteArray format. @@ -5031,9 +5023,9 @@ components: - value properties: value: - $ref: '#/components/schemas/deviceSimpleTypeValue' + $ref: "#/components/schemas/deviceSimpleTypeValue" unit: - $ref: '#/components/schemas/deviceSimpleTypeValueUnit' + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" deviceSimpleTypeValueUnit: type: string description: The unit for the simple type number value in SI format. @@ -5043,7 +5035,7 @@ components: maxProperties: 255 description: The value (with complex type) in iodd format. additionalProperties: - $ref: '#/components/schemas/deviceComplexTypeEntry' + $ref: "#/components/schemas/deviceComplexTypeEntry" deviceParametersGet: type: array items: @@ -5065,13 +5057,13 @@ components: description: only for complex parameters (records or arrays) required. Not allowed for simple parameters example: - index: 16 - parameterName: 'Vendor_Name' + parameterName: "Vendor_Name" - index: 18 - parameterName: 'Product_Name' + parameterName: "Product_Name" - index: 19 - parameterName: 'ProductID' + parameterName: "ProductID" - index: 60 - parameterName: 'SSC_1_Param' + parameterName: "SSC_1_Param" subindexAccessSupported: true deviceSubParametersGet: type: array @@ -5101,11 +5093,11 @@ components: properties: value: oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" + - $ref: "#/components/schemas/deviceComplexTypeValue" unit: - $ref: '#/components/schemas/deviceSimpleTypeValueUnit' + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" required: - value deviceParameterSubindexValueGetPost: @@ -5113,11 +5105,11 @@ components: properties: value: oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" + - $ref: "#/components/schemas/deviceComplexTypeValue" unit: - $ref: '#/components/schemas/deviceSimpleTypeValueUnit' + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" required: - value deviceBlockParameterizationPost: @@ -5132,7 +5124,7 @@ components: - WRITE - READ parameters: - $ref: '#/components/schemas/blockParameterizationPostParametersRequest' + $ref: "#/components/schemas/blockParameterizationPostParametersRequest" ioddIdentification: type: object required: @@ -5153,8 +5145,8 @@ components: ioLinkRevision: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" ioddFile: description: The IODD XML file. type: string @@ -5162,18 +5154,18 @@ components: ioddsGet: type: array items: - $ref: '#/components/schemas/ioddIdentification' + $ref: "#/components/schemas/ioddIdentification" example: - vendorId: 1234 deviceId: 4567 - version: '4.3' - releaseDate: '2018-01-02' - ioLinkRevision: '1.1' + version: "4.3" + releaseDate: "2018-01-02" + ioLinkRevision: "1.1" - vendorId: 4321 deviceId: 8765 - version: '2.1' - releaseDate: '2015-01-02' - ioLinkRevision: '1.1' + version: "2.1" + releaseDate: "2015-01-02" + ioLinkRevision: "1.1" iolinkErrorObject: type: object required: @@ -5200,7 +5192,7 @@ components: type: string minLength: 1 iolinkError: - $ref: '#/components/schemas/iolinkErrorObject' + $ref: "#/components/schemas/iolinkErrorObject" #--------------------------------------------------------------------------- parameters: @@ -5230,8 +5222,8 @@ components: schema: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" mqttTopicId: name: topicId in: path @@ -5282,25 +5274,25 @@ components: in: query description: The event source to filter schema: - $ref: '#/components/schemas/eventOrigin' + $ref: "#/components/schemas/eventOrigin" eventMasterNumber: name: masterNumber in: query description: masterNumber is only applicable with origin=MASTERS and origin=PORTS schema: - $ref: '#/components/schemas/eventMasterNumber' + $ref: "#/components/schemas/eventMasterNumber" eventPortNumber: name: portNumber in: query description: portnumber is only applicable with origin=PORTS schema: - $ref: '#/components/schemas/eventPortNumber' + $ref: "#/components/schemas/eventPortNumber" eventdeviceAlias: name: deviceAlias in: query description: deviceAlias is only applicable with origin=DEVICES schema: - $ref: '#/components/schemas/eventdeviceAlias' + $ref: "#/components/schemas/eventdeviceAlias" eventTop: name: top in: query @@ -5308,7 +5300,7 @@ components: Delivers or removes the oldest n events of the event buffer. top is mutually exclusive to bottom. schema: - $ref: '#/components/schemas/eventTop' + $ref: "#/components/schemas/eventTop" eventBottom: name: bottom in: query @@ -5316,13 +5308,13 @@ components: Delivers or removes the youngest n events of the event buffer. bottom is mutually exclusive to top. schema: - $ref: '#/components/schemas/eventBottom' + $ref: "#/components/schemas/eventBottom" format: name: format in: query description: Value format in response document schema: - $ref: '#/components/schemas/format' + $ref: "#/components/schemas/format" index: name: index in: path @@ -5369,104 +5361,104 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '104': + "104": description: Fieldbus controller or another gateway protocol has claimed priority value: code: 104 message: Action locked by another client - '201': + "201": description: Error while parsing the incoming JSON object value: code: 201 message: JSON parsing failed - '202': + "202": description: Error while parsing a specific JSON value, e.g. a malformed IP address value: code: 202 message: JSON data value invalid - '203': + "203": description: e.g. string instead of number value: code: 203 message: JSON data type invalid - '204': + "204": value: code: 204 message: Enumeration value unknown - '205': + "205": description: Exceeds the minimum or maximum value value: code: 205 message: JSON data value out of range - '206': + "206": description: An array or string was accessed exceeding its maximum length value: code: 206 message: JSON data value out of bounds - '208': + "208": value: code: 208 message: POST or PUT request without content - '305': + "305": value: code: 305 message: Query parameter name invalid - '306': + "306": value: code: 306 message: Query parameter value invalid - '307': + "307": value: code: 307 message: Port is not configured to IO-Link - '311': + "311": value: code: 311 message: IO-Link parameter access error - '401': + "401": value: code: 401 message: Data storage mismatch - '501': + "501": value: code: 501 message: I/Q is not configured as DIGITAL_OUTPUT - '502': + "502": value: code: 502 message: C/Q is not configured as DIGITAL_OUTPUT - '503': + "503": value: code: 503 message: IO-Link Device has no output process data - '601': + "601": value: code: 601 message: IODD (representation) for this IO-Link device is not available - '603': + "603": value: code: 603 message: IODD upload failed. IODD XML invalid - '604': + "604": value: code: 604 message: IODD upload failed. CRC error - '605': + "605": value: code: 605 message: IODD upload failed. Parsing error - '701': + "701": value: code: 701 message: Data set incomplete - '702': + "702": description: whole data set is rejected value: code: 702 message: Data set not applicable - '703': + "703": description: whole data set is rejected value: code: 703 @@ -5476,9 +5468,9 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '150': + "150": description: due to user management restrictions value: code: 140 @@ -5488,9 +5480,9 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '150': + "150": description: due to user management restrictions value: code: 150 @@ -5500,43 +5492,43 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '103': + "103": value: code: 103 message: Operation not supported - '301': + "301": description: e.g. wrong URL value: code: 301 message: Resource not found - '302': + "302": value: code: 302 message: masterNumber not found - '303': + "303": value: code: 303 message: portNumber not found - '304': + "304": value: code: 304 message: deviceAlias not found - '308': + "308": description: e.g. not connected or communication error value: code: 308 message: IO-Link Device is not accessible - '309': + "309": value: code: 309 message: IO-Link Parameter not found - '310': + "310": value: code: 310 message: IO-Link parameter access not supported by the Device - '312': + "312": value: code: 312 message: IO-Link parameter name is not unique @@ -5545,17 +5537,17 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '101': + "101": value: code: 101 message: Internal server error - '102': + "102": value: code: 102 message: Internal communication error - '602': + "602": value: code: 602 message: IODD upload failed. Not enough memory @@ -5564,13 +5556,13 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - '105': + "105": value: code: 105 message: IODD feature not supported - '106': + "106": value: code: 106 message: MQTT feature not supported @@ -5579,11 +5571,9 @@ components: content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: - "107": - value: - code: 107 - message: 'Service temporarily unavailable' - - + "107": + value: + code: 107 + message: "Service temporarily unavailable" From 40b9b0ce00f8f0fc22ea5d702c88fb0d1850c732 Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 21 Mar 2023 11:23:11 +0100 Subject: [PATCH 041/279] Change to double quotes for asyncapi document. --- MQTT_for_IO-Link.yaml | 122 +++++++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index 72eec39..b63a661 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -4,13 +4,13 @@ info: version: 0.0.1 description: > This is the _AsyncAPI_ specification of MQTT topics by the IO-Link consortium. - termsOfService: 'https://www.io-link.com' + termsOfService: "https://www.io-link.com" contact: name: Markus Rentschler email: markus.rentschler@murrelektronik.de servers: broker: - url: 'api.iolink.com:{port}' + url: "api.iolink.com:{port}" protocol: mqtt description: central mqtt Broker security: @@ -18,11 +18,11 @@ servers: variables: port: enum: - - '1883' - - '8883' - default: '1883' + - "1883" + - "8883" + default: "1883" channels: - '{originatorId}/connection': + "{originatorId}/connection": description: >- Topic that publishes online/offline state of the gateway, send at startup/"birth" and as "lastwill" @@ -37,18 +37,18 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: - $ref: '#/components/messages/connection' + $ref: "#/components/messages/connection" bindings: mqtt: qos: 1 retain: true - '{originatorId}/asset': + "{originatorId}/asset": description: >- publishes asset (e.g. gateway) nameplate information, send at startup or onChange @@ -64,12 +64,12 @@ channels: example: iomaster_nr1 subscribe: message: - $ref: '#/components/messages/nameplate' + $ref: "#/components/messages/nameplate" bindings: mqtt: qos: 1 retain: true - '{originatorId}/health': + "{originatorId}/health": description: publishes gateway health state parameters: originatorId: @@ -83,12 +83,12 @@ channels: example: iomaster_nr1 subscribe: message: - $ref: '#/components/messages/gatewayhealth' + $ref: "#/components/messages/gatewayhealth" bindings: mqtt: qos: 1 retain: true - '{originatorId}/{deviceId}(/event)/asset': + "{originatorId}/{deviceId}(/event)/asset": description: >- publishes asset (e.g. device) nameplate information, send at connection startup (new connection) @@ -103,19 +103,19 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: - $ref: '#/components/messages/nameplate_iolink' + $ref: "#/components/messages/nameplate_iolink" bindings: mqtt: qos: 1 retain: true - '{originatorId}/{deviceId}(/event)/status': - description: 'publishes the port status, send at startup/onChange' + "{originatorId}/{deviceId}(/event)/status": + description: "publishes the port status, send at startup/onChange" parameters: originatorId: description: >- @@ -127,18 +127,18 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: - $ref: '#/components/messages/portstatus' + $ref: "#/components/messages/portstatus" bindings: mqtt: qos: 1 retain: true - '{originatorId}/{deviceId}(/event)/health': + "{originatorId}/{deviceId}(/event)/health": description: health data of the device parameters: originatorId: @@ -151,18 +151,18 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: - $ref: '#/components/messages/devicehealth' + $ref: "#/components/messages/devicehealth" bindings: mqtt: qos: 1 retain: true - '{originatorId}/{deviceId}/processData': + "{originatorId}/{deviceId}/processData": parameters: originatorId: description: >- @@ -174,20 +174,20 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: oneOf: - - $ref: '#/components/messages/processdata_IOLink' - - $ref: '#/components/messages/processdata_Misc' + - $ref: "#/components/messages/processdata_IOLink" + - $ref: "#/components/messages/processdata_Misc" bindings: mqtt: qos: 1 retain: true - '{originatorId}/{deviceId}/events': + "{originatorId}/{deviceId}/events": description: >- eventlog of the io link device, see "iolink/v1/devices/{deviceAlias}/events" @@ -202,13 +202,13 @@ channels: type: string example: iomaster_nr1 deviceId: - description: 'Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)' + description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 subscribe: message: - $ref: '#/components/messages/deviceEvents' + $ref: "#/components/messages/deviceEvents" bindings: mqtt: qos: 1 @@ -242,7 +242,7 @@ components: vendorUrl: type: string format: url - default: 'http://www.murrelektronik.com' + default: "http://www.murrelektronik.com" productName: type: string example: Impact67 PN DIO12 IOL4 IRT 7/8" 5pin @@ -258,7 +258,7 @@ components: description: >- Unique product identifier and link to product catalogue (https://product.murrelektronik.com/{productCode}/{orderCode}/{serialNumber}) - example: 'https://product.murrelektronik.com/XYZ/512345/01234567' + example: "https://product.murrelektronik.com/XYZ/512345/01234567" hardwareRevision: type: string example: 7 @@ -285,7 +285,7 @@ components: description: Location description of the device or system example: Factory ABC Hall 123 ethIpv4: - $ref: '#/components/schemas/networkConfiguration' + $ref: "#/components/schemas/networkConfiguration" gatewayhealth: summary: diagnostic health information of the gateway. tags: @@ -300,9 +300,9 @@ components: type: string description: Error message describing the error ocurred. health: - $ref: '#/components/schemas/namurHealth' + $ref: "#/components/schemas/namurHealth" healthState: - $ref: '#/components/schemas/namurHealthState' + $ref: "#/components/schemas/namurHealthState" example: health: NORMAL_0 healthState: 100 @@ -427,7 +427,7 @@ components: vendorUrl: type: string format: url - default: 'http://www.murrelektronik.com' + default: "http://www.murrelektronik.com" productName: type: string orderCode: @@ -447,10 +447,10 @@ components: example: vendorName: Murrelektronik vendorId: 303 - vendorUrl: 'http://www.murrelektronik.com/' + vendorUrl: "http://www.murrelektronik.com/" orderCode: 55132 productName: Impact67 PN DIO12 IOL4 IRT 7/8" 5pin - serialNumber: '123456789' + serialNumber: "123456789" hardwareRevision: 1.0.0 softwareRevision: 1.0.1 devicehealth: @@ -464,9 +464,9 @@ components: type: object properties: health: - $ref: '#/components/schemas/namurHealth' + $ref: "#/components/schemas/namurHealth" healthState: - $ref: '#/components/schemas/namurHealthState' + $ref: "#/components/schemas/namurHealthState" errors: type: object properties: @@ -517,7 +517,7 @@ components: tags: - name: device payload: - $ref: '#/components/schemas/deviceEvents' + $ref: "#/components/schemas/deviceEvents" processdata_IOLink: summary: >- Read the process data values (input and output) from the specified @@ -525,7 +525,7 @@ components: tags: - name: device payload: - $ref: '#/components/schemas/deviceProcessDataValueIOLINK' + $ref: "#/components/schemas/deviceProcessDataValueIOLINK" processdata_Misc: summary: >- Read the process data values (input and output) from the specified @@ -533,7 +533,7 @@ components: tags: - name: device payload: - $ref: '#/components/schemas/deviceProcessDataValueMisc' + $ref: "#/components/schemas/deviceProcessDataValueMisc" schemas: eventOrigin: type: string @@ -563,14 +563,14 @@ components: - direction properties: direction: - $ref: '#/components/schemas/content' + $ref: "#/components/schemas/content" oneOf: - type: object required: - interval properties: interval: - $ref: '#/components/schemas/cycleTime' + $ref: "#/components/schemas/cycleTime" - type: object required: - onChange @@ -643,7 +643,7 @@ components: type: integer example: connectionStatus: CONNECTION_ACCEPTED - serverAddress: 'http://broker-address.com' + serverAddress: "http://broker-address.com" upTime: 1050 deviceProcessDataValueIOLINK: type: object @@ -658,9 +658,9 @@ components: configured as digital output. properties: getData: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" setData: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" processDataValue: type: object properties: @@ -678,8 +678,8 @@ components: Process data validity value: anyOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" description: | Process data value cqValue: @@ -743,14 +743,14 @@ components: - message properties: time: - $ref: '#/components/schemas/eventTime' + $ref: "#/components/schemas/eventTime" severity: - $ref: '#/components/schemas/eventSeverity' + $ref: "#/components/schemas/eventSeverity" message: required: - code - mode - $ref: '#/components/schemas/eventObject' + $ref: "#/components/schemas/eventObject" eventObject: type: object properties: @@ -821,7 +821,7 @@ components: absolute time or a relative time. Both formats are defined in DIN ISO 8601. type: string - example: '2021-05-18T07:31:54.123Z' + example: "2021-05-18T07:31:54.123Z" namurHealthState: type: integer maximum: 100 @@ -875,7 +875,7 @@ components: - custom macAddress: type: string - example: 'FE:AB:3A:55:33:11' + example: "FE:AB:3A:55:33:11" valueUnitObject: type: object properties: @@ -899,21 +899,21 @@ components: description: Name of the interface. example: eth0 ipConfiguration: - $ref: '#/components/schemas/ipConfiguration' + $ref: "#/components/schemas/ipConfiguration" ipAddress: - $ref: '#/components/schemas/ipAddress' + $ref: "#/components/schemas/ipAddress" subnetMask: - $ref: '#/components/schemas/subnetMask' + $ref: "#/components/schemas/subnetMask" standardGateway: - $ref: '#/components/schemas/standardGateway' + $ref: "#/components/schemas/standardGateway" dnsServer: - $ref: '#/components/schemas/dnsServer' + $ref: "#/components/schemas/dnsServer" macAddress: - $ref: '#/components/schemas/macAddress' + $ref: "#/components/schemas/macAddress" ifSpeed: type: array items: - $ref: '#/components/schemas/valueUnitObject' + $ref: "#/components/schemas/valueUnitObject" ifOperStatus: type: array items: From 0c7655b81c7915b43571ecae19e4419599e715cd Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 21 Mar 2023 11:43:18 +0100 Subject: [PATCH 042/279] Add rules for parameternames --- JSON_for_IO-Link.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 40d0ddc..adae781 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5050,6 +5050,14 @@ components: maximum: 65535 parameterName: type: string + description: > + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. + Rule 3: Leading numbers shall be prefixed with “_“. + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. + Rule 6: The naming of ArrayT elements is “element_{subindex}”. minLength: 1 maxLength: 71 subindexAccessSupported: From 9baf767f4d82e1b1ecd57e16d081a8ed9900f91d Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 21 Mar 2023 12:03:15 +0100 Subject: [PATCH 043/279] Improve description for parameter and subparameter name. Add schema for parameterName and subParameterName. --- JSON_for_IO-Link.yaml | 88 +++++++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 36 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index adae781..0bd699b 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3082,6 +3082,32 @@ paths: components: schemas: + parameterName: + type: string + description: | + Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used.\ + Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + minLength: 1 + maxLength: 71 + subParameterName: + type: string + description: | + Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + minLength: 1 + maxLength: 71 cycleTime: type: object required: @@ -3170,11 +3196,9 @@ components: - parameterName properties: parameterName: - type: string - example: Direct_Parameters_1 + $ref: "#/components/schemas/parameterName" subParameterName: - type: string - example: Min_Cycle_Time + $ref: "#/components/schemas/subParameterName" - type: object required: - index @@ -3469,13 +3493,9 @@ components: - parameterName properties: parameterName: - type: string - minLength: 1 - maxLength: 71 + $ref: "#/components/schemas/parameterName" subParameterName: - type: string - minLength: 1 - maxLength: 71 + $ref: "#/components/schemas/subParameterName" content: $ref: "#/components/schemas/deviceParameterValueGetPost" deviceBlockParameterizationPostParametersAnswer: @@ -3505,13 +3525,9 @@ components: - parameterName properties: parameterName: - type: string - minLength: 1 - maxLength: 71 + $ref: "#/components/schemas/parameterName" subParameterName: - type: string - minLength: 1 - maxLength: 71 + $ref: "#/components/schemas/subParameterName" result: type: object required: @@ -5049,17 +5065,7 @@ components: minimum: 0 maximum: 65535 parameterName: - type: string - description: > - Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: - Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. - Rule 3: Leading numbers shall be prefixed with “_“. - Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. - Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. - Rule 6: The naming of ArrayT elements is “element_{subindex}”. - minLength: 1 - maxLength: 71 + $ref: "#/components/schemas/parameterName" subindexAccessSupported: type: boolean description: only for complex parameters (records or arrays) required. Not allowed for simple parameters @@ -5086,9 +5092,7 @@ components: minimum: 1 maximum: 255 subParameterName: - type: string - minLength: 1 - maxLength: 71 + $ref: "#/components/schemas/subParameterName" example: - subIndex: 1 subParameterName: Master_command @@ -5344,9 +5348,15 @@ components: parameterName: name: parameterName in: path - description: >- - Parameter name. Comes from the IODD but might be reformatted according - to the JSON mapping specification. + description: | + Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. schema: type: string minLength: 1 @@ -5355,9 +5365,15 @@ components: subParameterName: name: subParameterName in: path - description: >- - Sub-parameter name. Comes from the IODD but might be reformatted - according to the JSON mapping specification. + description: | + Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ schema: type: string minLength: 1 From 33860d42f90bb5c66a79385f091eb928af5e49d0 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Wed, 5 Apr 2023 12:58:10 +0200 Subject: [PATCH 044/279] Update example for master configuration, related to issue 85 https://github.com/iolinkcommunity/JSON_for_IO-Link/issues/85 --- JSON_for_IO-Link.yaml | 335 ++++++++++++++++++------------------------ 1 file changed, 147 insertions(+), 188 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index f41c8b5..7ccc42b 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1291,101 +1291,9 @@ paths: $ref: "#/components/schemas/mastersConfigurationGetPost" examples: IO-Link: - value: + $ref: "#/components/examples/exampleMasterConfiguration" IO-Link_Wireless: - value: - masterId: 5 - advancedConnectivity: - "ahtEnable": false - pairingTimeout: - value: 25 - unit: s - serviceTrackNumber: 1 - serviceTrackMode: CYCLIC - trackTxPower: - "track_1": 31 - "track_2": 31 - "track_3": 31 - "track_4": 0 - "track_5": 0 - blockList: - "2402": false - "2403": false - "2404": false - "2405": false - "2406": false - "2407": false - "2408": false - "2409": false - "2410": false - "2411": false - "2412": false - "2413": false - "2414": false - "2415": false - "2416": false - "2417": false - "2418": false - "2419": false - "2420": false - "2421": false - "2422": false - "2423": false - "2424": false - "2425": false - "2426": false - "2427": false - "2428": false - "2429": false - "2430": false - "2431": false - "2432": false - "2433": false - "2434": false - "2435": false - "2436": false - "2437": false - "2438": false - "2439": false - "2440": false - "2441": false - "2442": false - "2443": false - "2444": false - "2445": false - "2446": false - "2447": false - "2448": false - "2449": false - "2450": false - "2451": false - "2452": false - "2453": false - "2454": false - "2455": false - "2456": false - "2457": false - "2458": false - "2459": false - "2460": false - "2461": false - "2462": false - "2463": false - "2464": false - "2465": false - "2466": false - "2467": false - "2468": false - "2469": false - "2470": false - "2471": false - "2472": false - "2473": false - "2474": false - "2475": false - "2476": false - "2477": false - "2478": false + $ref: "#/components/examples/exampleWirelessMasterConfiguration" "403": $ref: "#/components/responses/HTTP_403" "500": @@ -1406,101 +1314,9 @@ paths: $ref: "#/components/schemas/mastersConfigurationGetPost" examples: IO-Link: - value: + $ref: "#/components/examples/exampleMasterConfiguration" IO-Link_Wireless: - value: - masterId: 5 - advancedConnectivity: - "ahtEnable": false - pairingTimeout: - value: 25 - unit: s - serviceTrackNumber: 1 - serviceTrackMode: CYCLIC - trackTxPower: - "track_1": 31 - "track_2": 31 - "track_3": 31 - "track_4": 0 - "track_5": 0 - blockList: - "2402": false - "2403": false - "2404": false - "2405": false - "2406": false - "2407": false - "2408": false - "2409": false - "2410": false - "2411": false - "2412": false - "2413": false - "2414": false - "2415": false - "2416": false - "2417": false - "2418": false - "2419": false - "2420": false - "2421": false - "2422": false - "2423": false - "2424": false - "2425": false - "2426": false - "2427": false - "2428": false - "2429": false - "2430": false - "2431": false - "2432": false - "2433": false - "2434": false - "2435": false - "2436": false - "2437": false - "2438": false - "2439": false - "2440": false - "2441": false - "2442": false - "2443": false - "2444": false - "2445": false - "2446": false - "2447": false - "2448": false - "2449": false - "2450": false - "2451": false - "2452": false - "2453": false - "2454": false - "2455": false - "2456": false - "2457": false - "2458": false - "2459": false - "2460": false - "2461": false - "2462": false - "2463": false - "2464": false - "2465": false - "2466": false - "2467": false - "2468": false - "2469": false - "2470": false - "2471": false - "2472": false - "2473": false - "2474": false - "2475": false - "2476": false - "2477": false - "2478": false + $ref: "#/components/examples/exampleWirelessMasterConfiguration" responses: "204": description: Successful operation @@ -5573,3 +5389,146 @@ components: value: code: 107 message: "Service temporarily unavailable" + + examples: # reusable examples + exampleMasterConfiguration: + summary: IO-Link Master + value: + - "/masters/1/ports/1/configuration": + mode: IOLINK_MANUAL + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + cycleTime: + value: 2.3 + unit: ms + vendorId: 26 + deviceId: 333 + iqConfiguration: DIGITAL_INPUT + deviceAlias: Distance_sensor_1 + - "/masters/1/ports/1/datastorage": + header: + vendorId: 26 + deviceId: 333 + ioLinkRevision: '1.1' + content: TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl + - "/masters/1/ports/2/configuration": + mode: IOLINK_AUTOSTART + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + cycleTime: + value: 2.3 + unit: ms + vendorId: 15 + deviceId: 65253 + iqConfiguration: DIGITAL_INPUT + deviceAlias: Flow_control_2 + - "/devices/Flow_control_2/identification": + applicationSpecificTag: Flow control switch + locationTag: Down under + functionTag: Check start of belt + - "/devices/Flow_control_2/ports/2/blockparameterization": + direction: WRITE + parameters: + - identifier: + parameterName: Application_tag + content: + value: Level 2, row 3 + - identifier: + parameterName: Hysteresis + subParameterName: Channel_B + content: + value: 123 + exampleWirelessMasterConfiguration: + summary: Wireless IO-Link Master + value: + masterId: 5 + advancedConnectivity: + "ahtEnable": false + pairingTimeout: + value: 25 + unit: s + serviceTrackNumber: 1 + serviceTrackMode: CYCLIC + trackTxPower: + "track_1": 31 + "track_2": 31 + "track_3": 31 + "track_4": 0 + "track_5": 0 + blockList: + "2402": false + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false + From db496337c270d8b7562a30c7a2a5d24176dcb6a4 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Fri, 14 Apr 2023 14:29:59 +0200 Subject: [PATCH 045/279] Update JSON_for_IO-Link.yaml Removed "2402" on request of Sebastian Hagen. --- JSON_for_IO-Link.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 7ccc42b..9d4443f 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3973,9 +3973,6 @@ components: blockList: type: object properties: - "2402": - type: boolean - default: false "2403": type: boolean default: false @@ -5454,7 +5451,6 @@ components: "track_4": 0 "track_5": 0 blockList: - "2402": false "2403": false "2404": false "2405": false From 48dc9735cd8d4c522e5a0e1d5ec4c87fa53e66b7 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Sat, 15 Apr 2023 02:02:23 +0200 Subject: [PATCH 046/279] Added link to openapi specification document. --- JSON_for_IO-Link.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 9d4443f..febe9cf 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -6,8 +6,8 @@ info: # Description - This is an openapi specification for IO-Link gateways, masters and devices. You can find out more about IO-Link - at [http://www.io-link.com](http://www.io-link.com) + This is an [openapi specification](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md) for IO-Link gateways, masters and devices. + You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) * Draft for version 1.1.0 From 0649d8de1a951ae7b7fda9f139c099265e5d95a7 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Fri, 21 Apr 2023 00:08:21 +0200 Subject: [PATCH 047/279] Update JSON_for_IO-Link.yaml Removed device settings from the master configuration example. --- JSON_for_IO-Link.yaml | 205 ++++++++++++++++++++---------------------- 1 file changed, 95 insertions(+), 110 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index febe9cf..ddc139f 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1273,13 +1273,13 @@ paths: "500": $ref: "#/components/responses/HTTP_500" - "/masters/{masterNumber}/configuration": #TODO: wireles + "/masters/{masterNumber}/configuration": get: operationId: GetMastersMasterNumberConfiguration tags: - masters summary: Read the actual configuration of the specified Master. - description: Read the actual configuration of the specified Master. + description: Read the actual configuration of the specified Master, all master configuration items assembled together in a single data object. parameters: - $ref: "#/components/parameters/masterNumber" responses: @@ -5416,115 +5416,100 @@ components: vendorId: 15 deviceId: 65253 iqConfiguration: DIGITAL_INPUT - deviceAlias: Flow_control_2 - - "/devices/Flow_control_2/identification": - applicationSpecificTag: Flow control switch - locationTag: Down under - functionTag: Check start of belt - - "/devices/Flow_control_2/ports/2/blockparameterization": - direction: WRITE - parameters: - - identifier: - parameterName: Application_tag - content: - value: Level 2, row 3 - - identifier: - parameterName: Hysteresis - subParameterName: Channel_B - content: - value: 123 + exampleWirelessMasterConfiguration: summary: Wireless IO-Link Master value: - masterId: 5 - advancedConnectivity: - "ahtEnable": false - pairingTimeout: - value: 25 - unit: s - serviceTrackNumber: 1 - serviceTrackMode: CYCLIC - trackTxPower: - "track_1": 31 - "track_2": 31 - "track_3": 31 - "track_4": 0 - "track_5": 0 - blockList: - "2403": false - "2404": false - "2405": false - "2406": false - "2407": false - "2408": false - "2409": false - "2410": false - "2411": false - "2412": false - "2413": false - "2414": false - "2415": false - "2416": false - "2417": false - "2418": false - "2419": false - "2420": false - "2421": false - "2422": false - "2423": false - "2424": false - "2425": false - "2426": false - "2427": false - "2428": false - "2429": false - "2430": false - "2431": false - "2432": false - "2433": false - "2434": false - "2435": false - "2436": false - "2437": false - "2438": false - "2439": false - "2440": false - "2441": false - "2442": false - "2443": false - "2444": false - "2445": false - "2446": false - "2447": false - "2448": false - "2449": false - "2450": false - "2451": false - "2452": false - "2453": false - "2454": false - "2455": false - "2456": false - "2457": false - "2458": false - "2459": false - "2460": false - "2461": false - "2462": false - "2463": false - "2464": false - "2465": false - "2466": false - "2467": false - "2468": false - "2469": false - "2470": false - "2471": false - "2472": false - "2473": false - "2474": false - "2475": false - "2476": false - "2477": false - "2478": false + - "/masters/1/configuration": + masterId: 5 + advancedConnectivity: + "ahtEnable": false + pairingTimeout: + value: 25 + unit: s + serviceTrackNumber: 1 + serviceTrackMode: CYCLIC + trackTxPower: + "track_1": 31 + "track_2": 31 + "track_3": 31 + "track_4": 0 + "track_5": 0 + blockList: + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false From c1717947e3a6c0d162bbb6ed333feb23ffcf75aa Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 8 May 2023 13:58:18 +0200 Subject: [PATCH 048/279] Add interface name for gateway configuration --- JSON_for_IO-Link.yaml | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index f41c8b5..2982661 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5,14 +5,14 @@ info: description: >- # Description - + This is an openapi specification for IO-Link gateways, masters and devices. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) - + * Draft for version 1.1.0 - + # Specification Reference URIs: - + > [JSON Integration for IO-Link - Draft V2.0](http://www.io-link.com/io-link/10.222/V2.0) > [JSON Integration for IO-Link V1.0](http://www.io-link.com/io-link/10.222/V1.0) @@ -20,7 +20,7 @@ info: > [IO-Link Interface and System Specification V1.13](http://www.io-link.com/io-link/10.002/V1.13) > [IO-Link Wireless System Extensions V1.1](http://www.io-link.com/io-link/10.122/V1.1) - + # Disclaimer: @@ -37,9 +37,9 @@ info: >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. - + --- - + contact: email: info@io-link.com license: @@ -447,15 +447,18 @@ paths: Multiple ethernet interfaces: value: ethIpv4: - - ipConfiguration: MANUAL + - ifName: eth0 + ipConfiguration: MANUAL ipAddress: 192.168.1.13 subnetMask: 255.255.255.0 standardGateway: 192.168.1.1 - - ipConfiguration: MANUAL + - ifName: eth1 + ipConfiguration: MANUAL ipAddress: 192.168.2.10 subnetMask: 255.255.255.0 standardGateway: 192.168.2.1 - - ipConfiguration: DHCP + - ifName: eth2 + ipConfiguration: DHCP ipAddress: 192.168.200.7 subnetMask: 255.255.255.0 standardGateway: 192.168.200.1 @@ -490,15 +493,18 @@ paths: Multiple ethernet interfaces: value: ethIpv4: - - ipConfiguration: MANUAL + - ifName: eth0 + ipConfiguration: MANUAL ipAddress: 192.168.1.13 subnetMask: 255.255.255.0 standardGateway: 192.168.1.1 - - ipConfiguration: MANUAL + - ifName: eth1 + ipConfiguration: MANUAL ipAddress: 192.168.2.10 subnetMask: 255.255.255.0 standardGateway: 192.168.2.1 - - ipConfiguration: DHCP + - ifName: eth2 + ipConfiguration: DHCP responses: "204": description: Successful operation @@ -3612,6 +3618,8 @@ components: required: - ipConfiguration properties: + ifName: + type: string ipConfiguration: $ref: "#/components/schemas/ipConfiguration" ipAddress: @@ -3628,7 +3636,8 @@ components: pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ example: ethIpv4: - - ipConfiguration: MANUAL + - ifName: "eth0" + ipConfiguration: MANUAL ipAddress: 192.168.1.13 subnetMask: 255.255.255.0 standardGateway: 192.168.1.1 From 82338897ad08af3d40291688952bc79f01f11be3 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 23 Jun 2023 17:04:35 +0200 Subject: [PATCH 049/279] Add artifact parameter to provide image download --- JSON_for_IO-Link.yaml | 48 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 2982661..82a2528 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1057,7 +1057,7 @@ paths: tags: - iodds summary: Delete a specific IODD representation. - description: Delete a specific IODD representation. + description: Delete a specific IODD representation and all related artifacts. parameters: - $ref: "#/components/parameters/vendorId" - $ref: "#/components/parameters/deviceId" @@ -1080,12 +1080,13 @@ paths: operationId: GetIoddsFile tags: - iodds - summary: Get a specific IODD. Optional. - description: All query parameters are mandatory. + summary: Get a specific IODD or other IODD artifacts like device image. Optional. + description: Get a specific IODD or other IODD artifacts like device image. parameters: - $ref: "#/components/parameters/vendorId" - $ref: "#/components/parameters/deviceId" - $ref: "#/components/parameters/revision" + - $ref: "#/components/parameters/artifact" responses: "200": description: Successful operation @@ -1094,6 +1095,10 @@ paths: schema: $ref: "#/components/schemas/ioddFile" example: "IODD XML file" + img/png: + schema: + $ref: "#/components/schemas/ioddFile" + example: "iVBORw0KGgoAAAANSUhEUgAAAKUAAAClCAYAAAA9Kz3aAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH4gsHCCsNe43J7QAAFTJJREFUeNrtnHtYVVXegN99uByQqyQKiChG4mUy00onTVLLdJpGyy5jo5ViNNZkClkqmqKm4hh4T0v9Zqa7Yjal4aWyNDWvjTfMQkVIFFSU2+F2OOv748DhHDjAQcHPvvm9z8Pz6Oacvdde+11r/dZvrY2mlFIIwk2ETqpAECkFQaQUREpBECkFkVIQREpBpBQEkVIQREpBpBQEkVIQKQVBpBRESkEQKQWRUhBESkEQKQWRUhBESkGkFASRUhApBUGkFASRUhApBUGkFERKQRApBZFSEERKQaQUBJFSEERKQaQUBJFSECkFQaQUREpBECkFQaQUREpBECkFkVIQREpBpBQEkVIQKQVBpBQEkVIQKQVBpBRESkEQKQWRUhBESkEQKQWRUhBESkGkFASRUhApBUGkFERKQbhZcHbkQ0opDAYDqamppKSksG/ffvbt3U/62QxMJhPN/ZrTqWM4Ef360rlzFzp27EhAq1bonMR5oeFoSilVl4yXL1/mm2+2s2b1Go4dPY754xpQ+bXKf1ceB29vb54eMZyhQ4fQqVMnnJ2dpab/CyguLqasrAylwMlJh4eHR+NKWVJSws4dO4mPn0/K8RMAODk5UV5ebpFRKYWmabWe3M1dz5jnIxk1ahQBAa2u64aVUhiNRgc+aGkbNri4uNT7VaPRSF5ePvl5eeTm5XLlyhXKy8vx9vbBx8cbH28ffJv74uLiUud9NxbV79nZ2fmarltYWIjBYLB0IL6+vg7VR0PZsOEzEhYkoID7+0Uwc2YcOl3DR0u7XVhubi5Lly5j5dvvUF5ejlKK/g/0Y0xkJOPGjefypRyzlhUVZE9OpRTFRSUsXbyUHd/t4M05s+nevfs133BeXh5TpsRSZDBUk866166UUrOxtGXLVsTFzUCv19d67oMHD7Fl82b27PmBtDNnMRrLAYVSlafTaNXKn+497mTAgAFE3B9BYGBgk8qZ+ksq8fHzMSkTTk5OxMXNICgoqMHn2bZ1G7Nnv2n5//pP19O2bUijl9dYVsbp02cA6Nnz7saLKXNzc5kxI461HydZZGsXGkJs7BQ6duzIvPg5jH3hbxiNRsvv7QlpPmZ+qEcOH+P5MS+wbPkSevXqdU0FNZlMHDp4iPSzvza0v6HX73tib0AwGo3s2LGDRYsWc2DfQfuSW50nK+siyV9uIfnLLQS3ac3YF8cy7LHH8PL2ahIpS8tK+ebr7RQXl+Dl5enYSGFPlvJyzmdmWe6rjojt5pt9FxQUMHvWbNZ+nGTpCZt5uDN33hw6deqEpmkMHDiQ2GmTqauD0DTNcuOaZr7EhfNZ/O2lcRw8cLBJh7vq/6+t/gsKCli0aDHPPRvJgX2HKsKRyi9qFXJqFfepbHpmpeDXjEymTp7GuHGvcPZs+g14VOo6v2tdFze3lM7Wvcaa1Wv48INPbD4wa1Ycffr0sYlrRo4cSXr6Wf5n9T/rFLM65zMvMGnSZFavWU1ISJvGn7VVu2Zlb10dg8FAQkIi76x412riZvX9GuGB/esopdi6ZRv5efkkLHyLkJCQJnlImmY/TnaUXr168dnnn1pO0qJFi9+GlAf2H2Bh4mKbX8a8Op5hjw/DycnJ5ri7uxvR0dGcO5fJluRtdofv2kRJOf4Ty5cvZ+bMOFxdXR0uqIuLC0MfHUJJSUnFcK74bMO/yc66WO0ais6/60xERF9MJhMAPj4+loBbKcX6pPWsfPtdO7Mic7kDgwJ5/IlhhIWF4eLszMVLF/lsw2f858ejKGWq+k5FrLlnzw/MjJtJ4sJEvLy8brqOMjg4mODg4N9WnjI/P58lS5dSUlJqqYE/PvIwo0ePrnWW5ufnx/Tpb5B5LpNjR4/bPNzagv/KWPOTj9byyCOP0Lv3vQ4X1NPTk4kTJ9pkB346cYKL2RdrDFN9+vRmypTJtnFKhZS//PILc+fG2+kFzU99zPOjeeGvfyUgIACdrqpHHD58OF98sZG4GTPJy82rmABVZSCSk7fy0KAtPP74sKaZ/Gg3Xg6TyYTRaKSoqAhN03Bzc7shmQdngB8P/ci33+ywHLyjW1emTovFt7mv5VhOTg7Hjh2jV69elh6uXbt2xM+fR+ToMVw4n+3g8KooLS3lg/c/4K67etQ6I7YbAFulF3Q6HfYDW/PEy14qwmQykbQuidyruXaessaYqNFMmvQ67u7uNcrt4eHBk08+gbu7O+PHTaC0tKxGT5bwViIDBgzAz695I8fK1/f97Oxstm//Fg1wc3PjoUGD0OtdUUqxc+dOLly4AApuDQujR4/ulJSUcPx4Cl999RWbk7dYGn5wm2CGDP0TDw0cSLvQdnblrMpW1E9mZibff7/LcoPNPDwYNOghnI1GI+vXf2rpKYJaBzF33lzatGlj6SVOnTrNjBkz2PHd97w87iWiop7Hx8cHgG7dujEvfi4vRI2lpLi0Roqo8t+2x2Bz8hbGjz9Lh/AO3KhuJTPzPOvWJVkqrmoyBgGBAURFRdUQsnqjePjhP7B7127ef+/DGr9PP5vBoYMHeeDBBxo/prwOcnJyiIl+FWWCO7vfQf8B/dHrzR3Ld9/tYMXyd8zzhzfj8PLyZOWKlSSt+9QqLWZ+djk5lzly+ChrVq8hITGB3r3vdTiOr1FX6RnExMSw+/sfAEW3O7uxcFEizs7O6LKzs/lyUzJKmYfIvy+Ip2vX2y1C7dmzh9GjRrP96+8oN5azMGExr018nYyMDMsF+vXrz7Q3ploKY13Qyn9XHTP3ZCUlpezbv7/RZtqOjHEnTqSQnXXRpmxaxSziLyOeJjAwoP6hxdmZJ596EmdnJ8A6P2sOHXbu3Gm1wHDz4IjXG7/YxNPDR/DxR59Y0k+enp54e3tb6gkU5349R0z0q6SlpV1TWX799VdiomPY/f0eALp268qixQu57bYwc+NPT8/AYChC02DaG7H07dsXTdMoLS1l3bokRj0XyanUMzbj1MYvNjEm8nkOHfoRpRTOzk4MH/5nnn1upKVl2aZl7LecAwcOXHPuzbrXdZQTKT/ZmT+YT3Dfffc5vPpw66230v7WULsN5dtvd1BYWHjTSelINe39YS+Z587Tuk1rJk95neQtm/h+9w527trBN9u3MX7COMtnM9Iz+PzfXzQ453np0iVmTI9j9649FaHi7SxevJCwsFurRqS0tDOAwsnJifCOHdHpdFy5cpV58+J5Nfo1CvIL7bQ5jWNHU3h25HNs+HQDpaWl6PV6br+9q2UCULM3qsnuXXsss+nGGNqqKsh+ojw1NbXmcKjAx9fboV6yEm9vLzp36VKt/9HQNB2nUk9TWGhogvxr029ucXV14W8vj2X9+iRefOlFuna9HX9/f/z9W9AhPJxxr4zjhbFRlnvduHGjnQao6ohtLxIbO5XkLzebQ78772DxkkXcdttttmHS5UuXbQ6kpqYyYcIEVr79br3D0OXLOUyY8CqJiQvJzc0FjQbMzBQXzl+guLi40ZPm9igrKzMH9BW9q3UPHhDQCh9vnwb10re2D621LHm5ufzWUErx8isvM/G1ibRp08buqKHX6xk8eBCV+x5OnzpDXl6+w5OtqVOnsvHzTYDGfX37sGTpEsLCwmqGSOfPn7cU6uuvvmbLlq38fPIXat3ZQNUkQdPM652LFy7l7Nmz+Lfwr3cAqYxNKsUoKCjglltuaZSkeWWQba/URqPR3HDspKy8vb1xdnFu0PX8/Pxq/X2BVe+RdSGLgsICB2I+jZC2IXZ3VDk6eajv/KqOc2iaRvPm9W/UCAoMstSf0VhOXl4uQUGBdgPXykafl5tHfHw8m74wz136DejL/Pnzad06qJaUUMUFTCYTSxYvqzF7rk4L/1uIjh7P22+vJCO9ah363xs+p2rd2H6qxsvLk+iY8Wza9CUH9h/i+pdglcOHNU3DycnJbsrC1MCCKKUor0jM27u4deYhKSmJxMRFtUihWWrsFr/mbN6aTPPmzRs/e96ISU4fX180nYYqV/U3A00jNzeXOW/O4eMP15knxf0jiI+Pr1VIAF3bBiyNKaXw92/BkKFDWL1mFff27mknlrNfAaHt27Ly3RWMGDmCZs2aAeY9d5WppesZsh0Zvp2dnfHz87PT2Mx7RhsaRpw7V/vGEB8fbxvhiwxFGAxFFNX4MWAwFFJkKKS0rLQJN0qo6w5/rEdJj4rnV+dlNLh69Soz42bx/nsfopTi/n59+fuC+QQHt677WZlbpmZ3OKxecPOkRYemaXTp0plly5eRkJDI+//60O6NKWVC0yCiXwTTp08nPLyD1cRGERraDhcX12tr+1YLwrY50Yr9FDWCeFfahITYbTjZF7K5ejW3jl6qZhL+9Om0WuW3jk9dXFxpHdzablNVVg3Zy8uzSVdKKsMle4425LqapuHt401+fkGdvXLO5RwSEhL5+KO1VG5sGTToIQICHEi7hYaG1tnDVS942pk0jh45Su8+vWnZsiXTp79B+/btmTN7HmVlZTVa1ajIUYwf/4plE0BaWhonfzoJQM/f98TNTX9dPYD1cFxX7KXT6QgLa28nxNAwGIo4deoUoaHtHExrXCbleEqNelNKcU+vu2nm0cxSnhEj/sJTTz3h2NB4jaPGjUjAVzfcLHjtPezWLV9ZLU6Y6zwubhatg4Pp379fnafXhbQNwdfXx+Hu3WAoYurUaZw+fRoAd3d3Ro8exYqVy/D3v8Uii4urC7PenEls7BSLkOfOZRITHUNWRQL7nnvuqbHZ41oru7KMdY1EnTt3qTGrrKzcbVu3OpwzPXz4MJnnztttuL3vvddmVcjT04PmzZs79FN7nvQ6twk1gZharVuXlOXH1dWF2GmT6f/A/YBGkaGI6Akx7Nq1u24p/fz8ePyJYXXGFdW7959PpjJlcixZWVmWIWvgQwP553v/oHuPbgQGBfLOO2/zzDPPWB7QlStXiIuL48dDRwDw8PTgrrt6NEoayHpiVlfFd+7cmfCOt1Fz84hG0rpPOXbsWL3XvXo1l1WrVmEymao1AHPoEBER0YTD8P/BroxaylFfHOrm7sb8BfFERUUxd+4ceva6G9C4mH2J1ya+xqFDh2qX0snJiYf/+EebVlrfBTVN4/udu0hMSKSgoMAyPN5xxx2sWv0uH3z4Pg8OfNCS3igqKmbRwkVs+iLZco6hQ4dc09b+umJKR5Leo0Y/h/UO7Mp7LS4uYdbM2aSnZ9Se6ikoZMWKFezauRutWk5WKej/QD86de70/1xI2wxDbWUdPHgQjz46FBcXZ4KDg1nw1t/p8rtOgCLtzFlioieSknLCvpQAXbvezuOPP1bxsEwOPmSN9/71AatXraa0tNRytFWrVoSHd7CZfKxbu5bVq/9huSFPL09GjBzRoJeXlFKUlZVV/ZSWoUz2179N5Sbbz5YZLfIOHjyY7t3vtFSs9dr1nt0/8MLzUWxO3szVq1cxGo0YjUZKSkr48cf/EDsllqVLllO1S71yR7fC3d2Nl156ETc3tyaaPZu4uXaM1xVTKvR6vU1o1r59exIS3yI4JLhitD1JTEyM3V37zmDezjQmKpItW7eSl5vXoKItWJBIUOvWDBv2mN147ZtvtjNz5mxM5SaLNKMjn6NzA3uU3Nxcnh7+NJcv51jOXbldzvqdIID33nuf5OSqXjk8PJx3V72DXq/Hz8+PadOnMfIvz1BQUGg1WTLPEI8cOcaYyCgCgwIsrwenp6dzKvW0VeOzlVmn0xg3/mV69OjRpBpo19lbKkWtSe7GDzlqCtulSxeWLFlM5Ogx5FzO4ch/jhI9IZply5fazMqdreOt6TPeYGLMaxU7th3rLU3lJqbGTqNlS38iIiJsfnvy5M9MmRxLkaHYUsiIfn2JjBzd4HfBlVJcuXKVXzPO2UnSVqWDAIqLim0+FxwcbBOS3HVXD+bFz2HS65MrxLQdIpWCzHMX7ExmtGr5WIVOp+O5Uc8wZkxkk77fXlpSRnJyMr6+vlVFqZYXxCrj061bN8KrbQu02dB0jSmhGoI3MOS6++67WLpsCS9E/ZX8vHx+2LOXmOhXSVyYQMuWLW2l1Ol0PProUNLT01mUuMQq7qq/0AX5hUyZHMvqNavp2DEcgPOZ55n0+qQKOcwPsWOnDsTFxV3XOyKVlWEbz9XV0pXd9NCQoUO4pUULpr8xnZ9PptaSFtPq7Ak8vbyIeXU8I0ZULQg0mZSlZcyYPqvWV0+qH1+1ZqWVlI3cC1pt+bNXXUrVPuPUNI2+fe9j4aIEXhr7MsXFJXy7fQdxM2Yya/ZM/Pz8bLee6PV6XnxxLC/9baxlKHa0FaWdOcvU2KlkZ2dTUFBA/Pz57N93ADChlKJrt9tZuCjRsmfueiY41vHqtbZ0nU5H37738dHHHzFpymsEVq7fOoCrqytP/fkJkpI+ITIyssmFrN7wqr8DZX3c/lbBG7RSpBxLPWmaxoMPPsjceW/i5KQDzO9bLVjwFgUFBfb/QkZJSQlrP1nLm7Pnkp+f36DWNuyJR2kd1JrFi5ZUVKSOwX94iGlvTLuuF+CLior49tvvKnZDN2zOqnfT06/f/bUOr0opsrOzOXz4CPv37ePkzz+TkZ5hWbXQ610JCgqibdu29OzVk27d7qBd23a4uLo0qYjZ2dns27cfVMO16tQp3LID5+LFi+zduw+UwsXVlfvvj0Cv16OUYu/efVy8eAmAtm1DLBu8a6OsrIxt276ivNy8Wtez5z34+5s34qSknOD06dMopfD19aFP7z5oOq2O3r+UXbt2U1hQaFndCgsLq/3PtpjKTRw+coSlS5awZfO2emOI6pMNML8VOH7CK/zpT4/g7e3Nb4Hy8nLLy1KVK1ROTk64u7vj4uIifxfpRmRBVT1JSYPBwMGDB/l0/QY2btyEobCoRtdtvdSn0zkR3vE2nn32GfoPGEBgYMA1/T0ZQaSsF6PRSFZWFr/8kkpa2hmOHTtunsRo4OHRjN916UK70FA6dOhAaGg73N3db8gfgRL+i6UUhBuFjKuCSCkIIqUgUgqCSCmIlIIgUgoipSCIlIIgUgoipSCIlIJIKQgipSBSCoJIKYiUgiBSCoJIKYiUgiBSCiKlIIiUgkgpCCKlIIiUgkgpCCKlIFIKgkgpiJSCIFIKIqUgiJSCIFIKIqUgiJSCSCkIIqUgUgqCSCkIIqUgUgqCSCmIlIIgUgoipSCIlIJIKQgipSCIlIJIKQgipSBSCoJIKYiUgiBSCoJIKYiUgiBSCiKlIIiUgkgpCCKlIFIKgkgpCLXxvz6Kf20HDytIAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTEwLTA2VDExOjEzOjAxKzAyOjAwSxzPnwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0xMC0wNlQxMToxMzowMiswMjowMAupbb4AAAAASUVORK5CYII=" "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" "403": @@ -1119,6 +1124,10 @@ paths: schema: $ref: "#/components/schemas/ioddFile" example: "IODD XML file" + application/zip: + schema: + $ref: "#/components/schemas/ioddArchive" + example: "IODD in archive format provided by the IODD finder" responses: "204": description: Successful operation @@ -3060,6 +3069,15 @@ paths: components: schemas: + artifact: + type: string + description: IODD Artifacts like device, vendor images + enum: + - XML + - DeviceIcon + - DeviceSymbol + - VendorLogo + default: XML parameterName: type: string description: | @@ -5140,8 +5158,16 @@ components: enum: - "1.0" - "1.1" + availableArtifacts: + type: array + items: + $ref: "#/components/schemas/artifact" ioddFile: - description: The IODD XML file. + description: The IODD XML file or other IODD artifacts. + type: string + format: binary + ioddArchive: + description: The IODD in archive format (e.g. IODD Finder) containing XML file and device images. type: string format: binary ioddsGet: @@ -5159,6 +5185,7 @@ components: version: "2.1" releaseDate: "2015-01-02" ioLinkRevision: "1.1" + availableArtifacts: [XML, DeviceIcon, DeviceSymbol, VendorLogo] iolinkErrorObject: type: object required: @@ -5189,11 +5216,18 @@ components: #--------------------------------------------------------------------------- parameters: + artifact: + name: artifact + description: IO-Link IODD Artifacts + required: false + in: query + schema: + $ref: "#/components/schemas/artifact" vendorId: name: vendorId in: query description: IO-Link VendorID - required: false + required: true schema: type: integer minimum: 0 @@ -5202,7 +5236,7 @@ components: name: deviceId in: query description: IO-Link DeviceID - required: false + required: true schema: type: integer minimum: 1 @@ -5211,7 +5245,7 @@ components: name: revision in: query description: IO-Link Revision - required: false + required: true schema: type: string enum: From dc9706aee69ea6b3fbb320c99f324b034e673536 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 26 Jun 2023 10:30:33 +0200 Subject: [PATCH 050/279] Proposal for prospective versioning. --- JSON_for_IO-Link.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 2982661..08c1f0d 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -10,6 +10,7 @@ info: at [http://www.io-link.com](http://www.io-link.com) * Draft for version 1.1.0 + * The major versioning of endpoints in case of incompatibility changes is done in the path (e.g. V1, V2, etc.) individually. Request /apiversion in order to get the full version or check the info:version: section of this specification. # Specification Reference URIs: From ea7e415fbccaf043c6285f65809a7c6fe20b1da7 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 26 Jun 2023 12:36:36 +0200 Subject: [PATCH 051/279] Fix example for complex parameters --- JSON_for_IO-Link.yaml | 55 ++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 32 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 2982661..e07875f 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2475,12 +2475,11 @@ paths: unit: "cm" "format=iodd, complex type": value: - value: - Distance: - value: 15 - unit: "cm" - Quality: - value: 12 + Distance: + value: 15 + unit: "cm" + Quality: + value: 12 "400": # code 305, 306, 307, 311, 601 $ref: "#/components/responses/HTTP_400" "403": @@ -2521,12 +2520,11 @@ paths: unit: "cm" "payload as iodd, complex type": value: - value: - Distance: - value: 15 - unit: "cm" - Quality: - value: 12 + Distance: + value: 15 + unit: "cm" + Quality: + value: 12 responses: "204": description: Successful operation @@ -2570,12 +2568,11 @@ paths: unit: "cm" "format=iodd, complex type": value: - value: - Distance: - value: 15 - unit: "cm" - Quality: - value: 12 + Distance: + value: 15 + unit: "cm" + Quality: + value: 12 "400": # code 305, 306, 307, 311, 601 $ref: "#/components/responses/HTTP_400" @@ -2613,12 +2610,11 @@ paths: unit: "cm" "format=iodd, complex type": value: - value: - Distance: - value: 15 - unit: "cm" - Quality: - value: 12 + Distance: + value: 15 + unit: "cm" + Quality: + value: 12 responses: "204": description: Successful operation @@ -2723,10 +2719,9 @@ paths: - 25 format=iodd: value: - value: - Distance: - value: 15.2 - unit: "cm" + Distance: + value: 15.2 + unit: "cm" "400": # code 305, 306, 307, 311, 601 $ref: "#/components/responses/HTTP_400" "403": @@ -5091,8 +5086,6 @@ components: - $ref: "#/components/schemas/deviceComplexTypeValue" unit: $ref: "#/components/schemas/deviceSimpleTypeValueUnit" - required: - - value deviceParameterSubindexValueGetPost: type: object properties: @@ -5103,8 +5096,6 @@ components: - $ref: "#/components/schemas/deviceComplexTypeValue" unit: $ref: "#/components/schemas/deviceSimpleTypeValueUnit" - required: - - value deviceBlockParameterizationPost: type: object required: From e1e3658abfa66f8b351ae7d9524207433191665f Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 24 Jul 2023 16:50:39 +0200 Subject: [PATCH 052/279] Remove capital "L" of iolinkRevsion property name to be spec conform --- JSON_for_IO-Link.yaml | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index e07875f..e6485f8 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1030,7 +1030,7 @@ paths: Get a list of all IODD (representations) that are available on the Gateway. description: >- Only one version of an IODD is stored on the webserver at the same time - for one vendorId-deviceId-ioLinkRevision-combination. + for one vendorId-deviceId-iolinkRevision-combination. parameters: - $ref: "#/components/parameters/vendorId" - $ref: "#/components/parameters/deviceId" @@ -1797,7 +1797,7 @@ paths: IO-Link: value: statusInfo: "DEVICE_ONLINE" - ioLinkRevision: "1.1" + iolinkRevision: "1.1" transmissionRate: COM2 masterCycleTime: value: 2.3 @@ -1808,7 +1808,7 @@ paths: portQualityInfo: pdInValid: true pdOutValid: true - ioLinkRevision: "1.1" + iolinkRevision: "1.1" inputDataLength: 2 outputDataLength: 2 vendorId: 888 @@ -1973,7 +1973,7 @@ paths: header: vendorId: 15 deviceId: 65253 - ioLinkRevision: "1.1" + iolinkRevision: "1.1" parameterChecksum: 123456 content: >- TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl @@ -2008,7 +2008,7 @@ paths: header: vendorId: 15 deviceId: 65253 - ioLinkRevision: "1.1" + iolinkRevision: "1.1" content: >- TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl Empty Data Storage: @@ -3772,7 +3772,7 @@ components: required: - vendorId - deviceId - - ioLinkRevision + - iolinkRevision - vendorName - productName type: object @@ -3785,7 +3785,7 @@ components: type: integer minimum: 1 maximum: 16777215 - ioLinkRevision: + iolinkRevision: type: string enum: - "1.0" @@ -3841,7 +3841,7 @@ components: example: vendorId: 26 deviceId: 8389226 - ioLinkRevision: "1.1" + iolinkRevision: "1.1" vendorName: SICK AG vendorText: Sensor Intelligence. productName: SLG-2 @@ -4423,7 +4423,7 @@ components: type: string minLength: 26 maxLength: 26 - ioLinkRevision: + iolinkRevision: type: string enum: - "1.1" @@ -4434,11 +4434,11 @@ components: scanResults: - slotType: SSLOT uniqueId: 03:78:00:00:01:32:50:60:46 - ioLinkRevision: "1.1" + iolinkRevision: "1.1" lastSeen: "2022-12-01T08:42:23.314Z" - slotType: DSLOT uniqueId: 03:78:00:00:01:32:50:60:47 - ioLinkRevision: "1.1" + iolinkRevision: "1.1" lastSeen: "2022-12-01T09:42:23.314Z" mastersScanPost: # TODO: IOLW @@ -4529,7 +4529,7 @@ components: - NOT_AVAILABLE # NOT_AVAILABLE - PORT_POWER_OFF # PORT_POWER_OFF - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - ioLinkRevision: + iolinkRevision: description: >- Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or OPERATE. @@ -4896,7 +4896,7 @@ components: required: - vendorId - deviceId - - ioLinkRevision + - iolinkRevision properties: vendorId: type: integer @@ -4906,7 +4906,7 @@ components: type: integer minimum: 1 maximum: 16777215 - ioLinkRevision: + iolinkRevision: type: string enum: - "1.0" @@ -5116,7 +5116,7 @@ components: - deviceId - version - releaseDate - - ioLinkRevision + - iolinkRevision properties: vendorId: type: number @@ -5126,7 +5126,7 @@ components: type: string releaseDate: type: string - ioLinkRevision: + iolinkRevision: type: string enum: - "1.0" @@ -5144,12 +5144,12 @@ components: deviceId: 4567 version: "4.3" releaseDate: "2018-01-02" - ioLinkRevision: "1.1" + iolinkRevision: "1.1" - vendorId: 4321 deviceId: 8765 version: "2.1" releaseDate: "2015-01-02" - ioLinkRevision: "1.1" + iolinkRevision: "1.1" iolinkErrorObject: type: object required: From 5d7ed50fefb4b969439e884a20f4235cdc0d77fb Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 25 Jul 2023 13:48:52 +0200 Subject: [PATCH 053/279] Remove capital "L" of data process iolink property name to be spec conform --- JSON_for_IO-Link.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index e6485f8..2cc66a6 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2238,7 +2238,7 @@ paths: ? "Format=byteArray, CQ in IO-Link (only input), IQ in digital output" : value: getData: - ioLink: + iolink: valid: true value: - 12 @@ -2249,7 +2249,7 @@ paths: ? "Format=iodd, CQ in IO-Link (input and output), IQ in digital input" : value: getData: - ioLink: + iolink: valid: true value: Distance: @@ -2259,7 +2259,7 @@ paths: value: 12 iqValue: true setData: - ioLink: + iolink: valid: true value: Buzzer: @@ -2291,7 +2291,7 @@ paths: examples: ? "format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output" : value: - ioLink: + iolink: valid: true value: - 15 @@ -2343,7 +2343,7 @@ paths: examples: ? "Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input" : value: - ioLink: + iolink: valid: true value: - 12 @@ -2352,7 +2352,7 @@ paths: iqValue: true "Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input": value: - ioLink: + iolink: valid: true value: Distance: @@ -4924,7 +4924,7 @@ components: processDataValue: type: object properties: - ioLink: + iolink: description: Process data in IO-Link mode allOf: - type: object @@ -4960,7 +4960,7 @@ components: (false - 0 V, true - 24 V) example: "format=byteArray, pin4=IO-Link, pin2=sio": - ioLink: + iolink: valid: true value: - 15 @@ -4983,7 +4983,7 @@ components: description: > The cqValue is present in the 'getData' object if the CQ (pin4) is configured as digital input. The cqValue is present in the 'setData' object if the CQ (pin4) - is configured as digital output. The ioLink is present either in the + is configured as digital output. The iolink is present either in the 'getData' or 'setData' or both objects if the CQ (pin4) is configured to IO-Link mode. The iqValue is present in the 'getData' object if the IQ (pin2) is configured as digital input. The iqValue is present in the 'setData' object if the IQ (pin4) From f582350dee4d48431cf5c03029ee189779edf059 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 15 Sep 2023 12:44:18 +0200 Subject: [PATCH 054/279] Add enumeration for schemaVersion 1.0.1 --- JSON_for_IO-Link.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index e07875f..b5ea20d 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5208,6 +5208,7 @@ components: enum: - "1.0" - "1.1" + - "1.0.1" mqttTopicId: name: topicId in: path From 370f14a289c438591d6d3bd7df601cf6cad9bf9c Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 15 Sep 2023 12:45:18 +0200 Subject: [PATCH 055/279] Change description of revision parameter that it refers to the IODD schemaVersion --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index b5ea20d..e15e609 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5201,7 +5201,7 @@ components: revision: name: revision in: query - description: IO-Link Revision + description: schemaVersion of the IODD required: false schema: type: string From 4b2ba4afefbc7ec2740da402ea5af5a53f71c1e6 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Sat, 16 Sep 2023 22:50:05 +0200 Subject: [PATCH 056/279] Create "examples" section. --- JSON_for_IO-Link.yaml | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index ddc139f..9139769 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1279,7 +1279,7 @@ paths: tags: - masters summary: Read the actual configuration of the specified Master. - description: Read the actual configuration of the specified Master, all master configuration items assembled together in a single data object. + description: Read the actual configuration of the specified Master. parameters: - $ref: "#/components/parameters/masterNumber" responses: @@ -5391,36 +5391,10 @@ components: exampleMasterConfiguration: summary: IO-Link Master value: - - "/masters/1/ports/1/configuration": - mode: IOLINK_MANUAL - validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - cycleTime: - value: 2.3 - unit: ms - vendorId: 26 - deviceId: 333 - iqConfiguration: DIGITAL_INPUT - deviceAlias: Distance_sensor_1 - - "/masters/1/ports/1/datastorage": - header: - vendorId: 26 - deviceId: 333 - ioLinkRevision: '1.1' - content: TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl - - "/masters/1/ports/2/configuration": - mode: IOLINK_AUTOSTART - validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - cycleTime: - value: 2.3 - unit: ms - vendorId: 15 - deviceId: 65253 - iqConfiguration: DIGITAL_INPUT exampleWirelessMasterConfiguration: summary: Wireless IO-Link Master value: - - "/masters/1/configuration": masterId: 5 advancedConnectivity: "ahtEnable": false From 68e9e11d0076c06d0e8914270dccbac85760fe88 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Sun, 17 Sep 2023 00:49:21 +0200 Subject: [PATCH 057/279] Removed "login" and "logout" endpoints added instead security scheme identification according to W3C --- JSON_for_IO-Link.yaml | 7642 +++++++++++++++++++---------------------- 1 file changed, 3447 insertions(+), 4195 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 185e136..dec36ca 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1,172 +1,68 @@ -openapi: 3.0.1 +openapi: 3.0.3 info: + version: 1.1.0 + title: JSON for IO-Link Specification description: >- - This is a sample IO-Link Master server. You can find out more about IO-Link - at [http://www.io-link.com](http://www.io-link.com) # Description - ## Error messages - - ### General errors - - * [101] HTTP Status 500: Internal server error - - * [102] HTTP Status 500: Internal communication error - - * [103] HTTP Status 404: Operation not supported - - * [104] HTTP Status 400: Action locked by another client - - Remark: Fieldbus controller or another gateway protocol has claimed priority - - * [105] HTTP Status 501: IODD feature not supported - - * [106] HTTP Status 501: MQTT feature not supported - - * [150] HTTP Status 403: Permission denied - - Remark: due to user management restrictions - - - ### JSON Parsing errors - - * [201] HTTP Status 400: JSON parsing failed - - Remark: Error while parsing the incoming JSON object - - * [202] HTTP Status 400: JSON data value invalid - - Remark: Error while parsing a specific JSON value, e.g. malformed IP address - - * [203] HTTP Status 400: JSON data type invalid - - Remark: e.g. string instead of number - - * [204] HTTP Status 400: Enumeration value unknown - - * [205] HTTP Status 400: JSON data value out of range - - Remark: Exceeds the minimum or maximum value - - * [206] HTTP Status 400: JSON data value out of bounds - - Remark: An array/string was accessed exceeding its maximum length - - * [207] HTTP Status 400: deviceAlias is not unique - - * [208] HTTP Status 400: POST request without content - - ### Resource access errors - - * [301] HTTP Status 404: Resource not found - - Remark: e.g. wrong URL - - * [302] HTTP Status 404: masterNumber not found - - * [303] HTTP Status 404: portNumber not found - - * [304] HTTP Status 404: deviceAlias not found - - * [305] HTTP Status 400: Query parameter name invalid - - * [306] HTTP Status 400: Query parameter value invalid - - * [307] HTTP Status 400: Port is not configured to IO-Link - - Remark: e.g. not in IOLINK_MANUAL or IOLINK_AUTOSTART mode - - * [308] HTTP Status 404: IO-Link Device is not accessible - - Remark: e.g. not connected or communication error - - * [309] HTTP Status 404: IO-Link parameter not found - - * [310] HTTP Status 404: IO-Link parameter access not supported by the Device - - * [311] HTTP Status 400: IO-Link parameter access error - - Remark: The additional iolinkErrorCode and iolinkErrorMessage fields contain - the IO-Link error code and the incident text from the ErrorTypes table - - * [312] HTTP Status 404: IO-Link parameter name is not unique - - Remark: Please use the {name}_{index} format - - ### Data Storage errors - - * [401] HTTP Status 400: Data storage mismatch - - Remark: Mismatch between meta data of device and data storage - - ### Process Data handling - - * [501] HTTP Status 400: I/Q is not configured as DIGITAL_OUTPUT - - * [502] HTTP Status 400: C/Q is not configured as DIGITAL_OUTPUT - - * [503] HTTP Status 400: IO-Link device has no output process data - - - ### IODD errors - - * [601] HTTP Status 400: IODD (representation) is not available - - Remark: IODD representation for this IO-Link Device is not available - - * [602] HTTP Status 500: IODD upload failed: not enough memory - - * [603] HTTP Status 400: IODD upload failed: IODD XML invalid - - Remark: Check the file content superficially to ensure that the - IODD is an XML and an IODD (e.g. vendorId, deviceId, VendorName, ProductName - and other mandatory elements or attributes) - - * [604] HTTP Status 400: IODD upload failed: CRC error + This is an openapi specification for IO-Link gateways, masters and devices. You can find out more about IO-Link + at [http://www.io-link.com](http://www.io-link.com) - * [605] HTTP Status 400: IODD upload failed: parsing error - - Remark: All those systems that do not want to store the IODD have to parse - it immediately + * Draft for version 1.1.0 + # Specification Reference URIs: - ### Data content errors + > [JSON Integration for IO-Link - Draft V2.0](http://www.io-link.com/io-link/10.222/V2.0) + + > [JSON Integration for IO-Link V1.0](http://www.io-link.com/io-link/10.222/V1.0) + + > [IO-Link Interface and System Specification V1.13](http://www.io-link.com/io-link/10.002/V1.13) + + > [IO-Link Wireless System Extensions V1.1](http://www.io-link.com/io-link/10.122/V1.1) + + > [Web of Things (WoT) Thing Description 1.1](https://www.w3.org/2022/wot/td/v1.1) - * [701] HTTP Status 400: Data set incomplete + # Disclaimer: - * [702] HTTP Status 400: Data set not applicable - - Remark: whole data set is rejected + >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. - * [703] HTTP Status 400: Data set combination incompatible - - Remark: whole data set is rejected + >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. - ### Implementation hints: - * If there is more than one error in the request, the parsing is stopped and - just the first detected error is returned. + >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. - * Errors [101], [150] can be returned to every request. - * Error [103] can be returned to every request which is not included - in the base facet. + >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). - * Specific error messages have to be provided only if the corresponding - operation is supported. So you do not need to give specific errors for bad - IODDs if you do not support the IODD Facet, just indicate error [105]. - * Error [301] can be returned to every request where there is a - variable in the URL. + >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. - * If the request was successful and no body is specified, the response - contains nothing in the body. + --- - version: 1.0.0 - title: Swagger IO-Link Master contact: - email: lorand.molnar@teconcept.de + email: info@io-link.com license: - name: Apache 2.0 - url: 'http://www.apache.org/licenses/LICENSE-2.0.html' + name: Legal Information + url: "https://io-link.com/en/Global/Impressum.php" + servers: - - url: '{scheme}://{host}/{basePath}' + - url: "{scheme}://{host}/{basePath}" variables: + host: + default: "iolmaster.io-link.com" basePath: default: iolink/v1 - host: - default: 'iolmaster.io-link.com' scheme: - description: 'The IO-Link gateway can expose the API over https and/or http' + description: "The IO-Link gateway can expose the API over https and/or http" enum: - - 'https' - - 'http' - default: 'http' + - "https" + - "http" + default: "http" tags: + - name: general + description: Access to general informations - name: gateway description: Access to parameters of the JSON gateway - name: mqtt @@ -178,94 +74,334 @@ tags: - name: ports description: Access to the IO-Link ports of the IO-Link master - name: devices - description: Access to the IO-Link Devices connected to the Master + description: Access to the IO-Link Devices connected ot the Master + paths: - '/gateway/identification': + ################################################################################ + # general + ################################################################################ + "/": get: - description: Read the identification data of the Gateway - operationId: getGateywayIdentification tags: - - gateway - summary: Read the identification of the Gateway. + - general + summary: This endpoint provides information about the security mechanisms to be used for interactions + description: >- + Returns the available security mechanisms that must be used for interactions according to the [WoT definitions](https://www.w3.org/TR/wot-thing-description11/) + operationId: getRootInfo + responses: + "200": + description: OK + content: + application/json: + examples: + "no_security": + description: no authorization or other access control mechanisms are used + value: + "@context": https://www.w3.org/2022/wot/td/v1.1 + securityDefinitions: + nosec_sc: + scheme: nosec + security: + - nosec_sc + "basic_security": + description: Unencrypted username and password sent with every request [RFC7617]. + value: + "@context": https://www.w3.org/2022/wot/td/v1.1 + securityDefinitions: + basic_sc: + scheme: basic + in: header + security: basic_sc + "bearer_security": + description: Bearer Token [RFC6750] security used independently of OAuth2. Base URI and relative links to the login and logout endpoints are provided. + value: + "@context": https://www.w3.org/2022/wot/td/v1.1 + securityDefinitions: + bearer_sc: + scheme: bearer + in: header + format: jws + scopes: + - Operator + - Maintenance + - Specialist + security: basic_sc + base: https://iolmaster.io-link.com + links: + - href: /auth/login + rel: login + - href: /auth/logout + rel: logout + "oauth2_security": + description: OAuth 2.0 authentication security configuration for systems conformant with [RFC6749] and [RFC8252] + value: + "@context": https://www.w3.org/2022/wot/td/v1.1 + securityDefinitions: + oauth2_sc: + scheme: oauth2 + flow: client + token: https://example.com/token + scopes: + - Operator + - Maintenance + security: oauth2_sc + "proxy_security": + description: Digest authentication on a proxy combined with bearer token authentication on the IO-Link gateway + value: + "@context": https://www.w3.org/2022/wot/td/v1.1 + securityDefinitions: + proxy_sc: + scheme: digest + proxy: https://portal.example.com/ + bearer_sc: + scheme: bearer + in: header + format: jwt + alg: ES256 + authorization: https://authserver.example.com:8443/ + security: + - proxy_sc + - bearer_sc + "/openapi": + get: + tags: + - general + operationId: getOpenApiDocument + summary: >- + Get the OpenAPI interface description of the IO-Link Master. + description: >- + Get the REST interface description of the IO-Link API as OpenAPI YAML + document. responses: - '200': + "200": description: Successful operation content: - application/json: + application/text: schema: - $ref: '#/components/schemas/gatewayIdentificationGet' - '403': + type: string + examples: + "url-github": + value: https://github.com/iolinkcommunity/JSON_for_IO-Link/blob/1.0.0/JSON_for_IO-Link.yaml + "url-vendor": + value: >- + https://www.iolink-master-vendor.com/de/de/p/p672882 + application/yaml: + example: + "yaml": + value: >- + openapi: 3.0.3 + info: + description: >- + This is a sample IO-Link Master server. You can find out more about IO-Link + at [http://www.io-link.com](http://www.io-link.com) + # Description + * Draft for version 1.x + ## Disclaimer: + >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. + >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. + >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. + >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). + + + >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. + version: 1.1.0 + title: Swagger IO-Link Master + contact: + email: info@io-link.com + license: + name: tbd + url: 'http://www.io-link.com' + ... + application/json: + example: + "json": + value: + { + "openapi": "3.0.3", + "info": null, + "description": "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 1.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", + "version": "1.1.0", + "title": "Swagger IO-Link Master", + "contact": { "email": "info@io-link.com" }, + "license": + { "name": "tbd", "url": "http://www.io-link.com" }, + ...: "to be continued", + } + "403": description: Forbidden content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: "150": value: code: 150 message: Permission denied - '500': + "500": description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: "101": value: code: 101 message: Internal server error - '/gateway/capabilities': + /apiversion: get: - description: Read the capatibities of the Gateway - operationId: getGateywayCapabilities tags: - - gateway - summary: Read the capabilities of the Gateway. + - general + operationId: getApiVersion + summary: Get the REST interface version identification. + description: >- + This version relates to the released version by the iolink community on github (e.g. https://github.com/iolinkcommunity/JSON_for_IO-Link/releases). It can be extended by vendor specific parts. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayCapabilitiesGet' - '403': + type: object + required: + - version + properties: + version: + type: string + additionalInfo: + type: string + examples: + "mandatory": + value: + version: 1.0.0 + "optional addition": + value: + version: 1.0.0 + additionalInfo: 1.2.3-feature-xyz + "403": description: Forbidden content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: "150": value: code: 150 message: Permission denied - '500': + "500": description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/errorObject" examples: "101": value: code: 101 message: Internal server error - '/gateway/configuration': + + "/gateways": + get: + operationId: GetGateways + tags: + - general + summary: Read the known IO-Link gateways as list of URLs. + description: >- + This command is optional. + responses: + "200": + description: Successful operation + content: + application/json: + schema: + type: array + items: + type: object + required: + - gatewayUrl + properties: + gatewayUrl: + type: string + masterNumber: + type: integer + minimum: 1 + portNumber: + type: integer + minimum: 1 + examples: + self: + value: + - gatewayAlias: gateway1 + gatewayUrl: "http://gateway1" + multiple: + value: + - gatewayAlias: gateway1 + gatewayUrl: "http://gateway1" + - gatewayAlias: gatewayXYZ + gatewayUrl: "http://gatewayXYZ" + - gatewayAlias: BNI_IOL + gatewayUrl: "https://BNI_IOL/" + - gatewayAlias: master_ABC + gatewayUrl: "https://192.168.88.191" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + ################################################################################ + # gateway + ################################################################################ + "/gateway/identification": + get: + operationId: GetGatewayIdentification + tags: + - gateway + summary: Read the identification of the Gateway. + description: Read the identification of the Gateway. + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/gatewayIdentificationGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/gateway/capabilities": + get: + operationId: PostGatewayCapabilities + tags: + - gateway + summary: Read the capabilities of the Gateway. + description: Read the capabilities of the Gateway. + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/gatewayCapabilitiesGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/gateway/configuration": get: + operationId: GetGatewayConfiguration tags: - gateway - summary: Read the network configuration of the Gateway. + summary: Read the configuration of the Gateway. description: Read the actual active configuration of the IO-Link Gateway. The Gateway may support multiple IPv4 interfaces - operationId: getGatewayConfiguration responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayConfigurationGetPost' + $ref: "#/components/schemas/gatewayConfigurationGetPost" examples: Manual: value: @@ -278,52 +414,43 @@ paths: value: ethIpv4: - ipConfiguration: DHCP + ipAddress: 192.168.100.5 + subnetMask: 255.255.255.0 + standardGateway: 192.168.100.1 Multiple ethernet interfaces: value: ethIpv4: - - ipConfiguration: MANUAL + - ifName: eth0 + ipConfiguration: MANUAL ipAddress: 192.168.1.13 subnetMask: 255.255.255.0 standardGateway: 192.168.1.1 - - ipConfiguration: MANUAL + - ifName: eth1 + ipConfiguration: MANUAL ipAddress: 192.168.2.10 subnetMask: 255.255.255.0 standardGateway: 192.168.2.1 - - ipConfiguration: DHCP - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error + - ifName: eth2 + ipConfiguration: DHCP + ipAddress: 192.168.200.7 + subnetMask: 255.255.255.0 + standardGateway: 192.168.200.1 + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" post: - description: Write a new network configuration of the Gateway - operationId: postGatewayConfiguration + operationId: PostGatewayConfiguration tags: - gateway - summary: Write the network configuration of the Gateway. + summary: Write the configuration of the Gateway. + description: Write the configuration of the Gateway. requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/gatewayConfigurationGetPost' + $ref: "#/components/schemas/gatewayConfigurationGetPost" examples: Manual: value: @@ -339,211 +466,95 @@ paths: Multiple ethernet interfaces: value: ethIpv4: - - ipConfiguration: MANUAL + - ifName: eth0 + ipConfiguration: MANUAL ipAddress: 192.168.1.13 subnetMask: 255.255.255.0 standardGateway: 192.168.1.1 - - ipConfiguration: MANUAL + - ifName: eth1 + ipConfiguration: MANUAL ipAddress: 192.168.2.10 subnetMask: 255.255.255.0 standardGateway: 192.168.2.1 - - ipConfiguration: DHCP + - ifName: eth2 + ipConfiguration: DHCP responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "701": - value: - code: 701 - message: Data set incomplete - "702": - value: - code: 702 - message: Data set not applicable - "703": - value: - code: 703 - message: Data set combination incompatible + "400": # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '/gateway/reset': + "/gateway/reset": post: + operationId: PostGatewayReset tags: - gateway summary: Reset the Gateway including all Masters. Optional. - description: Invoke a reset of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog - operationId: postGatewayReset + description: Invoke a reset of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog. responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '/gateway/reboot': + "400": # code 104 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + + "/gateway/reboot": post: + operationId: PostGatewayReboot tags: - gateway summary: Reboot the Gateway including all Masters. Optional. description: Invoke a reboot of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog - operationId: postGatewayReboot responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '/gateway/events': + "400": # code 104 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + + "/gateway/events": get: + operationId: GetGatewayEvents tags: - gateway summary: Read the EventLog containing all events from Gateway, Masters, Ports and Devices. - description: > - Each Gateway shall have an Event Log object containing the events of the devices, ports and - the masters. The content of the Event Log can be read by getting the object “Gateway Event Log” - operationId: getGatewayEvents + description: + Each Gateway shall have an Event Log object containing the events of the devices, ports and + the masters. The content of the Event Log can be read by getting the object "Gateway Event Log" parameters: - - $ref: '#/components/parameters/eventOrigin' - - $ref: '#/components/parameters/eventMasterNumber' - - $ref: '#/components/parameters/eventPortNumber' - - $ref: '#/components/parameters/eventdeviceAlias' - - $ref: '#/components/parameters/eventTop' - - $ref: '#/components/parameters/eventBottom' + - $ref: "#/components/parameters/eventOrigin" + - $ref: "#/components/parameters/eventMasterNumber" + - $ref: "#/components/parameters/eventPortNumber" + - $ref: "#/components/parameters/eventdeviceAlias" + - $ref: "#/components/parameters/eventTop" + - $ref: "#/components/parameters/eventBottom" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/gatewayEventsGet' + $ref: "#/components/schemas/gatewayEventsGet" examples: origin=ALL: value: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 message: text: IO-Link Master has restarted - - time: '2018-05-18T07:32:42.023Z' + - time: "2018-05-18T07:32:42.023Z" severity: ERROR origin: masterNumber: 1 @@ -552,7 +563,7 @@ paths: code: 6163 mode: APPEARS text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 @@ -564,7 +575,7 @@ paths: text: Device temperature over-run – Clear source of heat origin=MASTERS: value: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 @@ -572,7 +583,7 @@ paths: text: IO-Link Master has restarted origin=PORTS: value: - - time: '2018-05-18T07:32:42.023Z' + - time: "2018-05-18T07:32:42.023Z" severity: ERROR origin: masterNumber: 1 @@ -581,7 +592,7 @@ paths: code: 6163 mode: APPEARS text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:33:42.023Z' + - time: "2018-05-18T07:33:42.023Z" severity: ERROR origin: masterNumber: 1 @@ -590,7 +601,7 @@ paths: code: 6163 mode: DISAPPEARS text: Overcurrent at C/Q (if digital output) - check load - - time: '2018-05-18T07:35:54.123Z' + - time: "2018-05-18T07:35:54.123Z" severity: NOTICE origin: masterNumber: 1 @@ -601,7 +612,7 @@ paths: text: New slave origin=DEVICES: value: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: masterNumber: 1 @@ -611,7 +622,7 @@ paths: code: 16912 mode: APPEARS text: Device temperature over-run – Clear source of heat - - time: '2018-05-18T08:31:54.123Z' + - time: "2018-05-18T08:31:54.123Z" severity: ERROR origin: masterNumber: 1 @@ -621,261 +632,136 @@ paths: code: 20480 mode: APPEARS text: Device hardware fault – Device exchange - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '/mqtt/configuration': + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + delete: + operationId: DeleteGatewayEvents + tags: + - gateway + summary: Delete events of Gateway, Masters, Ports and Devices from EventLog according to filter query. + description: Delete events of Gateway, Masters, Ports and Devices from EventLog according to filter query. + parameters: + - $ref: "#/components/parameters/eventOrigin" + - $ref: "#/components/parameters/eventMasterNumber" + - $ref: "#/components/parameters/eventPortNumber" + - $ref: "#/components/parameters/eventdeviceAlias" + - $ref: "#/components/parameters/eventTop" + - $ref: "#/components/parameters/eventBottom" + responses: + "200": + description: Successful operation + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + + ################################################################################ + # mqtt + ################################################################################ + + "/mqtt/configuration": get: + operationId: GetMqttConfiguration tags: - mqtt summary: >- Read the MQTT configuration of the Gateway. - description: Read the MQTT configuraiton of the Gateway - operationId: getMqttConfiguration + description: Read the MQTT configuration of the Gateway. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationGetPost' + $ref: "#/components/schemas/mqttConfigurationGetPost" examples: Active client: value: clientMode: "ACTIVE" - serverAddress: 192.168.2.1/mqttbroker + serverAddress: 192.168.2.1:1883/mqttbroker username: iolink_json - password: '1234' + password: "1234" lastwill: - - topic: process_data - message: Process data transfer stopped. - qos: 0_ONLY_ONCE - retain: true + topic: process_data + message: Process data transfer stopped. + qos: 0_ONLY_ONCE + retain: true keepAliveTime: 10 Inactive client: value: clientMode: "INACTIVE" - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "106": - value: - code: 106 - message: MQTT feature not supported + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + post: + operationId: PostMqttConfiguration tags: - mqtt summary: >- Update the MQTT configuration of the Gateway. description: Update the MQTT configuration of the Gateway. - operationId: postMqttConfiguration requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationGetPost' + $ref: "#/components/schemas/mqttConfigurationGetPost" examples: Active Client: value: clientMode: ACTIVE - serverAddress: 192.168.2.1/mqttbroker + serverAddress: 192.168.2.1:1883/mqttbroker username: iolink_json - password: '1234' + password: "1234" lastwill: - - topic: process_data - message: Process data transfer stopped. - qos: 0_ONLY_ONCE - retain: true + topic: process_data + message: Process data transfer stopped. + qos: 0_ONLY_ONCE + retain: true keepAliveTime: 10 Inactive Client: value: clientMode: INACTIVE responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "701": - value: - code: 701 - message: Data set incomplete - "702": - value: - code: 702 - message: Data set not applicable - "703": - value: - code: 703 - message: Data set combination incompatible - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "106": - value: - code: 106 - message: MQTT feature not supported - '/mqtt/topics': + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/mqtt/topics": get: + operationId: GetMqttTopics tags: - mqtt summary: Get the list of MQTT topics. description: Get the list of MQTT topics. - operationId: GetMqttTopics responses: - '200': + "200": description: Successful operation content: application/json: schema: type: array items: - $ref: '#/components/schemas/mqttConfigurationTopicGet' + $ref: "#/components/schemas/mqttConfigurationTopicGet" example: - topicId: 1 topicName: Sensor34/processData @@ -900,62 +786,45 @@ paths: direction: getSetData format: iodd onChange: true - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "106": - value: - code: 106 - message: MQTT feature not supported + - topicId: 4 + topicName: DT35_CycleTime + qos: 0_ONLY_ONCE + deviceAlias: DT35 + parameter: + parametereName: Direct_Parameters_1 + subParameterName: Min_Cycle_Time + format: iodd + onChange: true + - topicId: 5 + topicName: deviceTemperature + qos: 0_ONLY_ONCE + deviceAlias: master1port2 + parameter: + index: 153 + format: byteArray + interval: + value: 10 + unit: ms + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: + operationId: PostMqttTopicsTopicId tags: - mqtt summary: Create a new MQTT topic. description: Create a new MQTT topic. - operationId: postMqttTopics requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationTopicPost' + $ref: "#/components/schemas/mqttConfigurationTopicPost" examples: Process Data: value: @@ -972,120 +841,60 @@ paths: qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 event: {} + Parameter (Index): + value: + qos: 0_ONLY_ONCE + deviceAlias: master1port1 + parameter: + index: 86 + format: byteArray + interval: + value: 10 + unit: ms + Parameter (ParameterName): + value: + topicName: deviceTemperature + qos: 0_ONLY_ONCE + deviceAlias: AHM36A + parameter: + parameterName: Temperature1 + format: iodd + interval: + value: 1000 + unit: ms responses: - '200': + "200": description: Successful operation returning the topic ID content: application/json: schema: type: integer - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "701": - value: - code: 701 - message: Data set incomplete - "702": - value: - code: 702 - message: Data set not applicable - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "106": - value: - code: 106 - message: MQTT feature not supported - '/mqtt/topics/{topicId}': + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + "/mqtt/topics/{topicId}": get: + operationId: GetMqttTopicsTopicId tags: - mqtt summary: Get one MQTT topic. - description: Get one MQTT topic - operationId: getMqttTopicsTopicId + description: Get one MQTT topic. parameters: - - $ref: '#/components/parameters/mqttTopicId' + - $ref: "#/components/parameters/mqttTopicId" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/mqttConfigurationTopicGet' + $ref: "#/components/schemas/mqttConfigurationTopicGet" examples: Process Data: value: @@ -1106,184 +915,88 @@ paths: qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 event: {} - '403': - description: Forbidden + Parameter (Index): + value: + topicId: 3 + topicName: devvice/indexXY + qos: 0_ONLY_ONCE + deviceAlias: master1port1 + parameter: + index: 86 + format: byteArray + interval: + value: 10 + unit: ms + Parameter (ParameterName): + value: + topicId: 5 + topicName: deviceTemperature + qos: 0_ONLY_ONCE + deviceAlias: AHM36A + parameter: + parameterName: Temperature1 + format: iodd + interval: + value: 1000 + unit: ms + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + delete: + operationId: DeleteMqttTopicsTopicId + tags: + - mqtt + summary: Delete a specific MQTT topic. + description: Delete a specific MQTT topic. + parameters: + - $ref: "#/components/parameters/mqttTopicId" + responses: + "204": + description: Successful operation + "400": # code 104 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + "/mqtt/connectionstatus": + get: + operationId: GetMqttConnectionstatus + tags: + - mqtt + summary: Read the connection status of the MQTT client to the MQTT server. + description: Read the connection status of the MQTT client to the MQTT server. + responses: + "200": + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "301": - value: - code: 301 - message: Resource not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "106": - value: - code: 106 - message: MQTT feature not supported - delete: - tags: - - mqtt - summary: Delete a specific MQTT topic. - description: Delete a specific MQTT topic. - operationId: deleteMqttTopicsTopicsId - parameters: - - $ref: '#/components/parameters/mqttTopicId' - responses: - '204': - description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "301": - value: - code: 301 - message: Resource not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "106": - value: - code: 106 - message: MQTT feature not supported - '/mqtt/connectionstatus': - get: - tags: - - mqtt - summary: Read the connection status of the MQTT client to the MQTT server. - description: Read the connection status of the MQTT client to the MQTT server. - operationId: GetMqttConnectionstatus - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/mqttConnectionStatusGet' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '150': - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '103': - value: - code: 103 - message: Operation not supported - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '101': - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "106": - value: - code: 106 - message: MQTT feature not supported - '/iodds': + $ref: "#/components/schemas/mqttConnectionStatusGet" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + ################################################################################ + # iodds + ################################################################################ + "/iodds": get: + operationId: GetIodds tags: - iodds summary: >- @@ -1291,513 +1004,489 @@ paths: description: >- Only one version of an IODD is stored on the webserver at the same time for one vendorId-deviceId-ioLinkRevision-combination. - operationId: getIodds parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' + - $ref: "#/components/parameters/vendorId" + - $ref: "#/components/parameters/deviceId" + - $ref: "#/components/parameters/revision" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/ioddsGet' - '400': - description: Bad Request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported + $ref: "#/components/schemas/ioddsGet" + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" delete: + operationId: DeleteIodds tags: - iodds summary: Delete a specific IODD representation. description: Delete a specific IODD representation. - operationId: deleteIodds parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' + - $ref: "#/components/parameters/vendorId" + - $ref: "#/components/parameters/deviceId" + - $ref: "#/components/parameters/revision" responses: - '204': + "204": description: Successful operation - '400': - description: Bad Request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "301": - value: - code: 301 - message: Resource not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/iodds/file': + "400": # code 104, 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + "/iodds/file": get: + operationId: GetIoddsFile tags: - iodds summary: Get a specific IODD. Optional. description: All query parameters are mandatory. - operationId: getIoddsFile parameters: - - $ref: '#/components/parameters/vendorId' - - $ref: '#/components/parameters/deviceId' - - $ref: '#/components/parameters/revision' + - $ref: "#/components/parameters/vendorId" + - $ref: "#/components/parameters/deviceId" + - $ref: "#/components/parameters/revision" responses: - '200': + "200": description: Successful operation content: application/xml: schema: - $ref: '#/components/schemas/ioddFile' - example: - "IODD XML file" - '400': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "301": - value: - code: 301 - message: Resource not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported + $ref: "#/components/schemas/ioddFile" + example: "IODD XML file" + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: + operationId: PostIoddsFile tags: - iodds summary: Store or update an IODD. description: > It is not needed to specify the identification data for this action as the parser can read this information. - operationId: postIoddsFile requestBody: required: true content: application/xml: schema: - $ref: '#/components/schemas/ioddFile' - example: - "IODD XML file" + $ref: "#/components/schemas/ioddFile" + example: "IODD XML file" responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "208": - value: - code: 208 - message: POST request without content - "603": - value: - code: 603 - message: IODD upload failed. IODD XML invalid - "604": - value: - code: 604 - message: IODD upload failed. CRC error - "605": - value: - code: 605 - message: IODD upload failed. Parsing error - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "602": - value: - code: 602 - message: IODD upload failed. Not enough memory - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/masters': + "400": # code 104, 208, 603, 604, 605 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": # code 101, 602 + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + ################################################################################ + # masters + ################################################################################ + "/masters": get: + operationId: GetMasters tags: - masters summary: >- Read all the available masterNumber keys with the corresponding identification information. - description: >- - Read all the available masterNumber keys with the corresponding - identification information. - operationId: getMasters + description: Read all the available masterNumber keys with the corresponding identification information. responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/identificationMasters' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/capabilities': + $ref: "#/components/schemas/identificationMasters" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/capabilities": get: + operationId: GetMastersMasterNumberCapabilities tags: - masters summary: Read the capabilities of the Master. description: Read the capabilities of the Master. - operationId: getMastersMasterNumberCapabilities parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/masterCapabilitiesGet' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/masterCapabilitiesGet" examples: - "150": + IO-Link: value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "302": - value: - code: 302 - message: masterNumber not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": + numberOfPorts: 8 + maxPowerSupply: # max power supply per port + value: 0.3 + unit: A + IO-Link_Wireless: value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/identification': + numberOfPorts: 40 + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/identification": get: + operationId: GetMastersMasterNumberIdentification tags: - masters summary: Read the identification of the Master. description: Read the identification of the Master. - operationId: getMastersMasterNumberIdentification parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/identificationGet' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "302": - value: - code: 302 - message: masterNumber not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error + $ref: "#/components/schemas/masterIdentificationGet" + examples: + IO-Link: + value: + vendorName: Vendor GmbH + vendorId: 26 + masterId: 42 + masterType: Master acc. V1.0 + serialNumber: IOLM123456 + orderCode: PROD-123456 + productName: IO-Link Master + productId: PROD-123456 + hardwareRevision: "3.2.1.444R" + firmwareRevision: "3.2.1.888R" + vendorUrl: "http://www.io-link.com/io-link-master" + manualUrl: "http://www.io-link.com/io-link-master/documentation.pdf" + applicationSpecificTag: End of the belt + locationTag: Down under + functionTag: Code reading + IO-Link_Wireless: + value: + vendorName: Vendor GmbH + vendorId: 01 + masterId: 22 + masterType: Wireless_Master + serialNumber: IOLWM123456 + orderCode: PROD6789 + productName: IO-Link Wireless Master + productId: PROD6789 + hardwareRevision: "1" + firmwareRevision: "2.0.0" + vendorUrl: "http://www.io-link.com" + productInstanceUri: "http://www.io-link.com/PROD123456/IOLWM123456" + descriptionFileUri: "https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml" + manualUrl: "http://www.io-link.com/io-link-master/documentation.pdf" + applicationSpecificTag: "***" + locationTag: "***" + functionTag: "***" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: + operationId: PostMastersMasterNumberIdentification tags: - masters summary: Write application specific identification to a Master. description: Write application specific identification to a Master. - operationId: postMastersMasterNumberIdentification parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/identificationPost' + $ref: "#/components/schemas/masterIdentificationPost" examples: All optional fiels: value: - applicationSpecificTag: Fallback reader at the end of the belt + applicationSpecificTag: Fallback reader at the end locationTag: Down under functionTag: Code reading responses: - '204': + "204": + description: Successful operation + "400": # code 104, 201, 202, 203, 206, 208 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/configuration": #TODO: wireles + get: + operationId: GetMastersMasterNumberConfiguration + tags: + - masters + summary: Read the actual configuration of the specified Master. + description: Read the actual configuration of the specified Master. + parameters: + - $ref: "#/components/parameters/masterNumber" + responses: + "200": description: Successful operation - '400': - description: Bad request content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/mastersConfigurationGetPost" + examples: + IO-Link: + value: + IO-Link_Wireless: + value: + masterId: 5 + advancedConnectivity: + "ahtEnable": false + pairingTimeout: + value: 25 + unit: s + serviceTrackNumber: 1 + serviceTrackMode: CYCLIC + trackTxPower: + "track_1": 31 + "track_2": 31 + "track_3": 31 + "track_4": 0 + "track_5": 0 + blockList: + "2402": false + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + post: + operationId: PostMastersMasterNumberConfiguration + tags: + - masters + summary: Write the configuration of the specified Master. + description: Write the configuration of the specified Master. + parameters: + - $ref: "#/components/parameters/masterNumber" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/mastersConfigurationGetPost" + examples: + IO-Link: + value: + IO-Link_Wireless: + value: + masterId: 5 + advancedConnectivity: + "ahtEnable": false + pairingTimeout: + value: 25 + unit: s + serviceTrackNumber: 1 + serviceTrackMode: CYCLIC + trackTxPower: + "track_1": 31 + "track_2": 31 + "track_3": 31 + "track_4": 0 + "track_5": 0 + blockList: + "2402": false + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false + responses: + "204": + description: Successful operation + "400": + description: Bad request + content: + application/json: examples: "104": value: @@ -1823,313 +1512,363 @@ paths: value: code: 208 message: POST request without content - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "302": - value: - code: 302 - message: masterNumber not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/ports': + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/trackstatus": #TODO: wireles get: + operationId: GetMastersMasterNumberTrackstatus tags: - - ports - summary: Read all the available portNumber keys with the corresponding identification information. - description: >- - Read all the available portNumber keys with the corresponding identification information. - operationId: getMastersMasterNumberPorts + - masters + summary: Read the actual Track status of the specified Wireless-Master. + description: Read the actual Track status of the specified Wireless-Master. parameters: - - $ref: '#/components/parameters/masterNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - type: array - items: - type: object - required: - - portNumber - - statusInfo - - deviceAlias - properties: - portNumber: - type: integer - minimum: 1 - statusInfo: - type: string - deviceAlias: - type: string - example: - - portNumber: 1 - statusInfo: "DEVICE_ONLINE" - deviceAlias: "Distance_Sensor" - - portNumber: 2 - statusInfo: "DEVICE_ONLINE" - deviceAlias: "Pressure_Sensor" - - portNumber: 3 - statusInfo: "DIGITAL_INPUT_C/Q" - deviceAlias: "Switching_Sensor" - - portNumber: 4 - statusInfo: "DEACTIVATED" - deviceAlias: "Empty_port" - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "302": - value: - code: 302 - message: masterNumber not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/ports/{portNumber}/capabilities': + $ref: "#/components/schemas/mastersTrackstatusGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/scan": #TODO: wireles get: + operationId: GetMastersMasterNumberScan tags: - - ports - summary: Read the capability information of the specified port. - description: Read the capability information of the specified port. - operationId: getMastersMasterNumberPortsPortNumberCapabilities + - masters + summary: Read the actual scan results of the specified Wireless-Master. + description: Read the actual scan results of the specified Wireless-Master. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/portCapabilitiesGet' - '403': - description: Forbidden + $ref: "#/components/schemas/mastersScanGet" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + post: + operationId: PostMastersMasterNumberScan + tags: + - masters + summary: To start a scan of the specified Wireless-Master. + description: To start a scan of the specified Wireless-Master. + parameters: + - $ref: "#/components/parameters/masterNumber" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/mastersScanPost" + responses: + "204": + description: Successful operation + "400": + description: Bad request content: application/json: - schema: - $ref: '#/components/schemas/errorObject' examples: - "150": + "104": value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "302": + code: 104 + message: Action locked by another client + "201": value: - code: 302 - message: masterNumber not found - "303": + code: 201 + message: JSON parsing failed + "202": value: - code: 303 - message: portNumber not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": + code: 202 + message: JSON data value invalid + "203": value: - code: 101 - message: Internal server error - "102": + code: 203 + message: JSON data type invalid + "206": + value: + code: 206 + message: JSON data value out of bounds + "208": value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/ports/{portNumber}/status': + code: 208 + message: POST request without content + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + + ################################################################################ + # ports + ################################################################################ + "/masters/{masterNumber}/ports": get: + operationId: GetMastersMasterNumberPorts tags: - ports - summary: Read the actual status of the selected port. - description: Read the actual status of the selected port. - operationId: getMastersMasterNumberPortsPortNumberStatus + summary: Read all the available portNumber keys with the corresponding identification information. + description: Read all the available portNumber keys with the corresponding identification information. parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/portStatusGet' - '403': - description: Forbidden + $ref: "#/components/schemas/mastersPortsGet" + examples: + IO-Link: + value: + - portNumber: 1 + statusInfo: "DEVICE_ONLINE" + deviceAlias: "Distance_Sensor" + - portNumber: 2 + statusInfo: "DIGITAL_INPUT_C/Q" + deviceAlias: "Switching_Sensor" + - portNumber: 4 + statusInfo: "DEACTIVATED" + deviceAlias: "Empty_port" + IO-Link_Wireless: + value: + - portNumber: 1 + deviceAlias: "Port_X01" + statusInfo: "DEVICE_ONLINE" + slotNumber: 2 + trackNumber: 1 + slotType: "SSLOT" + deviceInfo: + vendorId: 888 + deviceId: 10485760 + productName: "BNI IOW-302-W01-K080" + - portNumber: 4 + statusInfo: "DEACTIVATED" + deviceAlias: "Empty_port" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/qualityall": + get: + operationId: GetMastersMasterNumberPortsQuality + tags: + - ports + parameters: + - $ref: "#/components/parameters/masterNumber" + summary: Read the link quality and the RSSI of all used Wireless-Ports (Wireless-Device and Wireless-Master). + description: Read the link quality and the RSSI of all used Wireless-Ports (Wireless-Device and Wireless-Master). + responses: + "200": + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found + $ref: "#/components/schemas/mastersPortsQualityallGet" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/{portNumber}/capabilities": + get: + operationId: GetMastersMasterNumberPortsPortNumberCapabilities + tags: + - ports + summary: Read the capability information of the specified port. + description: Read the capability information of the specified port. + parameters: + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" + responses: + "200": + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - "302": - value: - code: 302 - message: masterNumber not found - "303": - value: - code: 303 - message: portNumber not found - '500': - description: Internal server error + $ref: "#/components/schemas/portCapabilitiesGet" + examples: + CLASS_A: + value: + maxPowerSupply: + value: 0.3 + unit: A + portType: CLASS_A + CLASS_B: + value: + maxPowerSupply: + value: 2.0 + unit: A + portType: CLASS_B + CLASS_A_WITH_PORT_POWER_OFF_ON: + value: + maxPowerSupply: + value: 0.3 + unit: A + portType: CLASS_A_WITH_PORT_POWER_OFF_ON + FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS: + value: + maxPowerSupply: + value: 0.2 + unit: A + portType: FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS + FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS: + value: + maxPowerSupply: + value: 0.2 + unit: A + portType: FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS + FAILSAFE_PORT_B: + value: + maxPowerSupply: + value: 2.0 + unit: A + portType: FAILSAFE_PORT_B + IO-Link_Wireless: + value: + portType: WIRELESS_MASTER + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/{portNumber}/status": + get: + operationId: GetMastersMasterNumberPortsPortNumberStatus + tags: + - ports + summary: Read the actual status of the selected port. + description: Read the actual status of the selected port. + parameters: + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" + responses: + "200": + description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/mastersPortsStatusGet" examples: - "101": - value: - code: 101 - message: Internal server error - "102": + IO-Link: value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/ports/{portNumber}/configuration': + statusInfo: "DEVICE_ONLINE" + ioLinkRevision: "1.1" + transmissionRate: COM2 + masterCycleTime: + value: 2.3 + unit: ms + IO-Link_Wireless: + value: + statusInfo: DEVICE_ONLINE + portQualityInfo: + pdInValid: true + pdOutValid: true + ioLinkRevision: "1.1" + inputDataLength: 2 + outputDataLength: 2 + vendorId: 888 + deviceId: 1 + wMasterCycleTimeOut: + base: FreeRunning + wMasterCycleTimeIn: + base: FreeRunning + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/ports/{portNumber}/configuration": get: + operationId: GetMastersMasterNumberPortsPortNumberConfiguration tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Read the actual configuration of the specified port. description: Read the actual configuration of the specified port. - operationId: getMastersMasterNumberPortsPortNumberConfiguration responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/portConfigurationGet' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "302": - value: - code: 302 - message: masterNumber not found - "303": - value: - code: 303 - message: portNumber not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/portConfigurationGet" examples: - "101": - value: - code: 101 - message: Internal server error - "102": + IO-Link: value: - code: 102 - message: Internal communication error + mode: IOLINK_MANUAL + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + iqConfiguration: DIGITAL_INPUT + cycleTime: + value: 2.3 + unit: ms + vendorId: 26 + deviceId: 333 + deviceAlias: Distance_sensor_1 + IO-Link_Wireless: + value: + mode: WIOLINK_CYCLIC_AUTOPAIRING + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + iqConfiguration: NOT_SUPPORTED + vendorId: 888 + deviceId: 1 + slotNumber: 1 + trackNumber: 5 + deviceTxPower: 31 + maxRetry: 20 + imaTime: + base: 1664us + multiplier: 60 + slotType: SSLOT + lowEnergyDevice: false + maxPDSegLength: 0 + wMasterCycleTimeOut: + base: FreeRunning + wMasterCycleTimeIn: + base: FreeRunning + uniqueId: 03:78:00:00:01:32:50:60:46 + deviceAlias: Port_X01 + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: + operationId: PostMastersMasterNumberPortsPortNumberConfiguration tags: - ports summary: Write the configuration of the specified port. description: Write the configuration of the specified port. - operationId: postMastersMasterNumbersPortsPortNumberConfiguration parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/portConfigurationPost' + $ref: "#/components/schemas/portConfigurationPost" examples: Complete configuration: value: @@ -2151,301 +1890,180 @@ paths: Change the deviceAlias: value: deviceAlias: Flow_control_1 + IO-Link_Wireless: + value: + mode: WIOLINK_CYCLIC_AUTOPAIRING + validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + vendorId: 888 + deviceId: 1 + slotNumber: 1 + trackNumber: 5 + deviceTxPower: 31 + maxRetry: 20 + imaTime: + base: 1664us + multiplier: 60 + slotType: SSLOT + lowEnergyDevice: false + maxPDSegLength: 0 + wMasterCycleTimeOut: + base: FreeRunning + wMasterCycleTimeIn: + base: FreeRunning + uniqueId: 03:78:00:00:01:32:50:60:46 + deviceAlias: Port_X01 responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "207": - value: - code: 207 - message: deviceAlias is not unique - "208": - value: - code: 208 - message: POST request without content - "701": - value: - code: 701 - message: Data set incomplete - "702": - value: - code: 702 - message: Data set not applicable - "703": - value: - code: 703 - message: Data set combination incompatible - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "302": - value: - code: 302 - message: masterNumber not found - "303": - value: - code: 303 - message: portNumber not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '/masters/{masterNumber}/ports/{portNumber}/datastorage': + "400": # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/masters/{masterNumber}/ports/{portNumber}/datastorage": get: + operationId: GetMastersMasterNumberPortsPortNumberDatastorages tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Read the Data Storage content of a specific port. description: Read the Data Storage content of a specific port. - operationId: getMastersMasterNumberPortsPortNumberDatastorage responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/dataStorageGetPost' + $ref: "#/components/schemas/dataStorageGetPost" examples: - "Data Storage with valid content": + Data Storage with valid content: value: header: vendorId: 15 deviceId: 65253 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" + parameterChecksum: 123456 content: >- TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl - "Empty Data Storage": + Empty Data Storage: value: header: {} - content: '' - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "302": - value: - code: 302 - message: masterNumber not found - "303": - value: - code: 303 - message: portNumber not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error + content: "" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: + operationId: PostMastersMasterNumberPortsPortNumberDatastorages tags: - ports parameters: - - $ref: '#/components/parameters/masterNumber' - - $ref: '#/components/parameters/portNumber' + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" summary: Write the Data Storage content to a specific port. description: Write the Data Storage content to a specific port. - operationId: postMastersMasterNumberPortsPortNumberDatastorage requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/dataStorageGetPost' + $ref: "#/components/schemas/dataStorageGetPost" examples: Data Storage with valid content: value: header: vendorId: 15 deviceId: 65253 - ioLinkRevision: '1.1' + ioLinkRevision: "1.1" content: >- TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl Empty Data Storage: value: header: {} - content: '' + content: "" responses: - '204': + "204": + description: Successful operation + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/{portNumber}/pairing": + post: + operationId: PostMastersMasterNumberPortsPortNumberPairing + tags: + - ports + summary: To pair a Wireless-Device with the specified Wireless-Port. + description: To pair a Wireless-Device with the specified Wireless-Port. + parameters: + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/mastersPortsPairingPost" + responses: + "204": + description: Successful operation + "400": # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + "/masters/{masterNumber}/ports/{portNumber}/quality": + get: + operationId: GetMastersMasterNumberPortsPortNumberQuality + tags: + - ports + parameters: + - $ref: "#/components/parameters/masterNumber" + - $ref: "#/components/parameters/portNumber" + summary: Read the link quality and the RSSI of the specified Wireless-Port (Wireless-Device and Wireless-Master). + description: Read the link quality and the RSSI of the specified Wireless-Port (Wireless-Device and Wireless-Master). + responses: + "200": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "401": - value: - code: 401 - message: Data storage mismatch - "701": - value: - code: 701 - message: Data set incomplete - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "302": - value: - code: 302 - message: masterNumber not found - "303": - value: - code: 303 - message: portNumber not found - '500': - description: Internal server error content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '/devices': + $ref: "#/components/schemas/mastersPortsQualityGet" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + + ################################################################################ + # devices + ################################################################################ + "/devices": get: + operationId: GetDevices tags: - devices summary: Get all available deviceAlias keys and the location by Master number and Port number. - description: >- - Get all available deviceAlias keys and the location by Master number and Port number. - operationId: getDevices + description: Get all available deviceAlias keys and the location by Master number and Port number. responses: - '200': + "200": description: Successful operation content: application/json: @@ -2460,6 +2078,8 @@ paths: properties: deviceAlias: type: string + minLength: 1 + maxLength: 32 masterNumber: type: integer minimum: 1 @@ -2479,107 +2099,42 @@ paths: - deviceAlias: master1port4 masterNumber: 1 portNumber: 4 - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '/devices/{deviceAlias}/capabilities': + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" + "/devices/{deviceAlias}/capabilities": get: + operationId: GetDevicesDeviceAliasCapabilities tags: - devices summary: Read the capabilities from the specific Device. description: Read the capabilities from the specific Device. - operationId: GetDevicesDeviceAliasCapabilities parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" responses: - '200': - description: Successful opearation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceCapabilitiesGet' - example: - minimumCycleTime: - value: 2.3 - unit: ms - supportedProfiles: [10, 32770] - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "307": - value: - code: 307 - message: Port is not configured to IO-Link - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - '500': - description: Internal server error + "200": + description: Successful opearation content: application/json: schema: - $ref: '#/components/schemas/errorObject' - examples: - '101': - value: - code: 101 - message: Internal server error - '102': - value: - code: 102 - message: Internal communication error - '/devices/{deviceAlias}/identification': + $ref: "#/components/schemas/deviceCapabilitiesGet" + example: + minimumCycleTime: + value: 2.3 + unit: ms + supportedProfiles: [10, 32770] + "400": # code 307 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/devices/{deviceAlias}/identification": get: + operationId: GetDevicesDeviceAliasidentification tags: - devices summary: Read the identification from the specific Device. @@ -2587,197 +2142,74 @@ paths: *Implementation hint*: You have to request the ISDU values of applicationSpecificTag, locationTag and functionTag (if they are supported by the device). - operationId: getDevicesDeviceAliasIdentification parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceIdentificationGet' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "307": - value: - code: 307 - message: Port is not configured to IO-Link - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error + $ref: "#/components/schemas/deviceIdentificationGet" + "400": # code 307 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" post: + operationId: PostDevicesDeviceAliasidentification tags: - devices summary: Write application specific identification to the Device. - description: >- - Write application specific identification to the Device. - operationId: postDevicesDeviceAliasIdentification + description: Write application specific identification to the Device. parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/portIdentificationPost' + $ref: "#/components/schemas/portIdentificationPost" examples: All optional fields: value: - applicationSpecificTag: Fallback light switch at the end of the belt + applicationSpecificTag: Fallback light switch locationTag: Down under functionTag: Check start of belt responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "307": - value: - code: 307 - message: Port is not configured to IO-Link - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '/devices/{deviceAlias}/processdata/value': + "400": # code 104, 201, 202, 203, 206, 208, 307 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "/devices/{deviceAlias}/processdata/value": get: + operationId: GetDevicesDeviceAliasProcessData tags: - devices summary: Read the process data values (input and output) from the specified Device. - description: >- - Read the process data values (input and output) from the specified Device. - operationId: getDevicesDeviceAliasProcessdataValue + description: Read the process data values (input and output) from the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceProcessDataValueGet' + $ref: "#/components/schemas/deviceProcessDataValueGet" examples: - 'Format=byteArray, CQ in IO-Link (only input), IQ in digital output': - value: + ? "Format=byteArray, CQ in IO-Link (only input), IQ in digital output" + : value: getData: ioLink: valid: true @@ -2787,14 +2219,15 @@ paths: - 216 setData: iqValue: true - 'Format=iodd, CQ in IO-Link (input and output), IQ in digital input': - value: + ? "Format=iodd, CQ in IO-Link (input and output), IQ in digital input" + : value: getData: ioLink: valid: true value: Distance: value: 55 + unit: "cm" Quality: value: 12 iqValue: true @@ -2804,98 +2237,33 @@ paths: value: Buzzer: value: 5 - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '101': - value: - code: 101 - message: Internal server error - '102': - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: + operationId: PostDevicesDeviceAliasProcessData tags: - devices summary: Write the process data output values to the specified Device. description: Write the process data output values to the specified Device. - operationId: postDevicesDeviceAliasProcessdataValue parameters: - - $ref: '#/components/parameters/deviceAlias' + - $ref: "#/components/parameters/deviceAlias" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceProcessDataValuePost' + $ref: "#/components/schemas/deviceProcessDataValuePost" examples: - 'format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output': - value: + ? "format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output" + : value: ioLink: valid: true value: @@ -2904,7 +2272,7 @@ paths: - 126 - 236 iqValue: true - 'format=iodd, CQ (pin4) in IO-Link, IQ (pin2) not available': + "format=iodd, CQ (pin4) in IO-Link, IQ (pin2) not available": value: iolink: valid: true @@ -2914,165 +2282,40 @@ paths: Valve_2: value: false responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "501": - value: - code: 501 - message: I/Q is not configured as DIGITAL_OUTPUT - "502": - value: - code: 502 - message: C/Q is not configured as DIGITAL_OUTPUT - "503": - value: - code: 503 - message: IO-Link Device has no output process data - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - "701": - value: - code: 701 - message: Data set incomplete - "702": - value: - code: 702 - message: Data set not applicable - "703": - value: - code: 703 - message: Data set combination incompatible - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/processdata/getdata/value': + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + "/devices/{deviceAlias}/processdata/getdata/value": get: + operationId: GetDevicesDeviceAliasProcessDataGetData tags: - devices summary: >- Read the process data input values from the specified Device. - description: >- - Read the process data input values from the specified Device. - operationId: getDevicesDeviceAliasProcessdataGetdataValue + description: Read the process data input values from the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" examples: - 'Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input': - value: + ? "Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input" + : value: ioLink: valid: true value: @@ -3080,116 +2323,51 @@ paths: - 22 - 216 iqValue: true - 'Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input': + "Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input": value: ioLink: valid: true value: Distance: value: 55 + unit: "cm" Quality: value: 12 iqValue: true + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '101': - value: - code: 101 - message: Internal server error - '102': - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/processdata/setdata/value': + "/devices/{deviceAlias}/processdata/setdata/value": get: + operationId: GetDevicesDeviceAliasProcessDataSetData tags: - devices summary: >- Read the process data output values from the specified Device. - description: >- - Read the process data output values from the specified Device. - operationId: DevicesDeviceAliasProcessdataSetdataValue + description: Read the process data output values from the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" examples: - 'Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input': - value: + ? "Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input" + : value: cqValue: false - 'Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input': + "Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input": value: iolink: valid: true @@ -3198,1518 +2376,470 @@ paths: value: true Valve_2: value: false - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '305': - value: - code: 305 - message: Query parameter name invalid - '306': - value: - code: 306 - message: Query parameter value invalid - '601': - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '150': - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "503": - value: - code: 503 - message: IO-Link Device has no output process data - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - '101': - value: - code: 101 - message: Internal server error - '102': - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/parameters': + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + "/devices/{deviceAlias}/parameters": get: + operationId: GetDevicesDeviceAliasParameters tags: - devices summary: >- Read all available parameter indices and parameter names from the specific Device. IODD support is required. - description: >- - Read all available parameter indices and parameter names from the specific Device. - IODD support is required. - operationId: getDevicesDeviceAliasProcessdataSetdataValue - parameters: - - $ref: '#/components/parameters/deviceAlias' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/deviceParametersGet' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 305 - message: Query parameter value invalid - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/parameters/{index}/value': - get: - tags: - - devices - summary: Read a parameter value from the specific Device with the given index. - description: >- - Read a parameter value from the specific Device with the given index. - operationId: getDevicesDeviceAliasParametersIndexValue + description: Read all available parameter indices and parameter names from the specific Device. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' - examples: - format=byteArray: - value: - - 0 - - 156 - - 125 - - 25 - 'format=iodd, simple type': - value: - value: 15.2 - 'format=iodd, complex type': - value: - Distance: - value: 15 - Quality: - value: 12 - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' + $ref: "#/components/schemas/deviceParametersGet" + "400": # code 305, 306, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + "/devices/{deviceAlias}/parameters/{index}/value": + get: + operationId: GetDevicesDeviceAliasParametersIndexValue + tags: + - devices + summary: Read a parameter value from the specific Device with the given index. + description: Read a parameter value from the specific Device with the given index. + parameters: + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/format" + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: - "105": + format=byteArray: + value: + value: + - 0 + - 156 + - 125 + - 25 + "format=iodd, simple type": + value: + value: 15.2 + unit: "cm" + "format=iodd, complex type": value: - code: 105 - message: IODD feature not supported + Distance: + value: 15 + unit: "cm" + Quality: + value: 12 + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + post: + operationId: PostDevicesDeviceAliasParametersIndexValue tags: - devices summary: Write a parameter value with the given index to the specified Device. - description: >- - Write a parameter value with the given index to the specified Device. - operationId: postDevicesDeviceAliasParametersIndexValue + description: Write a parameter value with the given index to the specified Device. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: - 'payload as byteArray': + "payload as byteArray": value: - - 0 - - 156 - - 125 - - 25 - 'payload as iodd, simple type': + value: + - 0 + - 156 + - 125 + - 25 + "payload as iodd, simple type": value: value: 15.2 - 'payload as iodd, complex type': + unit: "cm" + "payload as iodd, complex type": value: Distance: value: 15 + unit: "cm" Quality: value: 12 responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - "701": - value: - code: 701 - message: Data set incomplete - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/parameters/{parameterName}/value': + "400": # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + "/devices/{deviceAlias}/parameters/{parameterName}/value": get: + operationId: GetDevicesDeviceAliasParametersValue tags: - devices summary: >- Read a parameter value from the specific Device by parameter name. IODD support is required. - description: >- - Read a parameter value from the specific Device by parameter name. - IODD support is required. - operationId: getDevicesDeviceAliasParametersParameterNameValue + description: Read a parameter value from the specific Device by parameter name. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: format=byteArray: - value: - - 0 - - 156 - - 125 - - 25 - 'format=iodd, simple type': + value: { "value": [0, 156, 125, 25] } + "format=iodd, simple type": value: value: 15.2 - 'format=iodd, complex type': + unit: "cm" + "format=iodd, complex type": value: Distance: value: 15 + unit: "cm" Quality: value: 12 - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - "312": - value: - code: 312 - message: IO-Link parameter name is not unique - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported + + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: + operationId: PostDevicesDeviceAliasParametersValue tags: - devices summary: >- Write a parameter value by name to the specified Device.IODD support is required. IODD support is required. - description: >- - Write a parameter value by name to the specified Device.IODD support is required. - IODD support is required. - operationId: postDevicesDeviceAliasParametersParameterNameValue + description: Write a parameter value by name to the specified Device.IODD support is required. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" examples: format=byteArray: - value: - - 0 - - 156 - - 125 - - 25 - 'format=iodd, simple type': + value: { "value": [0, 156, 125, 25] } + "format=iodd, simple type": value: value: 15.2 - 'format=iodd, complex type': + unit: "cm" + "format=iodd, complex type": value: Distance: value: 15 + unit: "cm" Quality: value: 12 responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - "701": - value: - code: 701 - message: Data set incomplete - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - "312": - value: - code: 312 - message: IO-Link parameter name is not unique - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/parameters/{index}/subindices': + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + "/devices/{deviceAlias}/parameters/{index}/subindices": get: + operationId: GetDevicesDeviceAliasParametersIndexSubindices tags: - devices summary: >- Read all available parameter sub-indices and sub-parameter names from the specific Device. IODD support is required. - description: >- - Read all available parameter sub-indices and sub-parameter names from the specific Device. - IODD support is required. - operationId: getDevicesDeviceAliasParametersIndexSubindices + description: Read all available parameter sub-indices and sub-parameter names from the specific Device. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceSubParametersGet' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "309": - value: - code: 309 - message: IO-Link parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/parameters/{parameterName}/subindices': + $ref: "#/components/schemas/deviceSubParametersGet" + "400": # code 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + "/devices/{deviceAlias}/parameters/{parameterName}/subindices": get: + operationId: GetDevicesDeviceAliasParametersSubindices tags: - devices summary: >- Read all available parameter sub-indices and sub-parameter names from the specific Device (referenced by parameter name). IODD support is required. - description: >- - Read all available parameter sub-indices and sub-parameter names from the specific Device (referenced by parameter name). - IODD support is required. - operationId: getDevicesDeviceAliasParametersParameterNameSubindices + description: Read all available parameter sub-indices and sub-parameter names from the specific Device (referenced by parameter name). IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceSubParametersGet' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "312": - value: - code: 312 - message: IO-Link parameter name is not unique - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value': + $ref: "#/components/schemas/deviceSubParametersGet" + "400": # code 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + "/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value": get: + operationId: GetDevicesDeviceAliasParametersSubindicesSubindexValue tags: - devices summary: >- Read a parameter value from the specific Device with the given index and subindex. - description: >- - Read a parameter value from the specific Device with the given index and subindex. - operationId: getDevicesDeviceAliasPArametersIndexSubindicesSubindexValue + description: Read a parameter value from the specific Device with the given index and subindex. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/subindex' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/subindex" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: value: - - 0 - - 156 - - 125 - - 25 + value: + - 0 + - 156 + - 125 + - 25 format=iodd: value: - value: 15.2 - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported + Distance: + value: 15.2 + unit: "cm" + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: + operationId: PostDevicesDeviceAliasParametersSubindicesSubindexValue tags: - devices summary: >- Write the parameter with the given index and subindex. - description: >- - Write the parameter with the given index and subindex. - operationId: postDevicesDeviceAliasPArametersIndexSubindicesSubindexValue + description: Write the parameter with the given index and subindex. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/index' - - $ref: '#/components/parameters/subindex' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/subindex" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: - value: - - 0 - - 156 - - 125 - - 25 - format=iodd: - value: - value: 15.2 - responses: - '204': - description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "601": - value: - code: 601 - message: IODD is not availabl - "701": - value: - code: 701 - message: Data set incomplete - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value': - get: + value: { "value": [0, 156, 125, 25] } + format=iodd: + value: + value: 15.2 + unit: "cm" + responses: + "204": + description: Successful operation + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + ? "/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value" + : get: + operationId: GetDevicesDeviceAliasParametersSubindicesValue tags: - devices summary: >- Read a parameter value from the specific Device by parameter name and subname. IODD support is required. - description: >- - Read a parameter value from the specific Device by parameter name and subname. - IODD support is required. - operationId: getDevicesDeviceAliasParametersParameterNameSubindicesSubParameterNameValue + description: Read a parameter value from the specific Device by parameter name and subname. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/subParameterName' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" + - $ref: "#/components/parameters/subParameterName" + - $ref: "#/components/parameters/format" responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: - value: - - 0 - - 156 - - 125 - - 25 + value: { "value": [0, 156, 125, 25] } format=iodd: value: value: 15.2 - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - "312": - value: - code: 312 - message: IO-Link parameter name is not unique - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported + unit: "cm" + + "400": # code 305, 306, 307, 311, 601 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" post: + operationId: PostDevicesDeviceAliasParametersSubindicesValue tags: - devices summary: >- Write a parameter value to the specific Device by the parameter name and subname. IODD support is required. - description: >- - Write a parameter value to the specific Device by the parameter name and subname. - IODD support is required. - operationId: postDevicesDeviceAliasParametersParameterNameSubindicesSubParameterNameValue + description: Write a parameter value to the specific Device by the parameter name and subname. IODD support is required. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/parameterName' - - $ref: '#/components/parameters/subParameterName' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/parameterName" + - $ref: "#/components/parameters/subParameterName" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceParameterSubindexValueGetPost' + $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: - value: - - 0 - - 156 - - 125 - - 25 + value: { "value": [0, 156, 125, 25] } format=iodd: value: value: 15.2 + unit: "cm" responses: - '204': + "204": description: Successful operation - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - "701": - value: - code: 701 - message: Data set incomplete - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - "312": - value: - code: 312 - message: IO-Link parameter name is not unique - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/blockparameterization': + "400": # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + "/devices/{deviceAlias}/blockparameterization": post: + operationId: PostDevicesDeviceAliasBlockparameterization tags: - devices summary: >- Write or read one or more parameters using the block parameterization method. - description: >- - Write or read one or more parameters using the block parameterization method. - operationId: postDevicesDeviceAliasBlockparameterization + description: Write or read one or more parameters using the block parameterization method. parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/format' + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/format" requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/deviceBlockParameterizationPost' + $ref: "#/components/schemas/deviceBlockParameterizationPost" examples: - 'read, format=byteArray': + "read, format=byteArray": value: direction: READ parameters: @@ -4718,7 +2848,7 @@ paths: - identifier: index: 65 subIndex: 2 - 'read, format=iodd': + "read, format=iodd": value: direction: READ parameters: @@ -4727,51 +2857,54 @@ paths: - identifier: parameterName: Distance subParameterName: Quality - 'write, format=byteArray': + "write, format=byteArray": value: direction: WRITE parameters: - identifier: index: 123 content: - - 15 - - 232 - - 22 + value: + - 15 + - 232 + - 22 - identifier: index: 233 subIndex: 2 content: - - 23 - - 149 - - 206 - 'write, format=iodd': + value: + - 23 + - 149 + - 206 + "write, format=iodd": value: direction: WRITE parameters: - identifier: parameterName: Application_tag content: - value: 'Level 2, row 3' + value: "Level 2, row 3" - identifier: parameterName: Hysteresis subParameterName: Channel_B content: value: 123 responses: - '200': + "200": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/deviceBlockParameterizationPostParametersAnswer' + $ref: "#/components/schemas/deviceBlockParameterizationPostParametersAnswer" examples: - 'read, format=byteArray': + "read, format=byteArray": value: - identifier: index: 123 result: parameterExchangeResult: READ_SUCCESS content: + value: - 15 - 232 - 22 @@ -4781,17 +2914,18 @@ paths: result: parameterExchangeResult: READ_SUCCESS content: + value: - 23 - 149 - 206 - 'read, format=iodd': + "read, format=iodd": value: - identifier: parameterName: Application_tag result: parameterExchangeResult: READ_SUCCESS content: - value: 'Level 2, row 3' + value: "Level 2, row 3" - identifier: parameterName: Hysteresis subParameterName: Channel_B @@ -4799,7 +2933,7 @@ paths: parameterExchangeResult: READ_SUCCESS content: value: 123 - 'read, format=byteArray with error': + "read, format=byteArray with error": value: - identifier: index: 123 @@ -4815,7 +2949,7 @@ paths: iolinkError: code: 32803 message: Access denied - 'write, format=byteArray': + "write, format=byteArray": value: - identifier: index: 123 @@ -4825,7 +2959,7 @@ paths: index: 233 result: parameterExchangeResult: WRITE_SUCCESS - 'write, format=iodd': + "write, format=iodd": value: - identifier: parameterName: Application_tag @@ -4836,7 +2970,7 @@ paths: subParameterName: Channel_B result: parameterExchangeResult: WRITE_SUCCESS - 'write, format=byteArray, with error': + "write, format=byteArray, with error": value: - identifier: index: 123 @@ -4852,212 +2986,74 @@ paths: iolinkError: code: 32817 message: Parameter value above limit - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - value: - code: 205 - message: JSON data value out of range - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - "701": - value: - code: 701 - message: Data set incomplete - "702": - value: - code: 702 - message: Data set not applicable - "703": - value: - code: 703 - message: Data set combination incompatible - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "103": - value: - code: 103 - message: Operation not supported - "304": - value: - code: 304 - message: deviceAlias not found - "308": - value: - code: 308 - message: IO-Link Device is not accessible - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the device - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - '501': - description: Not Implemented - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "105": - value: - code: 105 - message: IODD feature not supported - '/devices/{deviceAlias}/events': + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" + + "/devices/{deviceAlias}/events": get: + operationId: GetDevicesDeviceAliasEvents tags: - devices parameters: - - $ref: '#/components/parameters/deviceAlias' - - $ref: '#/components/parameters/eventTop' - - $ref: '#/components/parameters/eventBottom' - summary: Reading the EventLog filtered for a specific Device. - description: >- - Reading the EventLog filtered for a specific Device. - operationId: getDevicesDevicesAliasEvents + - $ref: "#/components/parameters/deviceAlias" + - $ref: "#/components/parameters/eventTop" + - $ref: "#/components/parameters/eventBottom" + summary: Reading the EventLog filtered for a specific Device. + description: Reading the EventLog filtered for a specific Device. responses: - '200': + "200": description: >- Successful operation. In case of empty event log, an empty array is returned. content: application/json: schema: - $ref: '#/components/schemas/deviceEventsGet' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - '403': - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "150": - value: - code: 150 - message: Permission denied - '404': - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "304": - value: - code: 304 - message: deviceAlias not found - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/errorObject' - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error + $ref: "#/components/schemas/deviceEventsGet" + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + components: schemas: + parameterName: + type: string + description: | + Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used.\ + Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + minLength: 1 + maxLength: 71 + subParameterName: + type: string + description: | + Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + minLength: 1 + maxLength: 71 cycleTime: type: object required: @@ -5066,10 +3062,13 @@ components: properties: value: type: number + minimum: 0 + example: 10 unit: type: string enum: - ms + default: ms event: type: object ipConfiguration: @@ -5077,8 +3076,6 @@ components: enum: - MANUAL - DHCP - - AUTO_IP - - DCP processData: allOf: - type: object @@ -5087,16 +3084,16 @@ components: - format properties: direction: - $ref: '#/components/schemas/content' + $ref: "#/components/schemas/content" format: - $ref: '#/components/schemas/format' + $ref: "#/components/schemas/format" oneOf: - type: object required: - interval properties: interval: - $ref: '#/components/schemas/cycleTime' + $ref: "#/components/schemas/cycleTime" - type: object required: - onChange @@ -5116,6 +3113,48 @@ components: - setData - getSetData default: getData + mqttParameter: + type: object + required: + - format + properties: + parameter: + $ref: "#/components/schemas/parameter" + format: + $ref: "#/components/schemas/format" + oneOf: + - type: object + required: + - interval + properties: + interval: + $ref: "#/components/schemas/cycleTime" + - type: object + required: + - onChange + properties: + onChange: + type: boolean + parameter: + oneOf: + - type: object + required: + - parameterName + properties: + parameterName: + $ref: "#/components/schemas/parameterName" + subParameterName: + $ref: "#/components/schemas/subParameterName" + - type: object + required: + - index + properties: + index: + type: integer + example: 233 + subindex: + type: integer + example: 2 eventOrigin: type: string enum: @@ -5126,17 +3165,21 @@ components: - DEVICES default: ALL eventMasterNumber: - type: number + type: integer minimum: 1 eventPortNumber: type: integer minimum: 1 eventdeviceAlias: type: string + minLength: 1 + maxLength: 32 eventTop: - type: number + type: integer + minimum: 1 eventBottom: - type: number + type: integer + minimum: 1 identificationMasters: type: array items: @@ -5145,20 +3188,24 @@ components: - masterNumber properties: masterNumber: - type: number + type: integer minimum: 1 serialNumber: type: string + minLength: 1 + maxLength: 16 locationTag: type: string + minLength: 1 + maxLength: 32 example: - masterNumber: 1 serialNumber: A12345678B - locationTag: slot 5 + locationTag: slotNumber 5 - masterNumber: 2 serialNumber: 123A45B783 - locationTag: slot 6 - identificationGet: + locationTag: slotNumber 6 + masterIdentificationGet: required: - vendorName - vendorId @@ -5168,6 +3215,8 @@ components: properties: vendorName: type: string + minLength: 1 + maxLength: 64 vendorId: type: integer minimum: 1 @@ -5186,51 +3235,65 @@ components: - Wireless_Master serialNumber: type: string + minLength: 1 + maxLength: 16 orderCode: type: string + minLength: 1 + maxLength: 64 productName: type: string + minLength: 1 + maxLength: 64 productId: type: string + minLength: 1 + maxLength: 64 hardwareRevision: type: string + minLength: 1 + maxLength: 64 firmwareRevision: type: string + minLength: 1 + maxLength: 64 vendorUrl: type: string + format: uri manualUrl: type: string + format: uri + productInstanceUri: + type: string + descriptionFileUri: + type: string applicationSpecificTag: type: string + minLength: 1 + maxLength: 32 locationTag: type: string + minLength: 1 + maxLength: 32 functionTag: type: string - example: - vendorName: Vendor GmbH - vendorId: 26 - masterId: 42 - masterType: Master acc. V1.0 - serialNumber: IOLM123456 - orderCode: PROD-123456 - productName: IO-Link Master - productId: PROD-123456 - hardwareRevision: 3.2.1.444R - firmwareRevision: 3.2.1.888R - vendorUrl: 'http://www.io-link.com/io-link-master' - manualUrl: 'http://www.io-link.com/io-link-master/documentation.pdf' - applicationSpecificTag: Fallback reader at the end of the belt - locationTag: Down under - functionTag: Code reading - identificationPost: + minLength: 1 + maxLength: 32 + masterIdentificationPost: type: object properties: applicationSpecificTag: type: string + minLength: 1 + maxLength: 32 locationTag: type: string + minLength: 1 + maxLength: 32 functionTag: type: string + minLength: 1 + maxLength: 32 gatewayCapabilitiesGet: required: - ioddSupported @@ -5247,7 +3310,6 @@ components: masterCapabilitiesGet: required: - numberOfPorts - - maxPowerSupply type: object properties: numberOfPorts: @@ -5261,13 +3323,10 @@ components: properties: value: type: number + minimum: 0 unit: type: string - example: - numberOfPorts: 8 - maxPowerSupply: - value: 0.3 - unit: A + minLength: 1 eventTime: description: >- Timestamp (format defined in DIN ISO 8601). This field can give an @@ -5311,6 +3370,8 @@ components: This property is mandatory for IO-Link Device Events. Should not be used for other log entries. type: string + minLength: 1 + maxLength: 32 eventObject: type: object properties: @@ -5318,7 +3379,9 @@ components: description: >- IO-Link Port EventCode or IO-Link Device EventCode. This property is mandatory for IO-Link Port Events or IO-Link Device Events. - type: number + type: integer + minimum: 0 + maximum: 65535 mode: description: >- IO-Link Port Event Mode or IO-Link Device EventMode. This property @@ -5330,6 +3393,7 @@ components: - DISAPPEARS text: type: string + minLength: 1 gatewayEventsGet: type: array items: @@ -5341,15 +3405,16 @@ components: - message properties: time: - $ref: '#/components/schemas/eventTime' + $ref: "#/components/schemas/eventTime" severity: - $ref: '#/components/schemas/eventSeverity' + $ref: "#/components/schemas/eventSeverity" origin: - $ref: '#/components/schemas/eventOriginObject' + $ref: "#/components/schemas/eventOriginObject" message: - $ref: '#/components/schemas/eventObject' + $ref: "#/components/schemas/eventObject" blockParameterizationPostParametersRequest: type: array + minItems: 1 items: type: object required: @@ -5362,19 +3427,23 @@ components: - index properties: index: - type: number + type: integer + minimum: 0 + maximum: 65535 subIndex: - type: number + type: integer + minimum: 0 + maximum: 255 - type: object required: - parameterName properties: parameterName: - type: string + $ref: "#/components/schemas/parameterName" subParameterName: - type: string + $ref: "#/components/schemas/subParameterName" content: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" deviceBlockParameterizationPostParametersAnswer: type: array items: @@ -5390,17 +3459,21 @@ components: - index properties: index: - type: number + type: integer + minimum: 0 + maximum: 65535 subIndex: - type: number + type: integer + minimum: 0 + maximum: 255 - type: object required: - parameterName properties: parameterName: - type: string + $ref: "#/components/schemas/parameterName" subParameterName: - type: string + $ref: "#/components/schemas/subParameterName" result: type: object required: @@ -5413,9 +3486,9 @@ components: - READ_SUCCESS - ERROR content: - $ref: '#/components/schemas/deviceParameterValueGetPost' + $ref: "#/components/schemas/deviceParameterValueGetPost" iolinkError: - $ref: '#/components/schemas/iolinkErrorObject' + $ref: "#/components/schemas/iolinkErrorObject" deviceEventsGet: type: array items: @@ -5427,24 +3500,24 @@ components: - message properties: time: - $ref: '#/components/schemas/eventTime' + $ref: "#/components/schemas/eventTime" severity: - $ref: '#/components/schemas/eventSeverity' + $ref: "#/components/schemas/eventSeverity" origin: required: - master - port - deviceAlias allOf: - - $ref: '#/components/schemas/eventOriginObject' + - $ref: "#/components/schemas/eventOriginObject" message: required: - code - mode allOf: - - $ref: '#/components/schemas/eventObject' + - $ref: "#/components/schemas/eventObject" example: - - time: '2018-05-18T07:31:54.123Z' + - time: "2018-05-18T07:31:54.123Z" severity: WARNING origin: master: 1 @@ -5453,7 +3526,7 @@ components: message: code: 16912 mode: APPEARS - text: Device temperature over-run - Clear source of heat + text: Device temperature over-run – Clear source of heat gatewayIdentificationGet: type: object required: @@ -5462,29 +3535,44 @@ components: properties: macAddress: type: string + pattern: "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$" serialNumber: type: string - productId: - type: string - vendorName: + orderCode: type: string + maxLength: 64 productName: type: string + productId: + type: string hardwareRevision: type: string + maxLength: 64 firmwareRevision: type: string + vendorName: + type: string + vendorUrl: + type: string + manualUrl: + type: string productInstanceUri: type: string + applicationSpecificTag: + type: string + locationTag: + type: string + functionTag: + type: string example: - macAddress: '00:02:72:CE:A6:49' - serialNumber: 'C134A746' - productId: 'TMP34Z' - vendorName: 'SensorCompany' - productName: 'FlowSensor34' - hardwareRevision: 'V3.45' - firmwareRevision: 'V1.30' - productInstanceUri: 'sensor.tmp.23.com' + macAddress: "00:02:72:CE:A6:49" + serialNumber: "C134A746" + productId: "TMP34Z" + vendorName: "SensorCompany" + productName: "FlowSensor34" + hardwareRevision: "V3.45" + firmwareRevision: "V1.30" + productInstanceUri: "sensor.tmp.23.com" gatewayConfigurationGetPost: type: object required: @@ -5492,22 +3580,32 @@ components: properties: ethIpv4: type: array + minItems: 1 items: type: object required: - ipConfiguration properties: + ifName: + type: string ipConfiguration: - $ref: '#/components/schemas/ipConfiguration' + $ref: "#/components/schemas/ipConfiguration" ipAddress: type: string + format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ subnetMask: type: string + format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ standardGateway: type: string + format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ example: ethIpv4: - - ipConfiguration: MANUAL + - ifName: "eth0" + ipConfiguration: MANUAL ipAddress: 192.168.1.13 subnetMask: 255.255.255.0 standardGateway: 192.168.1.1 @@ -5566,16 +3664,18 @@ components: - type: object properties: event: - $ref: '#/components/schemas/event' + $ref: "#/components/schemas/event" processData: - $ref: '#/components/schemas/processData' + $ref: "#/components/schemas/processData" + parameter: + $ref: "#/components/schemas/mqttParameter" mqttConfigurationTopicPost: allOf: - type: object properties: topicName: type: string - - $ref: '#/components/schemas/mqttConfigurationTopic' + - $ref: "#/components/schemas/mqttConfigurationTopic" mqttConfigurationTopicGet: allOf: - type: object @@ -5590,7 +3690,7 @@ components: properties: topicName: type: string - - $ref: '#/components/schemas/mqttConfigurationTopic' + - $ref: "#/components/schemas/mqttConfigurationTopic" example: topicId: 1 topicName: PD input @@ -5611,70 +3711,23 @@ components: - upTime properties: connectionStatus: - type: string - enum: - - CLIENT_INACTIVE - - CONNECTION_ACCEPTED - - UNACCEPTABLE_PROTOCOL_VERSION - - IDENTIFIER_REJECTED - - SERVER_UNAVAILABLE - - BAD_USERNAME_OR_PASSWORD - - NOT_AUTHORIZED - serverAddress: - type: string - upTime: - type: integer - example: - connectionStatus: CONNECTION_ACCEPTED - serverAddress: 'http://broker-address.com' - upTime: 1050 - portStatusGet: - type: object - required: - - statusInfo - properties: - statusInfo: - type: string - enum: - - COMMUNICATION_LOST - - DEACTIVATED - - INCORRECT_DEVICE - - DEVICE_STARTING - - DEVICE_ONLINE - - DIGITAL_INPUT_C/Q - - DIGITAL_OUTPUT_C/Q - - NOT_AVAILABLE - ioLinkRevision: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - '1.0' - - '1.1' - transmissionRate: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - COM1 - - COM2 - - COM3 - masterCycleTime: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: object - allOf: - - $ref: '#/components/schemas/cycleTime' + type: string + enum: + - CLIENT_INACTIVE + - CONNECTION_ACCEPTED + - UNACCEPTABLE_PROTOCOL_VERSION + - IDENTIFIER_REJECTED + - SERVER_UNAVAILABLE + - BAD_USERNAME_OR_PASSWORD + - NOT_AUTHORIZED + serverAddress: + type: string + upTime: + type: integer example: - statusInfo: DEVICE_ONLINE - ioLinkRevision: '1.1' - transmissionRate: COM2 - masterCycleTime: - value: 2.3 - unit: ms + connectionStatus: CONNECTION_ACCEPTED + serverAddress: "http://broker-address.com" + upTime: 1050 deviceCapabilitiesGet: required: - minimumCycleTime @@ -5682,16 +3735,19 @@ components: type: object properties: minimumCycleTime: - $ref: '#/components/schemas/cycleTime' + $ref: "#/components/schemas/cycleTime" supportedProfiles: type: array items: type: integer + minimum: 1 deviceIdentificationGet: required: - vendorId - deviceId - ioLinkRevision + - vendorName + - productName type: object properties: vendorId: @@ -5705,45 +3761,74 @@ components: ioLinkRevision: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" vendorName: description: Mandatory if the Device suports the ISDU. type: string + minLength: 1 + maxLength: 64 vendorText: type: string + vendorUrl: + type: string productName: description: Mandatory if the Device suports the ISDU. type: string + minLength: 1 + maxLength: 64 productId: type: string + minLength: 1 + maxLength: 64 productText: type: string + minLength: 1 + maxLength: 64 serialNumber: type: string + minLength: 1 + maxLength: 16 hardwareRevision: type: string + minLength: 1 + maxLength: 64 firmwareRevision: type: string + productInstanceUri: + type: string + ioddUri: + type: string applicationSpecificTag: type: string + minLength: 1 + maxLength: 32 locationTag: type: string + minLength: 1 + maxLength: 32 functionTag: type: string + minLength: 1 + maxLength: 32 example: vendorId: 26 - deviceId: 42 - ioLinkRevision: '1.1' + deviceId: 8389226 + ioLinkRevision: "1.1" vendorName: SICK AG vendorText: Sensor Intelligence. - productName: WTxx16 - productId: PROD-123456 - productText: Light switch - serialNumber: IOLM123456 + productName: SLG-2 + productId: SLG-2 + productText: The SLG-2 IO-Link device is a smart lightgrid + serialNumber: Serial123456 hardwareRevision: 3.2.1.444R firmwareRevision: 3.2.1.888R - applicationSpecificTag: Fallback light switch at the end of the belt + vendorUrl: "http://www.sick.com" + productInstanceUri: "http://www.sick.com/SLG-2/Serial123456" + ioddUri: "https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1" + # 'https://ioddfinder.io-link.com/api/vendors/26/iodds/11541/files/zip/rated' + # 'https://ioddfinder.io-link.com/productvariants/search/32872' + applicationSpecificTag: Fallback light switch locationTag: Down under functionTag: Check end of belt portIdentificationPost: @@ -5751,112 +3836,854 @@ components: properties: applicationSpecificTag: type: string - example: Fallback light switch at the end of the belt + minLength: 1 + maxLength: 32 + example: Fallback light switch locationTag: type: string + minLength: 1 + maxLength: 32 example: Down under functionTag: type: string - example: Check start of belt - portCapabilitiesGet: - type: object - required: - - maxPowerSupply - - portType + minLength: 1 + maxLength: 32 + example: Check start of belt + portCapabilitiesGet: + type: object + required: + - portType + properties: + portType: + type: string + enum: + - CLASS_A + - CLASS_B + - CLASS_A_WITH_PORT_POWER_OFF_ON + - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS + - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS + - FAILSAFE_PORT_B + - WIRELESS_MASTER + slotType: + description: >- + slotType for Wireless Master only + type: string + enum: + - SSLOT + - DSLOT + maxPowerSupply: + description: >- + maxPowerSupply is not supported in IO-Link Wireless. + type: object + required: + - value + - unit + properties: + value: + type: number + unit: + type: string + + portConfigurationGet: + type: object + required: + - mode + - iqConfiguration + - deviceAlias + properties: + mode: + type: string + enum: + - DEACTIVATED + - IOLINK_MANUAL + - IOLINK_AUTOSTART + - DIGITAL_INPUT + - DIGITAL_OUTPUT + - WIOLINK_CYCLIC_AUTOPAIRING + - WIOLINK_CYCLIC + - WIOLINK_ROAMING_AUTOPAIRING + - WIOLINK_ROAMING + validationAndBackup: + description: required if portMode is IOLINK_MANUAL. + type: string + enum: + - NO_DEVICE_CHECK + - TYPE_COMPATIBLE_DEVICE_V1.0 + - TYPE_COMPATIBLE_DEVICE_V1.1 + - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE + cycleTime: + description: >- + required if portMode is IOLINK_MANUAL or + IOLINK_AUTOSTART. Default value is 0 ms which means as fast as possible. + Note: If the applied value for cycle time cannot exactly be mapped, + the port shall use the next possible higher value. If the cycle time is greater + than 132.8 ms the error 702 shall be returned. + Note: This value is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. + type: object + allOf: + - $ref: "#/components/schemas/cycleTime" + vendorId: + description: >- + required if portMode is IOLINK_MANUAL and + validationAndBackup is not NO_DEVICE_CHECK. + type: integer + minimum: 1 + maximum: 65535 + deviceId: + description: >- + required if portMode is IOLINK_MANUAL and + validationAndBackup is not NO_DEVICE_CHECK. + type: integer + minimum: 1 + maximum: 16777215 + iqConfiguration: + description: >- + iqConfiguration is not supported in IO-Link Wireless. + type: string + enum: + - NOT_SUPPORTED + - DIGITAL_INPUT + - DIGITAL_OUTPUT + deviceAlias: + type: string + slotNumber: + description: >- + slot number of the Wireless-Device (Wireless Master only). + type: integer + minimum: 0 + maximum: 7 + trackNumber: + description: >- + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). + type: integer + minimum: 1 + maximum: 5 + deviceTxPower: + description: >- + transmission power of the Wireless-Device (Wireless Master only). + type: integer + minimum: 1 + maximum: 31 + maxRetry: + description: >- + Number of Retries for process data (Wireless Master only). + type: integer + minimum: 2 + maximum: 31 + imaTime: + description: >- + I am alive time for the wireless connection (Wireless Master only). + type: object + required: + - base + - multiplier + properties: + base: + description: >- + IMA timeout base. + type: string + enum: + - "1664us" + - "5ms" + - "1s" + - "1min" + multiplier: + description: >- + IMA timeout multiplier. + type: integer + minimum: 1 + maximum: 255 + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). + type: string + enum: + - "SSLOT" + - "DSLOT" + lowEnergyDevice: + description: >- + to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). + type: boolean + default: false + maxPDSegLength: + description: >- + maximum process data output segment length (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + wMasterCycleTimeOut: + description: >- + Wireless-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + Wireless-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + uniqueId: + description: >- + unique identifier for each Wireless-Device (Wireless Master only). + type: string + minLength: 26 + maxLength: 26 + + mastersConfigurationGetPost: # TODO: IOLW + properties: + wMasterId: + description: >- + Master identifier for connection with Wireless-Devices. + type: integer + minimum: 1 + maximum: 29 + advancedConnectivity: + description: >- + To set advanced connectivity functions on the Wireless-Master. + type: object + properties: + "ahtEnable": + description: >- + To enable or disable the Adaptive Hopping Table. + type: boolean + default: false + pairingTimeout: + description: >- + Timeout for pairing by BUTTON / UNIQUE. + type: object + required: + - value + - unit + properties: + value: + type: integer + minimum: 5 + maximum: 255 + unit: + type: string + enum: + - s + serviceTrackNumber: + description: >- + W-Track number used for service requests (Scan/Pairing/Roaming). + type: integer + minimum: 1 + maximum: 5 + default: 1 + serviceTrackMode: + description: >- + Mode of the service track. + type: string + enum: + - CYCLIC + - ROAMING + trackTxPower: + description: >- + transmission power of the W-Track (0 = Disable) + type: object + properties: + "track_1": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_2": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_3": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_4": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_5": + type: integer + minimum: 0 + maximum: 31 + default: 0 + blockList: + type: object + properties: + "2402": + type: boolean + default: false + "2403": + type: boolean + default: false + "2404": + type: boolean + default: false + "2405": + type: boolean + default: false + "2406": + type: boolean + default: false + "2407": + type: boolean + default: false + "2408": + type: boolean + default: false + "2409": + type: boolean + default: false + "2410": + type: boolean + default: false + "2411": + type: boolean + default: false + "2412": + type: boolean + default: false + "2413": + type: boolean + default: false + "2414": + type: boolean + default: false + "2415": + type: boolean + default: false + "2416": + type: boolean + default: false + "2417": + type: boolean + default: false + "2418": + type: boolean + default: false + "2419": + type: boolean + default: false + "2420": + type: boolean + default: false + "2421": + type: boolean + default: false + "2422": + type: boolean + default: false + "2423": + type: boolean + default: false + "2424": + type: boolean + default: false + "2425": + type: boolean + default: false + "2426": + type: boolean + default: false + "2427": + type: boolean + default: false + "2428": + type: boolean + default: false + "2429": + type: boolean + default: false + "2430": + type: boolean + default: false + "2431": + type: boolean + default: false + "2432": + type: boolean + default: false + "2433": + type: boolean + default: false + "2434": + type: boolean + default: false + "2435": + type: boolean + default: false + "2436": + type: boolean + default: false + "2437": + type: boolean + default: false + "2438": + type: boolean + default: false + "2439": + type: boolean + default: false + "2440": + type: boolean + default: false + "2441": + type: boolean + default: false + "2442": + type: boolean + default: false + "2443": + type: boolean + default: false + "2444": + type: boolean + default: false + "2445": + type: boolean + default: false + "2446": + type: boolean + default: false + "2447": + type: boolean + default: false + "2448": + type: boolean + default: false + "2449": + type: boolean + default: false + "2450": + type: boolean + default: false + "2451": + type: boolean + default: false + "2452": + type: boolean + default: false + "2453": + type: boolean + default: false + "2454": + type: boolean + default: false + "2455": + type: boolean + default: false + "2456": + type: boolean + default: false + "2457": + type: boolean + default: false + "2458": + type: boolean + default: false + "2459": + type: boolean + default: false + "2460": + type: boolean + default: false + "2461": + type: boolean + default: false + "2462": + type: boolean + default: false + "2463": + type: boolean + default: false + "2464": + type: boolean + default: false + "2465": + type: boolean + default: false + "2466": + type: boolean + default: false + "2467": + type: boolean + default: false + "2468": + type: boolean + default: false + "2469": + type: boolean + default: false + "2470": + type: boolean + default: false + "2471": + type: boolean + default: false + "2472": + type: boolean + default: false + "2473": + type: boolean + default: false + "2474": + type: boolean + default: false + "2475": + type: boolean + default: false + "2476": + type: boolean + default: false + "2477": + type: boolean + default: false + "2478": + type: boolean + default: false + mastersPortsPairingPost: # TODO: IOLW + properties: + portPairing: + type: string + enum: + - Unpairing + - PairingUnique + - PairingButton + example: + WPortPairing: PairingUnique + + mastersScanGet: # TODO: IOLW properties: - maxPowerSupply: - type: object - required: - - value - - unit - properties: - value: - type: number - unit: - type: string - portType: + scanStatus: type: string enum: - - CLASS_A - - CLASS_B - - CLASS_A_WITH_PORT_POWER_OFF_ON - - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_B - - WIRELESS_MASTER + - NoScanWasPerformed + - ScanInProgress + - ScanEnded + scanResults: + type: array + properties: + slotType: + type: string + enum: + - "SSLOT" + - "DSLOT" + uniqueId: + type: string + minLength: 26 + maxLength: 26 + ioLinkRevision: + type: string + enum: + - "1.1" + lastSeen: + $ref: "#/components/schemas/eventTime" example: - maxPowerSupply: - value: 0.3 - unit: A - portType: CLASS_A - iqConfigurationType: - type: string - enum: - - NOT_SUPPORTED - - DIGITAL_INPUT - - DIGITAL_OUTPUT - - POWER_2 - portConfigurationGet: - type: object - required: - - mode - - iqConfiguration - - deviceAlias + scanStatus: ScanEnded + scanResults: + - slotType: SSLOT + uniqueId: 03:78:00:00:01:32:50:60:46 + ioLinkRevision: "1.1" + lastSeen: "2022-12-01T08:42:23.314Z" + - slotType: DSLOT + uniqueId: 03:78:00:00:01:32:50:60:47 + ioLinkRevision: "1.1" + lastSeen: "2022-12-01T09:42:23.314Z" + + mastersScanPost: # TODO: IOLW properties: - mode: + txPower: + type: integer + minimum: 1 + maximum: 31 + example: + txPower: 31 + + mastersPortsGet: # TODO: IOLW + type: array + items: + type: object + required: + - portNumber + - statusInfo + - deviceAlias + properties: + portNumber: + type: number + deviceAlias: + type: string + statusInfo: + type: string + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + slotNumber: + description: >- + slot number of the Wireless-Device (Wireless Master only). + type: integer + minimum: 0 + maximum: 7 + trackNumber: + description: >- + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). + type: integer + minimum: 1 + maximum: 5 + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). + type: string + enum: + - "SSLOT" + - "DSLOT" + deviceInfo: + description: >- + Wireless Master only. + type: object + properties: + vendorId: + type: integer + minimum: 1 + maximum: 65535 + deviceId: + type: integer + minimum: 1 + maximum: 16777215 + productName: + type: string + minLength: 1 + maxLength: 64 + + mastersPortsStatusGet: # TODO: IOLW + properties: + statusInfo: + type: string + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + ioLinkRevision: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. type: string enum: - - DEACTIVATED - - IOLINK_MANUAL - - IOLINK_AUTOSTART - - DIGITAL_INPUT - - DIGITAL_OUTPUT - validationAndBackup: - description: Used by the IO-Link Master just when the port's mode is IOLINK_MANUAL. + - "1.0" + - "1.1" + transmissionRate: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. transmissionRate is not used in IO-Link Wireless. type: string enum: - - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.0 - - TYPE_COMPATIBLE_DEVICE_V1.1 - - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - cycleTime: + - COM1 + - COM2 + - COM3 + masterCycleTime: description: >- - Used by the IO-Link Master just when the port's mode is IOLINK_MANUAL or - IOLINK_AUTOSTART. Default value is 0 ms which means as fast as - possible. + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. masterCycleTime is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. type: object allOf: - - $ref: '#/components/schemas/cycleTime' + - $ref: "#/components/schemas/cycleTime" + portQualityInfo: + description: >- + status information of the Process Data (Wireless Master only). + type: object + properties: + "pdInValid": + type: boolean + default: false + "pdOutValid": + type: boolean + default: false + inputDataLength: + description: >- + this element contains the input data length as number of octets of the Device provided by the PDIn service (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + outputDataLength: + description: >- + this element contains the output data length as number of octets of the Device provided by the PDOut service (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 vendorId: description: >- - Used by the IO-Link Master just when the port's mode is IOLINK_MANUAL and - validationAndBackup is not NO_DEVICE_CHECK. + Wireless Master only. type: integer minimum: 1 maximum: 65535 deviceId: description: >- - Used by the IO-Link Master just when the port's mode is IOLINK_MANUAL and - validationAndBackup is not NO_DEVICE_CHECK. + Wireless Master only. type: integer minimum: 1 maximum: 16777215 - iqConfiguration: - $ref : '#/components/schemas/iqConfigurationType' - deviceAlias: - type: string + wMasterCycleTimeOut: + description: >- + Wireless-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + Wireless-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + + mastersTrackstatusGet: # TODO: IOLW + type: array + items: + type: object + properties: + trackNumber: + type: number + Mode: + type: string + enum: + - DEACTIVATED + - CYCLIC + - ROAMING + - SCAN + - PAIRING + txPower: + type: integer + minimum: 1 + maximum: 31 example: - mode: IOLINK_MANUAL - validationAndBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - iqConfiguration: DIGITAL_INPUT - cycleTime: - value: 2.3 - unit: ms - vendorId: 26 - deviceId: 333 - deviceAlias: Distance_sensor_1 + - trackNumber: 1 + Mode: CYCLIC + txPower: 31 + - trackNumber: 2 + Mode: ROAMING + txPower: 31 + + mastersPortsQualityallGet: # TODO: IOLW + type: array + items: + type: object + properties: + portNumber: + type: number + lqiMaster: + type: integer + minimum: 0 + maximum: 100 + rssiMaster: + type: integer + minimum: -128 + maximum: 20 + lqiDevice: + type: integer + minimum: 0 + maximum: 100 + rssiDevice: + type: integer + minimum: -128 + maximum: 20 + example: + - portNumber: 1 + lqiMaster: 100 + rssiMaster: -40 + lqiDevice: 100 + rssiDevice: -39 + - portNumber: 2 + lqiMaster: 100 + rssiMaster: -60 + lqiDevice: 100 + rssiDevice: -61 + + mastersPortsQualityGet: # TODO: IOLW + properties: + lqiMaster: + type: integer + minimum: 0 + maximum: 100 + rssiMaster: + type: integer + minimum: -128 + maximum: 20 + lqiDevice: + type: integer + minimum: 0 + maximum: 100 + rssiDevice: + type: integer + minimum: -128 + maximum: 20 + example: + lqiMaster: 100 + rssiMaster: -40 + lqiDevice: 100 + rssiDevice: -39 + portConfigurationPost: + description: "Note: At least one of the mode, iqConfiguration, + deviceAlias properties shall be included to the POST request" type: object properties: mode: @@ -5867,10 +4694,13 @@ components: - IOLINK_AUTOSTART - DIGITAL_INPUT - DIGITAL_OUTPUT + - WIOLINK_CYCLIC_AUTOPAIRING + - WIOLINK_CYCLIC + - WIOLINK_ROAMING_AUTOPAIRING + - WIOLINK_ROAMING validationAndBackup: description: >- - Mandatory if the port's mode is IOLINK_MANUAL. Must not be used with - mode other than IOL_MANUAL. + required if the port's mode is IOLINK_MANUAL. type: string enum: - NO_DEVICE_CHECK @@ -5882,28 +4712,148 @@ components: description: >- If no cycleTime configured with mode IOLINK_MANUAL or IOLINK_AUTOSTART, the possible fastest cycle time is used by the - IO-Link Master. + IO-Link Master. If the applied value for cycle time cannot exactly be + mapped, the port shall use the next possible higher value. + If the cycle time is greater than 132.8 ms the error 702 shall + be returned. This value is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. type: object allOf: - - $ref: '#/components/schemas/cycleTime' + - $ref: "#/components/schemas/cycleTime" vendorId: description: >- - Mandatory if the port's mode is IOLINK_MANUAL and validationAndBackup is + required if the port's mode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. type: integer minimum: 1 maximum: 65535 deviceId: description: >- - Mandatory if the port's mode is IOLINK_MANUAL and validationAndBackup is + required if the port's mode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. type: integer minimum: 1 maximum: 16777215 iqConfiguration: - $ref : '#/components/schemas/iqConfigurationType' + description: >- + iqConfiguration is not supported in IO-Link Wireless. + type: string + enum: + - NOT_SUPPORTED + - DIGITAL_INPUT + - DIGITAL_OUTPUT + - ANALOG_INPUT + - ANALOG_OUTPUT + - POWER_2 deviceAlias: type: string + minLength: 1 + maxLength: 32 + slotNumber: + description: >- + slot number of the Wireless-Device (Wireless Master only). + type: integer + minimum: 0 + maximum: 7 + trackNumber: + description: >- + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). + type: integer + minimum: 1 + maximum: 5 + deviceTxPower: + description: >- + transmission power of the Wireless-Device (Wireless Master only). + type: integer + minimum: 1 + maximum: 31 + maxRetry: + description: >- + Number of Retries for process data (Wireless Master only). + type: integer + minimum: 2 + maximum: 31 + imaTime: + description: >- + I am alive time for the wireless connection (Wireless Master only). + type: object + required: + - base + - multiplier + properties: + base: + description: >- + IMA timeout base. + type: string + enum: + - "1664us" + - "5ms" + - "1s" + - "1min" + multiplier: + description: >- + IMA timeout multiplier. + type: integer + minimum: 1 + maximum: 255 + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). + type: string + enum: + - "SSLOT" + - "DSLOT" + lowEnergyDevice: + description: >- + to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). + type: boolean + default: false + maxPDSegLength: + description: >- + maximum process data output segment length (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + wMasterCycleTimeOut: + description: >- + Wireless-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + Wireless-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + uniqueId: + description: >- + unique identifier for each Wireless-Device (Wireless Master only). + type: string + minLength: 26 + maxLength: 26 + dataStorageGetPost: description: >- In case the Data Storage is empty, the header object is empty and the @@ -5931,7 +4881,11 @@ components: maximum: 16777215 ioLinkRevision: type: string - enum: ['1.0', '1.1'] + enum: + - "1.0" + - "1.1" + parameterChecksum: + type: integer - type: object # empty object additionalProperties: false minProperties: 0 @@ -5939,26 +4893,32 @@ components: content: description: Base64 coded DS data Ojects. Max size = 2KB*1.33. type: string + # format: byte processDataValue: type: object properties: ioLink: - type: object - description: > - Process data in IO-Link mode - required: - - valid - - value - properties: - valid: - type: boolean - description: > - Process data validity - value: - oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' + description: Process data in IO-Link mode + allOf: + - type: object + required: + - valid + properties: + valid: + type: boolean + description: > + Process data validity + - type: object + required: + - value + properties: + value: + oneOf: + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" + - $ref: "#/components/schemas/deviceComplexTypeValue" + unit: + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" description: > Process data value cqValue: @@ -5972,7 +4932,7 @@ components: IO-Link cable IQ (pin2) level if it is used as digital input or output. (false - 0 V, true - 24 V) example: - 'format=byteArray, pin4=IO-Link, pin2=sio': + "format=byteArray, pin4=IO-Link, pin2=sio": ioLink: valid: true value: @@ -5981,7 +4941,7 @@ components: - 126 - 236 iqValue: true - 'format=iodd, pin4=IO-Link, pin2=deactivated/not available': + "format=iodd, pin4=IO-Link, pin2=deactivated/not available": iolink: valid: true value: @@ -5989,7 +4949,7 @@ components: value: true Valve_2: value: false - 'format=byteArray/iodd, pin4=sio, pin2=deactivated/not available': + "format=byteArray/iodd, pin4=sio, pin2=deactivated/not available": cqValue: false deviceProcessDataValueGet: type: object @@ -6003,36 +4963,44 @@ components: is configured as digital output. properties: getData: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" setData: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" deviceProcessDataValuePost: - $ref: '#/components/schemas/processDataValue' + $ref: "#/components/schemas/processDataValue" deviceByteArrayTypeValue: type: array description: The value in byteArray format. items: - type: number + type: integer minimum: 0 maximum: 255 deviceSimpleTypeValue: + oneOf: + - type: boolean + - type: string + - type: number + description: The value (with simple type) in iodd format. + deviceComplexTypeEntry: type: object - properties: - value: - oneOf: - - type: boolean - - type: string - - type: number - description: The value (with simple type) in iodd format. + description: The entry for a complex iodd type required: - value + properties: + value: + $ref: "#/components/schemas/deviceSimpleTypeValue" + unit: + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" + deviceSimpleTypeValueUnit: + type: string + description: The unit for the simple type number value in SI format. deviceComplexTypeValue: type: object minProperties: 1 maxProperties: 255 description: The value (with complex type) in iodd format. additionalProperties: - $ref: '#/components/schemas/deviceSimpleTypeValue' + $ref: "#/components/schemas/deviceComplexTypeEntry" deviceParametersGet: type: array items: @@ -6042,16 +5010,24 @@ components: - parameterName properties: index: - type: number + type: integer + minimum: 0 + maximum: 65535 parameterName: - type: string + $ref: "#/components/schemas/parameterName" + subindexAccessSupported: + type: boolean + description: only for complex parameters (records or arrays) required. Not allowed for simple parameters example: - - index: 0 - parameterName: Direct_Parameter_Page_1 - - index: 1 - parameterName: Direct_Parameter_Page_2 - - index: 2 - parameterName: System_Command + - index: 16 + parameterName: "Vendor_Name" + - index: 18 + parameterName: "Product_Name" + - index: 19 + parameterName: "ProductID" + - index: 60 + parameterName: "SSC_1_Param" + subindexAccessSupported: true deviceSubParametersGet: type: array items: @@ -6061,9 +5037,11 @@ components: - subParameterName properties: subIndex: - type: number + type: integer + minimum: 1 + maximum: 255 subParameterName: - type: string + $ref: "#/components/schemas/subParameterName" example: - subIndex: 1 subParameterName: Master_command @@ -6072,14 +5050,25 @@ components: - subIndex: 3 subParameterName: Minimum_cycle_time deviceParameterValueGetPost: - oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' - - $ref: '#/components/schemas/deviceComplexTypeValue' + type: object + properties: + value: + oneOf: + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" + - $ref: "#/components/schemas/deviceComplexTypeValue" + unit: + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" deviceParameterSubindexValueGetPost: - oneOf: - - $ref: '#/components/schemas/deviceByteArrayTypeValue' - - $ref: '#/components/schemas/deviceSimpleTypeValue' + type: object + properties: + value: + oneOf: + - $ref: "#/components/schemas/deviceByteArrayTypeValue" + - $ref: "#/components/schemas/deviceSimpleTypeValue" + - $ref: "#/components/schemas/deviceComplexTypeValue" + unit: + $ref: "#/components/schemas/deviceSimpleTypeValueUnit" deviceBlockParameterizationPost: type: object required: @@ -6092,7 +5081,7 @@ components: - WRITE - READ parameters: - $ref: '#/components/schemas/blockParameterizationPostParametersRequest' + $ref: "#/components/schemas/blockParameterizationPostParametersRequest" ioddIdentification: type: object required: @@ -6113,8 +5102,8 @@ components: ioLinkRevision: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" ioddFile: description: The IODD XML file. type: string @@ -6122,18 +5111,18 @@ components: ioddsGet: type: array items: - $ref: '#/components/schemas/ioddIdentification' + $ref: "#/components/schemas/ioddIdentification" example: - vendorId: 1234 deviceId: 4567 - version: '4.3' - releaseDate: '2018-01-02' - ioLinkRevision: '1.1' + version: "4.3" + releaseDate: "2018-01-02" + ioLinkRevision: "1.1" - vendorId: 4321 deviceId: 8765 - version: '2.1' - releaseDate: '2015-01-02' - ioLinkRevision: '1.1' + version: "2.1" + releaseDate: "2015-01-02" + ioLinkRevision: "1.1" iolinkErrorObject: type: object required: @@ -6142,8 +5131,11 @@ components: properties: code: type: integer + minimum: 0 + maximum: 65535 message: type: string + minLength: 1 errorObject: type: object required: @@ -6152,10 +5144,14 @@ components: properties: code: type: integer + minimum: 0 message: type: string + minLength: 1 iolinkError: - $ref: '#/components/schemas/iolinkErrorObject' + $ref: "#/components/schemas/iolinkErrorObject" + + #--------------------------------------------------------------------------- parameters: vendorId: name: vendorId @@ -6164,6 +5160,8 @@ components: required: false schema: type: integer + minimum: 0 + maximum: 65535 deviceId: name: deviceId in: query @@ -6171,6 +5169,8 @@ components: required: false schema: type: integer + minimum: 1 + maximum: 16777215 revision: name: revision in: query @@ -6179,8 +5179,8 @@ components: schema: type: string enum: - - '1.0' - - '1.1' + - "1.0" + - "1.1" mqttTopicId: name: topicId in: path @@ -6198,6 +5198,14 @@ components: type: integer minimum: 1 required: true + trackNumber: + name: trackNumber + in: path + description: trackNumber identification number starting with 1 + schema: + type: integer + minimum: 1 + required: true portNumber: name: portNumber in: path @@ -6215,59 +5223,63 @@ components: the portNumber. schema: type: string + minLength: 1 + maxLength: 32 required: true eventOrigin: name: origin in: query description: The event source to filter schema: - $ref: '#/components/schemas/eventOrigin' + $ref: "#/components/schemas/eventOrigin" eventMasterNumber: name: masterNumber in: query description: masterNumber is only applicable with origin=MASTERS and origin=PORTS schema: - $ref: '#/components/schemas/eventMasterNumber' + $ref: "#/components/schemas/eventMasterNumber" eventPortNumber: name: portNumber in: query description: portnumber is only applicable with origin=PORTS schema: - $ref: '#/components/schemas/eventPortNumber' + $ref: "#/components/schemas/eventPortNumber" eventdeviceAlias: name: deviceAlias in: query description: deviceAlias is only applicable with origin=DEVICES schema: - $ref: '#/components/schemas/eventdeviceAlias' + $ref: "#/components/schemas/eventdeviceAlias" eventTop: name: top in: query description: >- - Delivers the oldest n events of the event buffer. top is mutually + Delivers or removes the oldest n events of the event buffer. top is mutually exclusive to bottom. schema: - $ref: '#/components/schemas/eventTop' + $ref: "#/components/schemas/eventTop" eventBottom: name: bottom in: query description: >- - Delivers the youngest n events of the event buffer. bottom is mutually + Delivers or removes the youngest n events of the event buffer. bottom is mutually exclusive to top. schema: - $ref: '#/components/schemas/eventBottom' + $ref: "#/components/schemas/eventBottom" format: name: format in: query description: Value format in response document schema: - $ref: '#/components/schemas/format' + $ref: "#/components/schemas/format" index: name: index in: path description: Index of ISDU variable schema: type: integer + minimum: 0 + maximum: 65535 required: true subindex: name: subindex @@ -6275,22 +5287,262 @@ components: description: Subindex of ISDU variable with the given index schema: type: integer + minimum: 0 + maximum: 255 required: true parameterName: name: parameterName in: path - description: >- - Parameter name. Comes from the IODD but might be reformatted according - to the JSON mapping specification. + description: | + Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. schema: type: string + minLength: 1 + maxLength: 71 required: true subParameterName: name: subParameterName in: path - description: >- - Sub-parameter name. Comes from the IODD but might be reformatted - according to the JSON mapping specification. + description: | + Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ schema: type: string + minLength: 1 + maxLength: 71 required: true + responses: + HTTP_400: + description: Bad request + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject" + examples: + "104": + description: Fieldbus controller or another gateway protocol has claimed priority + value: + code: 104 + message: Action locked by another client + "201": + description: Error while parsing the incoming JSON object + value: + code: 201 + message: JSON parsing failed + "202": + description: Error while parsing a specific JSON value, e.g. a malformed IP address + value: + code: 202 + message: JSON data value invalid + "203": + description: e.g. string instead of number + value: + code: 203 + message: JSON data type invalid + "204": + value: + code: 204 + message: Enumeration value unknown + "205": + description: Exceeds the minimum or maximum value + value: + code: 205 + message: JSON data value out of range + "206": + description: An array or string was accessed exceeding its maximum length + value: + code: 206 + message: JSON data value out of bounds + "208": + value: + code: 208 + message: POST or PUT request without content + "305": + value: + code: 305 + message: Query parameter name invalid + "306": + value: + code: 306 + message: Query parameter value invalid + "307": + value: + code: 307 + message: Port is not configured to IO-Link + "311": + value: + code: 311 + message: IO-Link parameter access error + "401": + value: + code: 401 + message: Data storage mismatch + "501": + value: + code: 501 + message: I/Q is not configured as DIGITAL_OUTPUT + "502": + value: + code: 502 + message: C/Q is not configured as DIGITAL_OUTPUT + "503": + value: + code: 503 + message: IO-Link Device has no output process data + "601": + value: + code: 601 + message: IODD (representation) for this IO-Link device is not available + "603": + value: + code: 603 + message: IODD upload failed. IODD XML invalid + "604": + value: + code: 604 + message: IODD upload failed. CRC error + "605": + value: + code: 605 + message: IODD upload failed. Parsing error + "701": + value: + code: 701 + message: Data set incomplete + "702": + description: whole data set is rejected + value: + code: 702 + message: Data set not applicable + "703": + description: whole data set is rejected + value: + code: 703 + message: Data set combination incompatible + HTTP_401: + description: Unauthorized + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject" + examples: + "150": + description: due to user management restrictions + value: + code: 140 + message: Invalid credentials + HTTP_403: + description: Forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject" + examples: + "150": + description: due to user management restrictions + value: + code: 150 + message: Permission denied + HTTP_404: + description: Not found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject" + examples: + "103": + value: + code: 103 + message: Operation not supported + "301": + description: e.g. wrong URL + value: + code: 301 + message: Resource not found + "302": + value: + code: 302 + message: masterNumber not found + "303": + value: + code: 303 + message: portNumber not found + "304": + value: + code: 304 + message: deviceAlias not found + "308": + description: e.g. not connected or communication error + value: + code: 308 + message: IO-Link Device is not accessible + "309": + value: + code: 309 + message: IO-Link Parameter not found + "310": + value: + code: 310 + message: IO-Link parameter access not supported by the Device + "312": + value: + code: 312 + message: IO-Link parameter name is not unique + HTTP_500: + description: Internal server error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject" + examples: + "101": + value: + code: 101 + message: Internal server error + "102": + value: + code: 102 + message: Internal communication error + "602": + value: + code: 602 + message: IODD upload failed. Not enough memory + HTTP_501: + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject" + examples: + "105": + value: + code: 105 + message: IODD feature not supported + "106": + value: + code: 106 + message: MQTT feature not supported + HTTP_503: + description: Service unavailable + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject" + examples: + "107": + value: + code: 107 + message: "Service temporarily unavailable" From 32d95a677a5bfd63eec15e185cc7abcdfdb8e74e Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 18 Sep 2023 13:28:54 +0200 Subject: [PATCH 058/279] Introduce enpoint for device fw update and reading update status. --- JSON_for_IO-Link.yaml | 83 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index e07875f..f59c1f6 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3053,6 +3053,56 @@ paths: "500": $ref: "#/components/responses/HTTP_500" + "/devices/{deviceAlias}/firmware/update": + post: + operationId: PostDevicesDeviceAliasFirmwareUpdate + tags: + - devices + summary: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. + description: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. + responses: + "200": + description: >- + Successful operation. Device firmware has been updated. + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/deviceFirmwareUpdatePost" + + "/devices/{deviceAlias}/firmware/status": + get: + operationId: GetDevicesDeviceAliasFirmwareUpdateStatus + tags: + - devices + description: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. + summary: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. + responses: + "200": + description: >- + Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. + content: + application/json: + schema: + $ref: "#/components/schemas/deviceFirmwareUpdateStatusGet" + "400": # code 305, 306 + $ref: "#/components/responses/HTTP_400" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + components: schemas: parameterName: @@ -3516,6 +3566,39 @@ components: $ref: "#/components/schemas/deviceParameterValueGetPost" iolinkError: $ref: "#/components/schemas/iolinkErrorObject" + deviceFirmwareUpdatePost: + type: object + properties: + iolfwfile: + type: string + format: binary + description: IOLFW File for the device + required: + - iolfwfile + deviceFirmwareUpdateStatusGet: + type: object + properties: + active: + type: boolean + description: >- + Indicates if a firmware update is currently in progress. + stage: + type: string + description: >- + Indicates the current stage of the firmware update. + enum: + - PREPARATION + - DOWNLOAD + - VALIDATION + - UPDATE + - FINISHED + progress: + type: number + description: >- + Indicates the progress of the firmware update in percent. + minimum: 0 + maximum: 100 + deviceEventsGet: type: array items: From b24f788c7b2c11163ee1384935d62cf6f59f837e Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 18 Sep 2023 16:42:03 +0200 Subject: [PATCH 059/279] Reduced example length --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index b6f74d4..6be5a68 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1098,7 +1098,7 @@ paths: img/png: schema: $ref: "#/components/schemas/ioddFile" - example: "iVBORw0KGgoAAAANSUhEUgAAAKUAAAClCAYAAAA9Kz3aAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH4gsHCCsNe43J7QAAFTJJREFUeNrtnHtYVVXegN99uByQqyQKiChG4mUy00onTVLLdJpGyy5jo5ViNNZkClkqmqKm4hh4T0v9Zqa7Yjal4aWyNDWvjTfMQkVIFFSU2+F2OOv748DhHDjAQcHPvvm9z8Pz6Oacvdde+11r/dZvrY2mlFIIwk2ETqpAECkFQaQUREpBECkFkVIQREpBpBQEkVIQREpBpBQEkVIQKQVBpBRESkEQKQWRUhBESkEQKQWRUhBESkGkFASRUhApBUGkFASRUhApBUGkFERKQRApBZFSEERKQaQUBJFSEERKQaQUBJFSECkFQaQUREpBECkFQaQUREpBECkFkVIQREpBpBQEkVIQKQVBpBQEkVIQKQVBpBRESkEQKQWRUhBESkEQKQWRUhBESkGkFASRUhApBUGkFERKQbhZcHbkQ0opDAYDqamppKSksG/ffvbt3U/62QxMJhPN/ZrTqWM4Ef360rlzFzp27EhAq1bonMR5oeFoSilVl4yXL1/mm2+2s2b1Go4dPY754xpQ+bXKf1ceB29vb54eMZyhQ4fQqVMnnJ2dpab/CyguLqasrAylwMlJh4eHR+NKWVJSws4dO4mPn0/K8RMAODk5UV5ebpFRKYWmabWe3M1dz5jnIxk1ahQBAa2u64aVUhiNRgc+aGkbNri4uNT7VaPRSF5ePvl5eeTm5XLlyhXKy8vx9vbBx8cbH28ffJv74uLiUud9NxbV79nZ2fmarltYWIjBYLB0IL6+vg7VR0PZsOEzEhYkoID7+0Uwc2YcOl3DR0u7XVhubi5Lly5j5dvvUF5ejlKK/g/0Y0xkJOPGjefypRyzlhUVZE9OpRTFRSUsXbyUHd/t4M05s+nevfs133BeXh5TpsRSZDBUk866166UUrOxtGXLVsTFzUCv19d67oMHD7Fl82b27PmBtDNnMRrLAYVSlafTaNXKn+497mTAgAFE3B9BYGBgk8qZ+ksq8fHzMSkTTk5OxMXNICgoqMHn2bZ1G7Nnv2n5//pP19O2bUijl9dYVsbp02cA6Nnz7saLKXNzc5kxI461HydZZGsXGkJs7BQ6duzIvPg5jH3hbxiNRsvv7QlpPmZ+qEcOH+P5MS+wbPkSevXqdU0FNZlMHDp4iPSzvza0v6HX73tib0AwGo3s2LGDRYsWc2DfQfuSW50nK+siyV9uIfnLLQS3ac3YF8cy7LHH8PL2ahIpS8tK+ebr7RQXl+Dl5enYSGFPlvJyzmdmWe6rjojt5pt9FxQUMHvWbNZ+nGTpCZt5uDN33hw6deqEpmkMHDiQ2GmTqauD0DTNcuOaZr7EhfNZ/O2lcRw8cLBJh7vq/6+t/gsKCli0aDHPPRvJgX2HKsKRyi9qFXJqFfepbHpmpeDXjEymTp7GuHGvcPZs+g14VOo6v2tdFze3lM7Wvcaa1Wv48INPbD4wa1Ycffr0sYlrRo4cSXr6Wf5n9T/rFLM65zMvMGnSZFavWU1ISJvGn7VVu2Zlb10dg8FAQkIi76x412riZvX9GuGB/esopdi6ZRv5efkkLHyLkJCQJnlImmY/TnaUXr168dnnn1pO0qJFi9+GlAf2H2Bh4mKbX8a8Op5hjw/DycnJ5ri7uxvR0dGcO5fJluRtdofv2kRJOf4Ty5cvZ+bMOFxdXR0uqIuLC0MfHUJJSUnFcK74bMO/yc66WO0ais6/60xERF9MJhMAPj4+loBbKcX6pPWsfPtdO7Mic7kDgwJ5/IlhhIWF4eLszMVLF/lsw2f858ejKGWq+k5FrLlnzw/MjJtJ4sJEvLy8brqOMjg4mODg4N9WnjI/P58lS5dSUlJqqYE/PvIwo0ePrnWW5ufnx/Tpb5B5LpNjR4/bPNzagv/KWPOTj9byyCOP0Lv3vQ4X1NPTk4kTJ9pkB346cYKL2RdrDFN9+vRmypTJtnFKhZS//PILc+fG2+kFzU99zPOjeeGvfyUgIACdrqpHHD58OF98sZG4GTPJy82rmABVZSCSk7fy0KAtPP74sKaZ/Gg3Xg6TyYTRaKSoqAhN03Bzc7shmQdngB8P/ci33+ywHLyjW1emTovFt7mv5VhOTg7Hjh2jV69elh6uXbt2xM+fR+ToMVw4n+3g8KooLS3lg/c/4K67etQ6I7YbAFulF3Q6HfYDW/PEy14qwmQykbQuidyruXaessaYqNFMmvQ67u7uNcrt4eHBk08+gbu7O+PHTaC0tKxGT5bwViIDBgzAz695I8fK1/f97Oxstm//Fg1wc3PjoUGD0OtdUUqxc+dOLly4AApuDQujR4/ulJSUcPx4Cl999RWbk7dYGn5wm2CGDP0TDw0cSLvQdnblrMpW1E9mZibff7/LcoPNPDwYNOghnI1GI+vXf2rpKYJaBzF33lzatGlj6SVOnTrNjBkz2PHd97w87iWiop7Hx8cHgG7dujEvfi4vRI2lpLi0Roqo8t+2x2Bz8hbGjz9Lh/AO3KhuJTPzPOvWJVkqrmoyBgGBAURFRdUQsnqjePjhP7B7127ef+/DGr9PP5vBoYMHeeDBBxo/prwOcnJyiIl+FWWCO7vfQf8B/dHrzR3Ld9/tYMXyd8zzhzfj8PLyZOWKlSSt+9QqLWZ+djk5lzly+ChrVq8hITGB3r3vdTiOr1FX6RnExMSw+/sfAEW3O7uxcFEizs7O6LKzs/lyUzJKmYfIvy+Ip2vX2y1C7dmzh9GjRrP96+8oN5azMGExr018nYyMDMsF+vXrz7Q3ploKY13Qyn9XHTP3ZCUlpezbv7/RZtqOjHEnTqSQnXXRpmxaxSziLyOeJjAwoP6hxdmZJ596EmdnJ8A6P2sOHXbu3Gm1wHDz4IjXG7/YxNPDR/DxR59Y0k+enp54e3tb6gkU5349R0z0q6SlpV1TWX799VdiomPY/f0eALp268qixQu57bYwc+NPT8/AYChC02DaG7H07dsXTdMoLS1l3bokRj0XyanUMzbj1MYvNjEm8nkOHfoRpRTOzk4MH/5nnn1upKVl2aZl7LecAwcOXHPuzbrXdZQTKT/ZmT+YT3Dfffc5vPpw66230v7WULsN5dtvd1BYWHjTSelINe39YS+Z587Tuk1rJk95neQtm/h+9w527trBN9u3MX7COMtnM9Iz+PzfXzQ453np0iVmTI9j9649FaHi7SxevJCwsFurRqS0tDOAwsnJifCOHdHpdFy5cpV58+J5Nfo1CvIL7bQ5jWNHU3h25HNs+HQDpaWl6PV6br+9q2UCULM3qsnuXXsss+nGGNqqKsh+ojw1NbXmcKjAx9fboV6yEm9vLzp36VKt/9HQNB2nUk9TWGhogvxr029ucXV14W8vj2X9+iRefOlFuna9HX9/f/z9W9AhPJxxr4zjhbFRlnvduHGjnQao6ohtLxIbO5XkLzebQ78772DxkkXcdttttmHS5UuXbQ6kpqYyYcIEVr79br3D0OXLOUyY8CqJiQvJzc0FjQbMzBQXzl+guLi40ZPm9igrKzMH9BW9q3UPHhDQCh9vnwb10re2D621LHm5ufzWUErx8isvM/G1ibRp08buqKHX6xk8eBCV+x5OnzpDXl6+w5OtqVOnsvHzTYDGfX37sGTpEsLCwmqGSOfPn7cU6uuvvmbLlq38fPIXat3ZQNUkQdPM652LFy7l7Nmz+Lfwr3cAqYxNKsUoKCjglltuaZSkeWWQba/URqPR3HDspKy8vb1xdnFu0PX8/Pxq/X2BVe+RdSGLgsICB2I+jZC2IXZ3VDk6eajv/KqOc2iaRvPm9W/UCAoMstSf0VhOXl4uQUGBdgPXykafl5tHfHw8m74wz136DejL/Pnzad06qJaUUMUFTCYTSxYvqzF7rk4L/1uIjh7P22+vJCO9ah363xs+p2rd2H6qxsvLk+iY8Wza9CUH9h/i+pdglcOHNU3DycnJbsrC1MCCKKUor0jM27u4deYhKSmJxMRFtUihWWrsFr/mbN6aTPPmzRs/e96ISU4fX180nYYqV/U3A00jNzeXOW/O4eMP15knxf0jiI+Pr1VIAF3bBiyNKaXw92/BkKFDWL1mFff27mknlrNfAaHt27Ly3RWMGDmCZs2aAeY9d5WppesZsh0Zvp2dnfHz87PT2Mx7RhsaRpw7V/vGEB8fbxvhiwxFGAxFFNX4MWAwFFJkKKS0rLQJN0qo6w5/rEdJj4rnV+dlNLh69Soz42bx/nsfopTi/n59+fuC+QQHt677WZlbpmZ3OKxecPOkRYemaXTp0plly5eRkJDI+//60O6NKWVC0yCiXwTTp08nPLyD1cRGERraDhcX12tr+1YLwrY50Yr9FDWCeFfahITYbTjZF7K5ejW3jl6qZhL+9Om0WuW3jk9dXFxpHdzablNVVg3Zy8uzSVdKKsMle4425LqapuHt401+fkGdvXLO5RwSEhL5+KO1VG5sGTToIQICHEi7hYaG1tnDVS942pk0jh45Su8+vWnZsiXTp79B+/btmTN7HmVlZTVa1ajIUYwf/4plE0BaWhonfzoJQM/f98TNTX9dPYD1cFxX7KXT6QgLa28nxNAwGIo4deoUoaHtHExrXCbleEqNelNKcU+vu2nm0cxSnhEj/sJTTz3h2NB4jaPGjUjAVzfcLHjtPezWLV9ZLU6Y6zwubhatg4Pp379fnafXhbQNwdfXx+Hu3WAoYurUaZw+fRoAd3d3Ro8exYqVy/D3v8Uii4urC7PenEls7BSLkOfOZRITHUNWRQL7nnvuqbHZ41oru7KMdY1EnTt3qTGrrKzcbVu3OpwzPXz4MJnnztttuL3vvddmVcjT04PmzZs79FN7nvQ6twk1gZharVuXlOXH1dWF2GmT6f/A/YBGkaGI6Akx7Nq1u24p/fz8ePyJYXXGFdW7959PpjJlcixZWVmWIWvgQwP553v/oHuPbgQGBfLOO2/zzDPPWB7QlStXiIuL48dDRwDw8PTgrrt6NEoayHpiVlfFd+7cmfCOt1Fz84hG0rpPOXbsWL3XvXo1l1WrVmEymao1AHPoEBER0YTD8P/BroxaylFfHOrm7sb8BfFERUUxd+4ceva6G9C4mH2J1ya+xqFDh2qX0snJiYf/+EebVlrfBTVN4/udu0hMSKSgoMAyPN5xxx2sWv0uH3z4Pg8OfNCS3igqKmbRwkVs+iLZco6hQ4dc09b+umJKR5Leo0Y/h/UO7Mp7LS4uYdbM2aSnZ9Se6ikoZMWKFezauRutWk5WKej/QD86de70/1xI2wxDbWUdPHgQjz46FBcXZ4KDg1nw1t/p8rtOgCLtzFlioieSknLCvpQAXbvezuOPP1bxsEwOPmSN9/71AatXraa0tNRytFWrVoSHd7CZfKxbu5bVq/9huSFPL09GjBzRoJeXlFKUlZVV/ZSWoUz2179N5Sbbz5YZLfIOHjyY7t3vtFSs9dr1nt0/8MLzUWxO3szVq1cxGo0YjUZKSkr48cf/EDsllqVLllO1S71yR7fC3d2Nl156ETc3tyaaPZu4uXaM1xVTKvR6vU1o1r59exIS3yI4JLhitD1JTEyM3V37zmDezjQmKpItW7eSl5vXoKItWJBIUOvWDBv2mN147ZtvtjNz5mxM5SaLNKMjn6NzA3uU3Nxcnh7+NJcv51jOXbldzvqdIID33nuf5OSqXjk8PJx3V72DXq/Hz8+PadOnMfIvz1BQUGg1WTLPEI8cOcaYyCgCgwIsrwenp6dzKvW0VeOzlVmn0xg3/mV69OjRpBpo19lbKkWtSe7GDzlqCtulSxeWLFlM5Ogx5FzO4ch/jhI9IZply5fazMqdreOt6TPeYGLMaxU7th3rLU3lJqbGTqNlS38iIiJsfnvy5M9MmRxLkaHYUsiIfn2JjBzd4HfBlVJcuXKVXzPO2UnSVqWDAIqLim0+FxwcbBOS3HVXD+bFz2HS65MrxLQdIpWCzHMX7ExmtGr5WIVOp+O5Uc8wZkxkk77fXlpSRnJyMr6+vlVFqZYXxCrj061bN8KrbQu02dB0jSmhGoI3MOS6++67WLpsCS9E/ZX8vHx+2LOXmOhXSVyYQMuWLW2l1Ol0PProUNLT01mUuMQq7qq/0AX5hUyZHMvqNavp2DEcgPOZ55n0+qQKOcwPsWOnDsTFxV3XOyKVlWEbz9XV0pXd9NCQoUO4pUULpr8xnZ9PptaSFtPq7Ak8vbyIeXU8I0ZULQg0mZSlZcyYPqvWV0+qH1+1ZqWVlI3cC1pt+bNXXUrVPuPUNI2+fe9j4aIEXhr7MsXFJXy7fQdxM2Yya/ZM/Pz8bLee6PV6XnxxLC/9baxlKHa0FaWdOcvU2KlkZ2dTUFBA/Pz57N93ADChlKJrt9tZuCjRsmfueiY41vHqtbZ0nU5H37738dHHHzFpymsEVq7fOoCrqytP/fkJkpI+ITIyssmFrN7wqr8DZX3c/lbBG7RSpBxLPWmaxoMPPsjceW/i5KQDzO9bLVjwFgUFBfb/QkZJSQlrP1nLm7Pnkp+f36DWNuyJR2kd1JrFi5ZUVKSOwX94iGlvTLuuF+CLior49tvvKnZDN2zOqnfT06/f/bUOr0opsrOzOXz4CPv37ePkzz+TkZ5hWbXQ610JCgqibdu29OzVk27d7qBd23a4uLo0qYjZ2dns27cfVMO16tQp3LID5+LFi+zduw+UwsXVlfvvj0Cv16OUYu/efVy8eAmAtm1DLBu8a6OsrIxt276ivNy8Wtez5z34+5s34qSknOD06dMopfD19aFP7z5oOq2O3r+UXbt2U1hQaFndCgsLq/3PtpjKTRw+coSlS5awZfO2emOI6pMNML8VOH7CK/zpT4/g7e3Nb4Hy8nLLy1KVK1ROTk64u7vj4uIifxfpRmRBVT1JSYPBwMGDB/l0/QY2btyEobCoRtdtvdSn0zkR3vE2nn32GfoPGEBgYMA1/T0ZQaSsF6PRSFZWFr/8kkpa2hmOHTtunsRo4OHRjN916UK70FA6dOhAaGg73N3db8gfgRL+i6UUhBuFjKuCSCkIIqUgUgqCSCmIlIIgUgoipSCIlIIgUgoipSCIlIJIKQgipSBSCoJIKYiUgiBSCoJIKYiUgiBSCiKlIIiUgkgpCCKlIIiUgkgpCCKlIFIKgkgpiJSCIFIKIqUgiJSCIFIKIqUgiJSCSCkIIqUgUgqCSCkIIqUgUgqCSCmIlIIgUgoipSCIlIJIKQgipSCIlIJIKQgipSBSCoJIKYiUgiBSCoJIKYiUgiBSCiKlIIiUgkgpCCKlIFIKgkgpCLXxvz6Kf20HDytIAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTEwLTA2VDExOjEzOjAxKzAyOjAwSxzPnwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0xMC0wNlQxMToxMzowMiswMjowMAupbb4AAAAASUVORK5CYII=" + example: "iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAJaSURBVDhPPVPPS3JRED0+LVGpIMUfSCW2iVLEiEytv6IWgiLtFNwJbVp9EP0DIogtol0LEaV2QovWSbgQdCFGLbIgBDW08sftzvTpgcu77905c2bOnaeaTCZCAiqVitcU1WoV39/f2NzchE6n42/TOMkBxuMxERmNRkMcHByIxcVF4XQ6xfr6urDZbMLj8YhcLvc/SggSU6Yq6XQaW1tbCAaDiEQirGIymbC6uor5+XmcnJzg6OiIY7k6ypDP5xGPx+FwOPDw8MCHLpeLyRqNht8J7XYbfr8fV1dXf0SLxcIBT09PnJ3Q6XSwsbGBtbU1fieQ0svLC25ubqAQu9froVgsMun8/BwXFxdYWlqC7AvPz89MkPl5Wa1Wbkut1Wr/HR8f4/DwEMlkEtfX17i/v8dgMEA4HMbX1xcqlcqsErVajff3dyi1Wo0NCYVCuL29BZVtNBqRyWSQSCSwvb2N4XD4Z4hcVB2RVbJZshf9fh96vZ6D9vb28Pr6inK5zK6ORiMmtVotnJ6eIpVKQSEFCjYYDNwD4efnB4VCAfv7+3h7e+NvlOjs7AyxWAwfHx9QvF4vDcFsKqiXUqmEx8dH7pdaILdpH41GuW9yG81mU5jNZiHLE7u7u8Ln8/HTbrcLqSzzCSGvgJ/SbZ6qbDYr+B5pUsi5hYWFmTKVS3tSJkxNpGuiCphIBzs7O2wQHZBZiqKg2+1CVoDLy0vIqjhBvV7H8vIy+O8gBQLZT5dOMzo3N8fKNGbkwcrKCu7u7mYmsuJUgfD5+cmOyt7ZbSIEAgG43W4+J5IQAr+h1V0CntKWLwAAAABJRU5ErkJggg==" "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" "403": From 3a8874b2033b5d06c7e62c4a6671ebd906f0e543 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 18 Sep 2023 16:42:38 +0200 Subject: [PATCH 060/279] Add option to read iodd archives. --- JSON_for_IO-Link.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 6be5a68..6625816 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1099,6 +1099,11 @@ paths: schema: $ref: "#/components/schemas/ioddFile" example: "iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAJaSURBVDhPPVPPS3JRED0+LVGpIMUfSCW2iVLEiEytv6IWgiLtFNwJbVp9EP0DIogtol0LEaV2QovWSbgQdCFGLbIgBDW08sftzvTpgcu77905c2bOnaeaTCZCAiqVitcU1WoV39/f2NzchE6n42/TOMkBxuMxERmNRkMcHByIxcVF4XQ6xfr6urDZbMLj8YhcLvc/SggSU6Yq6XQaW1tbCAaDiEQirGIymbC6uor5+XmcnJzg6OiIY7k6ypDP5xGPx+FwOPDw8MCHLpeLyRqNht8J7XYbfr8fV1dXf0SLxcIBT09PnJ3Q6XSwsbGBtbU1fieQ0svLC25ubqAQu9froVgsMun8/BwXFxdYWlqC7AvPz89MkPl5Wa1Wbkut1Wr/HR8f4/DwEMlkEtfX17i/v8dgMEA4HMbX1xcqlcqsErVajff3dyi1Wo0NCYVCuL29BZVtNBqRyWSQSCSwvb2N4XD4Z4hcVB2RVbJZshf9fh96vZ6D9vb28Pr6inK5zK6ORiMmtVotnJ6eIpVKQSEFCjYYDNwD4efnB4VCAfv7+3h7e+NvlOjs7AyxWAwfHx9QvF4vDcFsKqiXUqmEx8dH7pdaILdpH41GuW9yG81mU5jNZiHLE7u7u8Ln8/HTbrcLqSzzCSGvgJ/SbZ6qbDYr+B5pUsi5hYWFmTKVS3tSJkxNpGuiCphIBzs7O2wQHZBZiqKg2+1CVoDLy0vIqjhBvV7H8vIy+O8gBQLZT5dOMzo3N8fKNGbkwcrKCu7u7mYmsuJUgfD5+cmOyt7ZbSIEAgG43W4+J5IQAr+h1V0CntKWLwAAAABJRU5ErkJggg==" + application/zip: + schema: + $ref: "#/components/schemas/ioddArchive" + example: "IODD in archive format provided by the IODD finder" + "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" "403": From 64f02e0b664edc6e68156fabe9e23d8a65d2149e Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 18 Sep 2023 16:45:40 +0200 Subject: [PATCH 061/279] Add iodd zip as part of artifact parameter --- JSON_for_IO-Link.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 6625816..87708d5 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3077,6 +3077,7 @@ components: - DeviceIcon - DeviceSymbol - VendorLogo + - zip default: XML parameterName: type: string From abc1c1c29ce4fc9aa24bc6d86d92a7f0ba3e07c2 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 11:33:30 +0200 Subject: [PATCH 062/279] Fix indent formatting --- JSON_for_IO-Link.yaml | 201 +++++++++++++++++++++--------------------- 1 file changed, 100 insertions(+), 101 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index edfb98c..7082b1d 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5,7 +5,7 @@ info: description: >- # Description - + This is an [openapi specification](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md) for IO-Link gateways, masters and devices. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) @@ -1294,7 +1294,7 @@ paths: "500": $ref: "#/components/responses/HTTP_500" - "/masters/{masterNumber}/configuration": + "/masters/{masterNumber}/configuration": get: operationId: GetMastersMasterNumberConfiguration tags: @@ -1314,7 +1314,7 @@ paths: IO-Link: $ref: "#/components/examples/exampleMasterConfiguration" IO-Link_Wireless: - $ref: "#/components/examples/exampleWirelessMasterConfiguration" + $ref: "#/components/examples/exampleWirelessMasterConfiguration" "403": $ref: "#/components/responses/HTTP_403" "500": @@ -1335,9 +1335,9 @@ paths: $ref: "#/components/schemas/mastersConfigurationGetPost" examples: IO-Link: - $ref: "#/components/examples/exampleMasterConfiguration" + $ref: "#/components/examples/exampleMasterConfiguration" IO-Link_Wireless: - $ref: "#/components/examples/exampleWirelessMasterConfiguration" + $ref: "#/components/examples/exampleWirelessMasterConfiguration" responses: "204": description: Successful operation @@ -4996,7 +4996,7 @@ components: version: "2.1" releaseDate: "2015-01-02" iolinkRevision: "1.1" - availableArtifacts: [XML, DeviceIcon, DeviceSymbol, VendorLogo] + availableArtifacts: [XML, DeviceIcon, DeviceSymbol, VendorLogo] iolinkErrorObject: type: object required: @@ -5428,104 +5428,103 @@ components: value: code: 107 message: "Service temporarily unavailable" - + examples: # reusable examples exampleMasterConfiguration: summary: IO-Link Master - value: + value: exampleWirelessMasterConfiguration: summary: Wireless IO-Link Master - value: - masterId: 5 - advancedConnectivity: - "ahtEnable": false - pairingTimeout: - value: 25 - unit: s - serviceTrackNumber: 1 - serviceTrackMode: CYCLIC - trackTxPower: - "track_1": 31 - "track_2": 31 - "track_3": 31 - "track_4": 0 - "track_5": 0 - blockList: - "2403": false - "2404": false - "2405": false - "2406": false - "2407": false - "2408": false - "2409": false - "2410": false - "2411": false - "2412": false - "2413": false - "2414": false - "2415": false - "2416": false - "2417": false - "2418": false - "2419": false - "2420": false - "2421": false - "2422": false - "2423": false - "2424": false - "2425": false - "2426": false - "2427": false - "2428": false - "2429": false - "2430": false - "2431": false - "2432": false - "2433": false - "2434": false - "2435": false - "2436": false - "2437": false - "2438": false - "2439": false - "2440": false - "2441": false - "2442": false - "2443": false - "2444": false - "2445": false - "2446": false - "2447": false - "2448": false - "2449": false - "2450": false - "2451": false - "2452": false - "2453": false - "2454": false - "2455": false - "2456": false - "2457": false - "2458": false - "2459": false - "2460": false - "2461": false - "2462": false - "2463": false - "2464": false - "2465": false - "2466": false - "2467": false - "2468": false - "2469": false - "2470": false - "2471": false - "2472": false - "2473": false - "2474": false - "2475": false - "2476": false - "2477": false - "2478": false - + value: + masterId: 5 + advancedConnectivity: + "ahtEnable": false + pairingTimeout: + value: 25 + unit: s + serviceTrackNumber: 1 + serviceTrackMode: CYCLIC + trackTxPower: + "track_1": 31 + "track_2": 31 + "track_3": 31 + "track_4": 0 + "track_5": 0 + blockList: + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false From 7fc889f73393be3f67177660353a662d78e5acce Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 11:34:06 +0200 Subject: [PATCH 063/279] Add description for process data valid flag in case of output process data --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 7082b1d..a2b6343 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -4772,7 +4772,7 @@ components: valid: type: boolean description: > - Process data validity + Process data validity in case of incoming process data. The valid flag is equired but not evaluated for output process data. - type: object required: - value From 2912f4e96c0b21467be73ef2e3f3b1d9432669f8 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 11:49:35 +0200 Subject: [PATCH 064/279] Add reference to PQI and OE from IO-Link spec. --- JSON_for_IO-Link.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index a2b6343..343c456 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -18,7 +18,7 @@ info: > [JSON Integration for IO-Link V1.0](http://www.io-link.com/io-link/10.222/V1.0) - > [IO-Link Interface and System Specification V1.13](http://www.io-link.com/io-link/10.002/V1.13) + > [IO-Link Interface and System Specification V1.1.3](http://www.io-link.com/io-link/10.002/V1.13) > [IO-Link Wireless System Extensions V1.1](http://www.io-link.com/io-link/10.122/V1.1) @@ -4772,7 +4772,7 @@ components: valid: type: boolean description: > - Process data validity in case of incoming process data. The valid flag is equired but not evaluated for output process data. + Process data validity in case of incoming process data see PQI (Table E.10 - IO-Link Interface and System Specification V1.13). The valid flag is required but not evaluated for output process data and it is not an equivalent to OE (Table E.11 IO-Link Interface and System Specification V1.13) - type: object required: - value From ea566fcf1713544ec51e4fdf700e07c7ee6f32bd Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 11:50:15 +0200 Subject: [PATCH 065/279] Correct typo --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 343c456..5841b01 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -4772,7 +4772,7 @@ components: valid: type: boolean description: > - Process data validity in case of incoming process data see PQI (Table E.10 - IO-Link Interface and System Specification V1.13). The valid flag is required but not evaluated for output process data and it is not an equivalent to OE (Table E.11 IO-Link Interface and System Specification V1.13) + Process data validity in case of incoming process data see PQI (Table E.10 - IO-Link Interface and System Specification V1.13). The valid flag is required but not evaluated for output process data and it is not equivalent to OE (Table E.11 IO-Link Interface and System Specification V1.13) - type: object required: - value From ec22a3ab845a8b7abb984622e1288d8975aa74e2 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 13:19:31 +0200 Subject: [PATCH 066/279] Combine status and fwupdate into one endpoint --- JSON_for_IO-Link.yaml | 44 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index f59c1f6..afd13de 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3053,17 +3053,21 @@ paths: "500": $ref: "#/components/responses/HTTP_500" - "/devices/{deviceAlias}/firmware/update": - post: - operationId: PostDevicesDeviceAliasFirmwareUpdate + "/devices/{deviceAlias}/fwupdate": + get: + operationId: GetDevicesDeviceAliasFirmwareUpdateStatus tags: - devices - summary: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. - description: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. + description: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. + summary: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. responses: "200": description: >- - Successful operation. Device firmware has been updated. + Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. + content: + application/json: + schema: + $ref: "#/components/schemas/deviceFirmwareUpdateStatusGet" "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" "403": @@ -3072,28 +3076,16 @@ paths: $ref: "#/components/responses/HTTP_404" "500": $ref: "#/components/responses/HTTP_500" - requestBody: - required: true - content: - multipart/form-data: - schema: - $ref: "#/components/schemas/deviceFirmwareUpdatePost" - - "/devices/{deviceAlias}/firmware/status": - get: - operationId: GetDevicesDeviceAliasFirmwareUpdateStatus + post: + operationId: PostDevicesDeviceAliasFirmwareUpdate tags: - devices - description: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. - summary: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. + summary: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. + description: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. responses: "200": description: >- - Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. - content: - application/json: - schema: - $ref: "#/components/schemas/deviceFirmwareUpdateStatusGet" + Successful operation. Device firmware has been updated. "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" "403": @@ -3102,6 +3094,12 @@ paths: $ref: "#/components/responses/HTTP_404" "500": $ref: "#/components/responses/HTTP_500" + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/deviceFirmwareUpdatePost" components: schemas: From cb6a7e55c09d7880f9d249bec1804c625193b99c Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 13:48:29 +0200 Subject: [PATCH 067/279] Add devices response type as schema --- JSON_for_IO-Link.yaml | 267 +++++++++++++++++++++--------------------- 1 file changed, 135 insertions(+), 132 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index edfb98c..7ed9feb 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5,7 +5,7 @@ info: description: >- # Description - + This is an [openapi specification](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md) for IO-Link gateways, masters and devices. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) @@ -1294,7 +1294,7 @@ paths: "500": $ref: "#/components/responses/HTTP_500" - "/masters/{masterNumber}/configuration": + "/masters/{masterNumber}/configuration": get: operationId: GetMastersMasterNumberConfiguration tags: @@ -1314,7 +1314,7 @@ paths: IO-Link: $ref: "#/components/examples/exampleMasterConfiguration" IO-Link_Wireless: - $ref: "#/components/examples/exampleWirelessMasterConfiguration" + $ref: "#/components/examples/exampleWirelessMasterConfiguration" "403": $ref: "#/components/responses/HTTP_403" "500": @@ -1335,9 +1335,9 @@ paths: $ref: "#/components/schemas/mastersConfigurationGetPost" examples: IO-Link: - $ref: "#/components/examples/exampleMasterConfiguration" + $ref: "#/components/examples/exampleMasterConfiguration" IO-Link_Wireless: - $ref: "#/components/examples/exampleWirelessMasterConfiguration" + $ref: "#/components/examples/exampleWirelessMasterConfiguration" responses: "204": description: Successful operation @@ -1926,37 +1926,7 @@ paths: content: application/json: schema: - type: array - items: - type: object - required: - - deviceAlias - - masterNumber - - portNumber - properties: - deviceAlias: - type: string - minLength: 1 - maxLength: 32 - masterNumber: - type: integer - minimum: 1 - portNumber: - type: integer - minimum: 1 - example: - - deviceAlias: DT35 - masterNumber: 1 - portNumber: 1 - - deviceAlias: TAD081 - masterNumber: 1 - portNumber: 2 - - deviceAlias: BNI_IOL - masterNumber: 1 - portNumber: 3 - - deviceAlias: master1port4 - masterNumber: 1 - portNumber: 4 + $ref: "#/components/schemas/devicesGet" "403": $ref: "#/components/responses/HTTP_403" "500": @@ -4816,6 +4786,40 @@ components: value: false "format=byteArray/iodd, pin4=sio, pin2=deactivated/not available": cqValue: false + devicesGet: + type: array + items: + type: object + description: > + Information about the device access parameter like master/ port number and the unique deviceAlias. + required: + - deviceAlias + - masterNumber + - portNumber + properties: + deviceAlias: + type: string + minLength: 1 + maxLength: 32 + masterNumber: + type: integer + minimum: 1 + portNumber: + type: integer + minimum: 1 + example: + - deviceAlias: DT35 + masterNumber: 1 + portNumber: 1 + - deviceAlias: TAD081 + masterNumber: 1 + portNumber: 2 + - deviceAlias: BNI_IOL + masterNumber: 1 + portNumber: 3 + - deviceAlias: master1port4 + masterNumber: 1 + portNumber: 4 deviceProcessDataValueGet: type: object description: > @@ -4996,7 +5000,7 @@ components: version: "2.1" releaseDate: "2015-01-02" iolinkRevision: "1.1" - availableArtifacts: [XML, DeviceIcon, DeviceSymbol, VendorLogo] + availableArtifacts: [XML, DeviceIcon, DeviceSymbol, VendorLogo] iolinkErrorObject: type: object required: @@ -5428,104 +5432,103 @@ components: value: code: 107 message: "Service temporarily unavailable" - + examples: # reusable examples exampleMasterConfiguration: summary: IO-Link Master - value: + value: exampleWirelessMasterConfiguration: summary: Wireless IO-Link Master - value: - masterId: 5 - advancedConnectivity: - "ahtEnable": false - pairingTimeout: - value: 25 - unit: s - serviceTrackNumber: 1 - serviceTrackMode: CYCLIC - trackTxPower: - "track_1": 31 - "track_2": 31 - "track_3": 31 - "track_4": 0 - "track_5": 0 - blockList: - "2403": false - "2404": false - "2405": false - "2406": false - "2407": false - "2408": false - "2409": false - "2410": false - "2411": false - "2412": false - "2413": false - "2414": false - "2415": false - "2416": false - "2417": false - "2418": false - "2419": false - "2420": false - "2421": false - "2422": false - "2423": false - "2424": false - "2425": false - "2426": false - "2427": false - "2428": false - "2429": false - "2430": false - "2431": false - "2432": false - "2433": false - "2434": false - "2435": false - "2436": false - "2437": false - "2438": false - "2439": false - "2440": false - "2441": false - "2442": false - "2443": false - "2444": false - "2445": false - "2446": false - "2447": false - "2448": false - "2449": false - "2450": false - "2451": false - "2452": false - "2453": false - "2454": false - "2455": false - "2456": false - "2457": false - "2458": false - "2459": false - "2460": false - "2461": false - "2462": false - "2463": false - "2464": false - "2465": false - "2466": false - "2467": false - "2468": false - "2469": false - "2470": false - "2471": false - "2472": false - "2473": false - "2474": false - "2475": false - "2476": false - "2477": false - "2478": false - + value: + masterId: 5 + advancedConnectivity: + "ahtEnable": false + pairingTimeout: + value: 25 + unit: s + serviceTrackNumber: 1 + serviceTrackMode: CYCLIC + trackTxPower: + "track_1": 31 + "track_2": 31 + "track_3": 31 + "track_4": 0 + "track_5": 0 + blockList: + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false From 41eee3e60894e5bcb51badb2c1174d02ddf1955b Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 13:56:48 +0200 Subject: [PATCH 068/279] Add ioddFileName property for /devices endpoint --- JSON_for_IO-Link.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 7ed9feb..b76ed52 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -4807,6 +4807,10 @@ components: portNumber: type: integer minimum: 1 + ioddFileName: + type: string + minLength: 1 + maxLength: 64 example: - deviceAlias: DT35 masterNumber: 1 @@ -4820,6 +4824,7 @@ components: - deviceAlias: master1port4 masterNumber: 1 portNumber: 4 + ioddFileName: vendorname-devicename-20231016-IODD1.1.xml deviceProcessDataValueGet: type: object description: > From 9ff1f3bc58f3ceec7f0fca9235aed72c9caaea25 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 13:59:58 +0200 Subject: [PATCH 069/279] Add ioddFileName to iodd ident object --- JSON_for_IO-Link.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index b76ed52..85b59d1 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -4982,6 +4982,8 @@ components: type: array items: $ref: "#/components/schemas/artifact" + ioddFileName: + type: string ioddFile: description: The IODD XML file or other IODD artifacts. type: string @@ -5006,6 +5008,7 @@ components: releaseDate: "2015-01-02" iolinkRevision: "1.1" availableArtifacts: [XML, DeviceIcon, DeviceSymbol, VendorLogo] + ioddFileName: vendorname-devicename-20231016-IODD1.1.xml iolinkErrorObject: type: object required: From a9e08e675043dc48b99f63c5135d68c1f9ea6a9c Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 16:08:47 +0200 Subject: [PATCH 070/279] Add note that parametername may change --- JSON_for_IO-Link.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 85b59d1..7ca57e2 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5196,6 +5196,8 @@ components: Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ Rule 6: The naming of ArrayT elements is “element_{subindex}”. + + Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ schema: type: string minLength: 1 @@ -5213,6 +5215,8 @@ components: Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + + Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ schema: type: string minLength: 1 From c4dbf187acc51c8160f2f1e701a2edcf51a25ea5 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 16:26:55 +0200 Subject: [PATCH 071/279] Add message and action --- JSON_for_IO-Link.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index afd13de..c579b7e 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3590,6 +3590,16 @@ components: - VALIDATION - UPDATE - FINISHED + message: + type: string + description: >- + Status message according to BLOB Transfer & Firmware Update Specification Version 1.1 September 2019 (Table 19 – Error displays of FW-Update tools). + example: Selected file is not a firmware update file + action: + type: string + description: >- + Indicates the action to be taken by the user. + example: Look for a file with extension .iolfw progress: type: number description: >- From adc2e12d9e7dd0b41e74d407107b5105d840aba2 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 16 Oct 2023 16:33:05 +0200 Subject: [PATCH 072/279] Change description. Valid flag of pd out should be equivalent to OE --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 5841b01..cd4fad4 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -4772,7 +4772,7 @@ components: valid: type: boolean description: > - Process data validity in case of incoming process data see PQI (Table E.10 - IO-Link Interface and System Specification V1.13). The valid flag is required but not evaluated for output process data and it is not equivalent to OE (Table E.11 IO-Link Interface and System Specification V1.13) + Process data validity in case of incoming process data see PQI (Table E.10 - IO-Link Interface and System Specification V1.13). The valid flag is required and is equivalent to OE (Table E.11 IO-Link Interface and System Specification V1.13). In case it is set to false the process data should be invalidated by master command 0x99 (see Table B.2 - IO-Link Interface and System Specification V1.13). - type: object required: - value From d78e1f933a0167ababb2d9d62cb42a974eee83d5 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 30 Oct 2023 10:01:24 +0100 Subject: [PATCH 073/279] Add reference to table in specification --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index c579b7e..e333c5e 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3598,7 +3598,7 @@ components: action: type: string description: >- - Indicates the action to be taken by the user. + Indicates the action to be taken by the user according to BLOB Transfer & Firmware Update Specification Version 1.1 September 2019 (Table 19 – Error displays of FW-Update tools). example: Look for a file with extension .iolfw progress: type: number From c09c2bd1eabb6abb9e77b671e4066e162ff0e532 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 30 Oct 2023 10:09:07 +0100 Subject: [PATCH 074/279] Increase string length of ioddFileName to 128 --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 7ca57e2..eab5e75 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -4810,7 +4810,7 @@ components: ioddFileName: type: string minLength: 1 - maxLength: 64 + maxLength: 128 example: - deviceAlias: DT35 masterNumber: 1 From 7a9a2f3b167b8271c05365957f61f11084b6b79e Mon Sep 17 00:00:00 2001 From: roesekoSICKAG <95340986+roesekoSICKAG@users.noreply.github.com> Date: Tue, 31 Oct 2023 09:22:59 +0100 Subject: [PATCH 075/279] Update CODEOWNERS --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c9f4455..c7d0c75 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,4 +2,4 @@ # the repo. Unless a later match takes precedence, # following users will be requested for # review when someone opens a pull request. -* @fm-sick @vervoortb @haliCR1 @BaRu-ifm @julian-st @lorandmolnar @mrentsch65 @roeseko +* @fm-sick @vervoortb @haliCR1 @BaRu-ifm @julian-st @lorandmolnar @mrentsch65 @roesekoSICKAG From 0a8aef614329390c4e9de2f167883a23081b296f Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 31 Oct 2023 10:31:21 +0100 Subject: [PATCH 076/279] Replace http status code 403 by 401 --- JSON_for_IO-Link.yaml | 497 +++++++++++++++++++++--------------------- 1 file changed, 244 insertions(+), 253 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 0650b61..6f9340f 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5,7 +5,7 @@ info: description: >- # Description - + This is an [openapi specification](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md) for IO-Link gateways, masters and devices. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) @@ -99,25 +99,25 @@ paths: application/json: examples: "no_security": - description: no authorization or other access control mechanisms are used + description: no authorization or other access control mechanisms are used value: "@context": https://www.w3.org/2022/wot/td/v1.1 securityDefinitions: nosec_sc: scheme: nosec security: - - nosec_sc + - nosec_sc "basic_security": - description: Unencrypted username and password sent with every request [RFC7617]. + description: Unencrypted username and password sent with every request [RFC7617]. value: "@context": https://www.w3.org/2022/wot/td/v1.1 securityDefinitions: basic_sc: scheme: basic in: header - security: basic_sc + security: basic_sc "bearer_security": - description: Bearer Token [RFC6750] security used independently of OAuth2. Base URI and relative links to the login and logout endpoints are provided. + description: Bearer Token [RFC6750] security used independently of OAuth2. Base URI and relative links to the login and logout endpoints are provided. value: "@context": https://www.w3.org/2022/wot/td/v1.1 securityDefinitions: @@ -126,19 +126,19 @@ paths: in: header format: jws scopes: - - Operator - - Maintenance - - Specialist + - Operator + - Maintenance + - Specialist security: basic_sc - base: https://iolmaster.io-link.com + base: https://iolmaster.io-link.com links: - - href: /auth/login - rel: login - - href: /auth/logout - rel: logout + - href: /auth/login + rel: login + - href: /auth/logout + rel: logout "oauth2_security": description: OAuth 2.0 authentication security configuration for systems conformant with [RFC6749] and [RFC8252] - value: + value: "@context": https://www.w3.org/2022/wot/td/v1.1 securityDefinitions: oauth2_sc: @@ -146,9 +146,9 @@ paths: flow: client token: https://example.com/token scopes: - - Operator - - Maintenance - security: oauth2_sc + - Operator + - Maintenance + security: oauth2_sc "proxy_security": description: Digest authentication on a proxy combined with bearer token authentication on the IO-Link gateway value: @@ -164,8 +164,8 @@ paths: alg: ES256 authorization: https://authserver.example.com:8443/ security: - - proxy_sc - - bearer_sc + - proxy_sc + - bearer_sc "/openapi": get: tags: @@ -231,7 +231,7 @@ paths: { "name": "tbd", "url": "http://www.io-link.com" }, ...: "to be continued", } - "403": + "401": description: Forbidden content: application/json: @@ -283,7 +283,7 @@ paths: value: version: 1.0.0 additionalInfo: 1.2.3-feature-xyz - "403": + "401": description: Forbidden content: application/json: @@ -323,8 +323,8 @@ paths: application/json: schema: $ref: "#/components/schemas/gatewayIdentificationGet" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" "/gateway/capabilities": @@ -341,8 +341,8 @@ paths: application/json: schema: $ref: "#/components/schemas/gatewayCapabilitiesGet" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" "/gateway/configuration": @@ -392,8 +392,8 @@ paths: ipAddress: 192.168.200.7 subnetMask: 255.255.255.0 standardGateway: 192.168.200.1 - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" post: @@ -440,8 +440,8 @@ paths: description: Successful operation "400": # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" @@ -457,8 +457,8 @@ paths: description: Successful operation "400": # code 104 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" @@ -474,8 +474,8 @@ paths: description: Successful operation "400": # code 104 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" @@ -591,8 +591,8 @@ paths: text: Device hardware fault – Device exchange "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" delete: @@ -613,8 +613,8 @@ paths: description: Successful operation "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" @@ -653,8 +653,8 @@ paths: Inactive client: value: clientMode: "INACTIVE" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -696,8 +696,8 @@ paths: description: Successful operation "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -762,8 +762,8 @@ paths: interval: value: 10 unit: ms - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -828,8 +828,8 @@ paths: type: integer "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -896,8 +896,8 @@ paths: interval: value: 1000 unit: ms - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -917,8 +917,8 @@ paths: description: Successful operation "400": # code 104 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -940,8 +940,8 @@ paths: application/json: schema: $ref: "#/components/schemas/mqttConnectionStatusGet" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -975,8 +975,8 @@ paths: $ref: "#/components/schemas/ioddsGet" "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -998,8 +998,8 @@ paths: description: Successful operation "400": # code 104, 305, 306 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1037,8 +1037,8 @@ paths: "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1069,8 +1069,8 @@ paths: description: Successful operation "400": # code 104, 208, 603, 604, 605 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": # code 101, 602 @@ -1097,8 +1097,8 @@ paths: application/json: schema: $ref: "#/components/schemas/identificationMasters" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" "/masters/{masterNumber}/capabilities": @@ -1127,8 +1127,8 @@ paths: IO-Link_Wireless: value: numberOfPorts: 40 - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1186,8 +1186,8 @@ paths: applicationSpecificTag: "***" locationTag: "***" functionTag: "***" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1217,14 +1217,14 @@ paths: description: Successful operation "400": # code 104, 201, 202, 203, 206, 208 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": $ref: "#/components/responses/HTTP_500" - "/masters/{masterNumber}/configuration": + "/masters/{masterNumber}/configuration": get: operationId: GetMastersMasterNumberConfiguration tags: @@ -1244,9 +1244,9 @@ paths: IO-Link: $ref: "#/components/examples/exampleMasterConfiguration" IO-Link_Wireless: - $ref: "#/components/examples/exampleWirelessMasterConfiguration" - "403": - $ref: "#/components/responses/HTTP_403" + $ref: "#/components/examples/exampleWirelessMasterConfiguration" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" post: @@ -1265,9 +1265,9 @@ paths: $ref: "#/components/schemas/mastersConfigurationGetPost" examples: IO-Link: - $ref: "#/components/examples/exampleMasterConfiguration" + $ref: "#/components/examples/exampleMasterConfiguration" IO-Link_Wireless: - $ref: "#/components/examples/exampleWirelessMasterConfiguration" + $ref: "#/components/examples/exampleWirelessMasterConfiguration" responses: "204": description: Successful operation @@ -1300,8 +1300,8 @@ paths: value: code: 208 message: POST request without content - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" @@ -1321,8 +1321,8 @@ paths: application/json: schema: $ref: "#/components/schemas/mastersTrackstatusGet" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" @@ -1342,8 +1342,8 @@ paths: application/json: schema: $ref: "#/components/schemas/mastersScanGet" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" post: @@ -1392,8 +1392,8 @@ paths: value: code: 208 message: POST request without content - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" @@ -1443,8 +1443,8 @@ paths: - portNumber: 4 statusInfo: "DEACTIVATED" deviceAlias: "Empty_port" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1466,8 +1466,8 @@ paths: application/json: schema: $ref: "#/components/schemas/mastersPortsQualityallGet" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1530,8 +1530,8 @@ paths: IO-Link_Wireless: value: portType: WIRELESS_MASTER - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1578,8 +1578,8 @@ paths: base: FreeRunning wMasterCycleTimeIn: base: FreeRunning - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1636,8 +1636,8 @@ paths: base: FreeRunning uniqueId: 03:78:00:00:01:32:50:60:46 deviceAlias: Port_X01 - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1705,8 +1705,8 @@ paths: description: Successful operation "400": # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1742,8 +1742,8 @@ paths: value: header: {} content: "" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1781,8 +1781,8 @@ paths: description: Successful operation "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1809,8 +1809,8 @@ paths: description: Successful operation "400": # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1833,8 +1833,8 @@ paths: application/json: schema: $ref: "#/components/schemas/mastersPortsQualityGet" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1887,8 +1887,8 @@ paths: - deviceAlias: master1port4 masterNumber: 1 portNumber: 4 - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "500": $ref: "#/components/responses/HTTP_500" "/devices/{deviceAlias}/capabilities": @@ -1914,8 +1914,8 @@ paths: supportedProfiles: [10, 32770] "400": # code 307 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1941,8 +1941,8 @@ paths: $ref: "#/components/schemas/deviceIdentificationGet" "400": # code 307 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1972,8 +1972,8 @@ paths: description: Successful operation "400": # code 104, 201, 202, 203, 206, 208, 307 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2027,8 +2027,8 @@ paths: value: 5 "400": # code 305, 306, 601 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2074,8 +2074,8 @@ paths: description: Successful operation "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2124,8 +2124,8 @@ paths: iqValue: true "400": # code 305, 306, 601 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2166,8 +2166,8 @@ paths: value: false "400": # code 305, 306, 601 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2195,8 +2195,8 @@ paths: $ref: "#/components/schemas/deviceParametersGet" "400": # code 305, 306, 601 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2243,8 +2243,8 @@ paths: value: 12 "400": # code 305, 306, 307, 311, 601 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2291,8 +2291,8 @@ paths: description: Successful operation "400": # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2337,8 +2337,8 @@ paths: "400": # code 305, 306, 307, 311, 601 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2381,8 +2381,8 @@ paths: description: Successful operation "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2411,8 +2411,8 @@ paths: $ref: "#/components/schemas/deviceSubParametersGet" "400": # code 601 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2441,8 +2441,8 @@ paths: $ref: "#/components/schemas/deviceSubParametersGet" "400": # code 601 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2485,8 +2485,8 @@ paths: unit: "cm" "400": # code 305, 306, 307, 311, 601 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2522,8 +2522,8 @@ paths: description: Successful operation "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2562,8 +2562,8 @@ paths: "400": # code 305, 306, 307, 311, 601 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2600,8 +2600,8 @@ paths: description: Successful operation "400": # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2776,8 +2776,8 @@ paths: message: Parameter value above limit "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2807,8 +2807,8 @@ paths: $ref: "#/components/schemas/deviceEventsGet" "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" - "403": - $ref: "#/components/responses/HTTP_403" + "401": + $ref: "#/components/responses/HTTP_401" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -4926,7 +4926,7 @@ components: version: "2.1" releaseDate: "2015-01-02" iolinkRevision: "1.1" - availableArtifacts: [XML, DeviceIcon, DeviceSymbol, VendorLogo] + availableArtifacts: [XML, DeviceIcon, DeviceSymbol, VendorLogo] iolinkErrorObject: type: object required: @@ -5245,7 +5245,11 @@ components: code: 703 message: Data set combination incompatible HTTP_401: - description: Unauthorized + description: Authentication information is missing or invalid + headers: + WWW_Authenticate: + schema: + type: string content: application/json: schema: @@ -5256,18 +5260,6 @@ components: value: code: 140 message: Invalid credentials - HTTP_403: - description: Forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/errorObject" - examples: - "150": - description: due to user management restrictions - value: - code: 150 - message: Permission denied HTTP_404: description: Not found content: @@ -5358,104 +5350,103 @@ components: value: code: 107 message: "Service temporarily unavailable" - + examples: # reusable examples exampleMasterConfiguration: summary: IO-Link Master - value: + value: exampleWirelessMasterConfiguration: summary: Wireless IO-Link Master - value: - masterId: 5 - advancedConnectivity: - "ahtEnable": false - pairingTimeout: - value: 25 - unit: s - serviceTrackNumber: 1 - serviceTrackMode: CYCLIC - trackTxPower: - "track_1": 31 - "track_2": 31 - "track_3": 31 - "track_4": 0 - "track_5": 0 - blockList: - "2403": false - "2404": false - "2405": false - "2406": false - "2407": false - "2408": false - "2409": false - "2410": false - "2411": false - "2412": false - "2413": false - "2414": false - "2415": false - "2416": false - "2417": false - "2418": false - "2419": false - "2420": false - "2421": false - "2422": false - "2423": false - "2424": false - "2425": false - "2426": false - "2427": false - "2428": false - "2429": false - "2430": false - "2431": false - "2432": false - "2433": false - "2434": false - "2435": false - "2436": false - "2437": false - "2438": false - "2439": false - "2440": false - "2441": false - "2442": false - "2443": false - "2444": false - "2445": false - "2446": false - "2447": false - "2448": false - "2449": false - "2450": false - "2451": false - "2452": false - "2453": false - "2454": false - "2455": false - "2456": false - "2457": false - "2458": false - "2459": false - "2460": false - "2461": false - "2462": false - "2463": false - "2464": false - "2465": false - "2466": false - "2467": false - "2468": false - "2469": false - "2470": false - "2471": false - "2472": false - "2473": false - "2474": false - "2475": false - "2476": false - "2477": false - "2478": false - + value: + masterId: 5 + advancedConnectivity: + "ahtEnable": false + pairingTimeout: + value: 25 + unit: s + serviceTrackNumber: 1 + serviceTrackMode: CYCLIC + trackTxPower: + "track_1": 31 + "track_2": 31 + "track_3": 31 + "track_4": 0 + "track_5": 0 + blockList: + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false From 82d778180a26ca0feb367bf4c60341ce7b821ae8 Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 31 Oct 2023 10:35:35 +0100 Subject: [PATCH 077/279] Adjust example for http code 401 --- JSON_for_IO-Link.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 6f9340f..36a0515 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5258,8 +5258,8 @@ components: "150": description: due to user management restrictions value: - code: 140 - message: Invalid credentials + code: 150 + message: Permission denied HTTP_404: description: Not found content: From 37acf51610cc80793818fb8c27a2c88e7354d315 Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 31 Oct 2023 10:43:56 +0100 Subject: [PATCH 078/279] Move security information from endpoint to security schema --- JSON_for_IO-Link.yaml | 100 +++++++----------------------------------- 1 file changed, 16 insertions(+), 84 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 36a0515..f31d734 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -83,89 +83,6 @@ paths: ################################################################################ # general ################################################################################ - - "/": - get: - tags: - - general - summary: This endpoint provides information about the security mechanisms to be used for interactions - description: >- - Returns the available security mechanisms that must be used for interactions according to the [WoT definitions](https://www.w3.org/TR/wot-thing-description11/) - operationId: getRootInfo - responses: - "200": - description: OK - content: - application/json: - examples: - "no_security": - description: no authorization or other access control mechanisms are used - value: - "@context": https://www.w3.org/2022/wot/td/v1.1 - securityDefinitions: - nosec_sc: - scheme: nosec - security: - - nosec_sc - "basic_security": - description: Unencrypted username and password sent with every request [RFC7617]. - value: - "@context": https://www.w3.org/2022/wot/td/v1.1 - securityDefinitions: - basic_sc: - scheme: basic - in: header - security: basic_sc - "bearer_security": - description: Bearer Token [RFC6750] security used independently of OAuth2. Base URI and relative links to the login and logout endpoints are provided. - value: - "@context": https://www.w3.org/2022/wot/td/v1.1 - securityDefinitions: - bearer_sc: - scheme: bearer - in: header - format: jws - scopes: - - Operator - - Maintenance - - Specialist - security: basic_sc - base: https://iolmaster.io-link.com - links: - - href: /auth/login - rel: login - - href: /auth/logout - rel: logout - "oauth2_security": - description: OAuth 2.0 authentication security configuration for systems conformant with [RFC6749] and [RFC8252] - value: - "@context": https://www.w3.org/2022/wot/td/v1.1 - securityDefinitions: - oauth2_sc: - scheme: oauth2 - flow: client - token: https://example.com/token - scopes: - - Operator - - Maintenance - security: oauth2_sc - "proxy_security": - description: Digest authentication on a proxy combined with bearer token authentication on the IO-Link gateway - value: - "@context": https://www.w3.org/2022/wot/td/v1.1 - securityDefinitions: - proxy_sc: - scheme: digest - proxy: https://portal.example.com/ - bearer_sc: - scheme: bearer - in: header - format: jwt - alg: ES256 - authorization: https://authserver.example.com:8443/ - security: - - proxy_sc - - bearer_sc "/openapi": get: tags: @@ -4954,7 +4871,22 @@ components: minLength: 1 iolinkError: $ref: "#/components/schemas/iolinkErrorObject" - + securitySchemes: + basicAuth: + type: http + scheme: basic + bearerAuth: # arbitrary name for the security scheme + type: http + scheme: bearer + bearerFormat: JWT # optional, arbitrary value for documentation purposes + oauth2: + type: oauth2 + flows: + authorizationCode: + tokenUrl: https://id.sick.com/auth/realms/sickservices/protocol/openid-connect/token + authorizationUrl: https://id.sick.com/auth/realms/sickservices/protocol/openid-connect/auth + scopes: + Maintenance: priviledged access for reading and writing all endpoints #--------------------------------------------------------------------------- parameters: artifact: From 582257f32adb780f904477119a445d278c54d1be Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 31 Oct 2023 10:59:59 +0100 Subject: [PATCH 079/279] Apply security to certain endpoints --- JSON_for_IO-Link.yaml | 88 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index f31d734..444a307 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -319,6 +319,10 @@ paths: - gateway summary: Write the configuration of the Gateway. description: Write the configuration of the Gateway. + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -369,6 +373,10 @@ paths: - gateway summary: Reset the Gateway including all Masters. Optional. description: Invoke a reset of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog. + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] responses: "204": description: Successful operation @@ -386,6 +394,10 @@ paths: - gateway summary: Reboot the Gateway including all Masters. Optional. description: Invoke a reboot of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] responses: "204": description: Successful operation @@ -525,6 +537,10 @@ paths: - $ref: "#/components/parameters/eventdeviceAlias" - $ref: "#/components/parameters/eventTop" - $ref: "#/components/parameters/eventBottom" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] responses: "200": description: Successful operation @@ -586,6 +602,10 @@ paths: summary: >- Update the MQTT configuration of the Gateway. description: Update the MQTT configuration of the Gateway. + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -693,6 +713,10 @@ paths: - mqtt summary: Create a new MQTT topic. description: Create a new MQTT topic. + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -829,6 +853,10 @@ paths: description: Delete a specific MQTT topic. parameters: - $ref: "#/components/parameters/mqttTopicId" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] responses: "204": description: Successful operation @@ -910,6 +938,10 @@ paths: - $ref: "#/components/parameters/vendorId" - $ref: "#/components/parameters/deviceId" - $ref: "#/components/parameters/revision" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] responses: "204": description: Successful operation @@ -970,6 +1002,10 @@ paths: description: > It is not needed to specify the identification data for this action as the parser can read this information. + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -1117,6 +1153,10 @@ paths: description: Write application specific identification to a Master. parameters: - $ref: "#/components/parameters/masterNumber" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -1174,6 +1214,10 @@ paths: description: Write the configuration of the specified Master. parameters: - $ref: "#/components/parameters/masterNumber" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -1269,6 +1313,10 @@ paths: - masters summary: To start a scan of the specified Wireless-Master. description: To start a scan of the specified Wireless-Master. + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] parameters: - $ref: "#/components/parameters/masterNumber" requestBody: @@ -1568,6 +1616,10 @@ paths: parameters: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -1674,6 +1726,10 @@ paths: - $ref: "#/components/parameters/portNumber" summary: Write the Data Storage content to a specific port. description: Write the Data Storage content to a specific port. + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -1715,6 +1771,10 @@ paths: parameters: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -1872,6 +1932,10 @@ paths: description: Write application specific identification to the Device. parameters: - $ref: "#/components/parameters/deviceAlias" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -1960,6 +2024,10 @@ paths: description: Write the process data output values to the specified Device. parameters: - $ref: "#/components/parameters/deviceAlias" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -2178,6 +2246,10 @@ paths: parameters: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/index" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -2273,6 +2345,10 @@ paths: parameters: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/parameterName" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -2421,6 +2497,10 @@ paths: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/index" - $ref: "#/components/parameters/subindex" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -2499,6 +2579,10 @@ paths: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/parameterName" - $ref: "#/components/parameters/subParameterName" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: @@ -2537,6 +2621,10 @@ paths: parameters: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/format" + security: + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] requestBody: required: true content: From bdbd233fae1d0410c6b22397b5c9b5ec18b515db Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 31 Oct 2023 11:40:59 +0100 Subject: [PATCH 080/279] Add error for firmware update endpoint --- JSON_for_IO-Link.yaml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index c579b7e..2f86a44 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3083,10 +3083,10 @@ paths: summary: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. description: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. responses: - "200": + "204": description: >- Successful operation. Device firmware has been updated. - "400": # code 305, 306 + "400": # code 107 $ref: "#/components/responses/HTTP_400" "403": $ref: "#/components/responses/HTTP_403" @@ -5455,6 +5455,11 @@ components: value: code: 104 message: Action locked by another client + "107": + description: Error during device firmware update + value: + code: 107 + message: Read /devices/{deviceAlias}/fwupdate to get more information about the status. "201": description: Error while parsing the incoming JSON object value: From 0bf15af6663682b0bf099a0507efaa99539eaab3 Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 31 Oct 2023 11:41:14 +0100 Subject: [PATCH 081/279] Add password parameter --- JSON_for_IO-Link.yaml | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 2f86a44..23c212b 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3567,6 +3567,9 @@ components: deviceFirmwareUpdatePost: type: object properties: + password: + type: string + description: password for updating the device if required iolfwfile: type: string format: binary @@ -5658,14 +5661,3 @@ components: value: code: 106 message: MQTT feature not supported - HTTP_503: - description: Service unavailable - content: - application/json: - schema: - $ref: "#/components/schemas/errorObject" - examples: - "107": - value: - code: 107 - message: "Service temporarily unavailable" From 98b622b20aebf36786f53d56ec01df3ad16d4905 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 3 Nov 2023 15:00:47 +0100 Subject: [PATCH 082/279] Add 403 http status code --- JSON_for_IO-Link.yaml | 130 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 444a307..08f101a 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -242,6 +242,8 @@ paths: $ref: "#/components/schemas/gatewayIdentificationGet" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" "/gateway/capabilities": @@ -260,6 +262,8 @@ paths: $ref: "#/components/schemas/gatewayCapabilitiesGet" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" "/gateway/configuration": @@ -311,6 +315,8 @@ paths: standardGateway: 192.168.200.1 "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" post: @@ -363,6 +369,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" @@ -384,6 +392,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" @@ -405,6 +415,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" @@ -522,6 +534,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" delete: @@ -548,6 +562,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" @@ -588,6 +604,8 @@ paths: clientMode: "INACTIVE" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -635,6 +653,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -701,6 +721,8 @@ paths: unit: ms "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -771,6 +793,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -839,6 +863,8 @@ paths: unit: ms "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -864,6 +890,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -887,6 +915,8 @@ paths: $ref: "#/components/schemas/mqttConnectionStatusGet" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -922,6 +952,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -949,6 +981,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -988,6 +1022,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1024,6 +1060,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": # code 101, 602 @@ -1052,6 +1090,8 @@ paths: $ref: "#/components/schemas/identificationMasters" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" "/masters/{masterNumber}/capabilities": @@ -1082,6 +1122,8 @@ paths: numberOfPorts: 40 "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1141,6 +1183,8 @@ paths: functionTag: "***" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1176,6 +1220,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1204,6 +1250,8 @@ paths: $ref: "#/components/examples/exampleWirelessMasterConfiguration" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" post: @@ -1263,6 +1311,8 @@ paths: message: POST request without content "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" @@ -1284,6 +1334,8 @@ paths: $ref: "#/components/schemas/mastersTrackstatusGet" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" @@ -1305,6 +1357,8 @@ paths: $ref: "#/components/schemas/mastersScanGet" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" post: @@ -1359,6 +1413,8 @@ paths: message: POST request without content "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" @@ -1410,6 +1466,8 @@ paths: deviceAlias: "Empty_port" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1433,6 +1491,8 @@ paths: $ref: "#/components/schemas/mastersPortsQualityallGet" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1497,6 +1557,8 @@ paths: portType: WIRELESS_MASTER "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1545,6 +1607,8 @@ paths: base: FreeRunning "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1603,6 +1667,8 @@ paths: deviceAlias: Port_X01 "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1676,6 +1742,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1713,6 +1781,8 @@ paths: content: "" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1756,6 +1826,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1788,6 +1860,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1812,6 +1886,8 @@ paths: $ref: "#/components/schemas/mastersPortsQualityGet" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1866,6 +1942,8 @@ paths: portNumber: 4 "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" "/devices/{deviceAlias}/capabilities": @@ -1893,6 +1971,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1920,6 +2000,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -1955,6 +2037,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2010,6 +2094,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2061,6 +2147,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2111,6 +2199,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2153,6 +2243,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2182,6 +2274,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2230,6 +2324,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2282,6 +2378,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2328,6 +2426,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2376,6 +2476,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2406,6 +2508,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2436,6 +2540,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2480,6 +2586,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2521,6 +2629,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2561,6 +2671,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2603,6 +2715,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2783,6 +2897,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -2814,6 +2930,8 @@ paths: $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "404": $ref: "#/components/responses/HTTP_404" "500": @@ -5280,6 +5398,18 @@ components: value: code: 150 message: Permission denied + HTTP_403: + description: Authentication information is not sufficient to access the resource + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject" + examples: + "150": + description: due to user management restrictions + value: + code: 150 + message: Permission denied HTTP_404: description: Not found content: From bf17312f68b1b56b80ec4fd3a0f960f40fe69fdc Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 20 Nov 2023 13:08:54 +0100 Subject: [PATCH 083/279] Adjust /openapi description --- JSON_for_IO-Link.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 08f101a..7c8dcca 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -91,8 +91,7 @@ paths: summary: >- Get the OpenAPI interface description of the IO-Link Master. description: >- - Get the REST interface description of the IO-Link API as OpenAPI YAML - document. + Get the OpenAPI interface description of the IO-Link Master. The general OpenAPI description should be adjusted in regards of vendor specific characteristics like used security schemas, supported endpoints or additional information. responses: "200": description: Successful operation From d278eaa046be15c54a6eeaa06e058f40e3beb7ed Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 20 Nov 2023 13:27:39 +0100 Subject: [PATCH 084/279] Add description for fwupdate post request --- JSON_for_IO-Link.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index c49189a..29ee4f9 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3096,6 +3096,7 @@ paths: $ref: "#/components/responses/HTTP_500" requestBody: required: true + description: The firmware update file in iolfw format. The file must be provided as a multipart/form-data request including the `filename` as header parameter (see RFC7578). content: multipart/form-data: schema: From 8056356898fb11aae4473bd0bd88f6a34fe32d13 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 20 Nov 2023 13:44:22 +0100 Subject: [PATCH 085/279] Add specialist scope --- JSON_for_IO-Link.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 7c8dcca..3744fbd 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5091,8 +5091,8 @@ components: tokenUrl: https://id.sick.com/auth/realms/sickservices/protocol/openid-connect/token authorizationUrl: https://id.sick.com/auth/realms/sickservices/protocol/openid-connect/auth scopes: - Maintenance: priviledged access for reading and writing all endpoints - #--------------------------------------------------------------------------- + MaintenanceRole: priviledged access for reading and writing all endpoints + SpecialistRole: more priviledged access for advanced features like firmware update parameters: artifact: name: artifact From fa0438330a20bf01f1ee11eeb80901971dd48b65 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 20 Nov 2023 17:11:22 +0100 Subject: [PATCH 086/279] Add security description text --- JSON_for_IO-Link.yaml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 3744fbd..5c1c96c 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -13,6 +13,8 @@ info: * Draft for version 1.1.0 * The major versioning of endpoints in case of incompatibility changes is done in the path (e.g. V1, V2, etc.) individually. Request /apiversion in order to get the full version or check the info:version: section of this specification. + * **Security:** The defined security schemas are just examples and can be replaced by vendor specifics. The way of restricting requests is as well in the responsibility of the vendor. It is recommended to limit access to writable endpoint. This should prevent misconfiguration and breaking running systems. + # Specification Reference URIs: > [JSON Integration for IO-Link - Draft V2.0](http://www.io-link.com/io-link/10.222/V2.0) @@ -5078,18 +5080,21 @@ components: $ref: "#/components/schemas/iolinkErrorObject" securitySchemes: basicAuth: + description: Basic authentication mechanism with user and password provided in the HTTP header. type: http scheme: basic - bearerAuth: # arbitrary name for the security scheme + bearerAuth: + description: Provide bearer token which is used in the HTTP header. type: http scheme: bearer - bearerFormat: JWT # optional, arbitrary value for documentation purposes + bearerFormat: JWT oauth2: + description: Standard OAUTH2 mechanism, tokenUrl and authorizationUrl need to be adjusted to the designated security infrastructure. The scopes are just used as examples and can be vendor specific. type: oauth2 flows: authorizationCode: - tokenUrl: https://id.sick.com/auth/realms/sickservices/protocol/openid-connect/token - authorizationUrl: https://id.sick.com/auth/realms/sickservices/protocol/openid-connect/auth + tokenUrl: https://io-link-vendor.com/protocol/openid-connect/token + authorizationUrl: https://io-link-vendor.com/protocol/openid-connect/auth scopes: MaintenanceRole: priviledged access for reading and writing all endpoints SpecialistRole: more priviledged access for advanced features like firmware update From 9ce4a475963dd592f7fcf8b22311fbcd8802c0ad Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 23 Nov 2023 08:20:32 +0100 Subject: [PATCH 087/279] Add olaf and wolfram --- .github/CODEOWNERS | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c7d0c75..35ec011 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1,9 @@ # These owners will be the default owners for everything in + # the repo. Unless a later match takes precedence, + # following users will be requested for + # review when someone opens a pull request. -* @fm-sick @vervoortb @haliCR1 @BaRu-ifm @julian-st @lorandmolnar @mrentsch65 @roesekoSICKAG + +- @fm-sick @vervoortb @haliCR1 @BaRu-ifm @julian-st @lorandmolnar @mrentsch65 @roesekoSICKAG @OlafWestrik @wolfram-ladurner From 9ebbd2a14917a6d3d851925e3b3082ee91031701 Mon Sep 17 00:00:00 2001 From: Markus Rentschler <50681355+mrentsch65@users.noreply.github.com> Date: Thu, 7 Dec 2023 07:09:04 +0100 Subject: [PATCH 088/279] make security optional --- JSON_for_IO-Link.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 5c1c96c..02ac618 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -327,6 +327,7 @@ paths: summary: Write the configuration of the Gateway. description: Write the configuration of the Gateway. security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -383,6 +384,7 @@ paths: summary: Reset the Gateway including all Masters. Optional. description: Invoke a reset of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog. security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -406,6 +408,7 @@ paths: summary: Reboot the Gateway including all Masters. Optional. description: Invoke a reboot of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -553,6 +556,7 @@ paths: - $ref: "#/components/parameters/eventTop" - $ref: "#/components/parameters/eventBottom" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -622,6 +626,7 @@ paths: Update the MQTT configuration of the Gateway. description: Update the MQTT configuration of the Gateway. security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -737,6 +742,7 @@ paths: summary: Create a new MQTT topic. description: Create a new MQTT topic. security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -881,6 +887,7 @@ paths: parameters: - $ref: "#/components/parameters/mqttTopicId" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -972,6 +979,7 @@ paths: - $ref: "#/components/parameters/deviceId" - $ref: "#/components/parameters/revision" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -1040,6 +1048,7 @@ paths: It is not needed to specify the identification data for this action as the parser can read this information. security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -1199,6 +1208,7 @@ paths: parameters: - $ref: "#/components/parameters/masterNumber" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -1264,6 +1274,7 @@ paths: parameters: - $ref: "#/components/parameters/masterNumber" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -1369,6 +1380,7 @@ paths: summary: To start a scan of the specified Wireless-Master. description: To start a scan of the specified Wireless-Master. security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -1684,6 +1696,7 @@ paths: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -1798,6 +1811,7 @@ paths: summary: Write the Data Storage content to a specific port. description: Write the Data Storage content to a specific port. security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -1845,6 +1859,7 @@ paths: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -2016,6 +2031,7 @@ paths: parameters: - $ref: "#/components/parameters/deviceAlias" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -2112,6 +2128,7 @@ paths: parameters: - $ref: "#/components/parameters/deviceAlias" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -2344,6 +2361,7 @@ paths: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/index" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -2447,6 +2465,7 @@ paths: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/parameterName" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -2607,6 +2626,7 @@ paths: - $ref: "#/components/parameters/index" - $ref: "#/components/parameters/subindex" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -2693,6 +2713,7 @@ paths: - $ref: "#/components/parameters/parameterName" - $ref: "#/components/parameters/subParameterName" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] @@ -2737,6 +2758,7 @@ paths: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/format" security: + - {} - basicAuth: [] - bearerAuth: [] - oauth2: [Maintenance] From 3c7e5766dd30e1412476b0df8d944aacb0483db5 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 11 Dec 2023 13:45:58 +0100 Subject: [PATCH 089/279] Fix missing deviceAlias parameter --- JSON_for_IO-Link.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index bf0417d..ac857ea 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2937,6 +2937,8 @@ paths: - devices description: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. summary: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. + parameters: + - $ref: "#/components/parameters/deviceAlias" responses: "200": description: >- From 2da66139e51281ba28867c34351249b4cb2ce53d Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 11 Dec 2023 13:53:42 +0100 Subject: [PATCH 090/279] Add deviceAlias parameter to POST as well --- JSON_for_IO-Link.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index ac857ea..1161c15 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2961,6 +2961,8 @@ paths: - devices summary: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. description: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. + parameters: + - $ref: "#/components/parameters/deviceAlias" responses: "204": description: >- From 5707909c4e92c64295df91e911fb853fab7d6313 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 11 Dec 2023 17:14:28 +0100 Subject: [PATCH 091/279] Set security definition globally --- JSON_for_IO-Link.yaml | 115 ++---------------------------------------- 1 file changed, 5 insertions(+), 110 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 1161c15..d593472 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -65,6 +65,11 @@ servers: - "https" - "http" default: "http" +security: + - {} + - basicAuth: [] + - bearerAuth: [] + - oauth2: [Maintenance] tags: - name: general description: Access to general informations @@ -326,11 +331,6 @@ paths: - gateway summary: Write the configuration of the Gateway. description: Write the configuration of the Gateway. - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -383,11 +383,6 @@ paths: - gateway summary: Reset the Gateway including all Masters. Optional. description: Invoke a reset of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog. - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] responses: "204": description: Successful operation @@ -407,11 +402,6 @@ paths: - gateway summary: Reboot the Gateway including all Masters. Optional. description: Invoke a reboot of the IO-Link Gateway. This may reset all configuration data and interrupt all communications channels. It is recommended to log this within the EventLog - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] responses: "204": description: Successful operation @@ -555,11 +545,6 @@ paths: - $ref: "#/components/parameters/eventdeviceAlias" - $ref: "#/components/parameters/eventTop" - $ref: "#/components/parameters/eventBottom" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] responses: "200": description: Successful operation @@ -625,11 +610,6 @@ paths: summary: >- Update the MQTT configuration of the Gateway. description: Update the MQTT configuration of the Gateway. - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -741,11 +721,6 @@ paths: - mqtt summary: Create a new MQTT topic. description: Create a new MQTT topic. - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -886,11 +861,6 @@ paths: description: Delete a specific MQTT topic. parameters: - $ref: "#/components/parameters/mqttTopicId" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] responses: "204": description: Successful operation @@ -978,11 +948,6 @@ paths: - $ref: "#/components/parameters/vendorId" - $ref: "#/components/parameters/deviceId" - $ref: "#/components/parameters/revision" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] responses: "204": description: Successful operation @@ -1047,11 +1012,6 @@ paths: description: > It is not needed to specify the identification data for this action as the parser can read this information. - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -1207,11 +1167,6 @@ paths: description: Write application specific identification to a Master. parameters: - $ref: "#/components/parameters/masterNumber" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -1273,11 +1228,6 @@ paths: description: Write the configuration of the specified Master. parameters: - $ref: "#/components/parameters/masterNumber" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -1379,11 +1329,6 @@ paths: - masters summary: To start a scan of the specified Wireless-Master. description: To start a scan of the specified Wireless-Master. - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] parameters: - $ref: "#/components/parameters/masterNumber" requestBody: @@ -1695,11 +1640,6 @@ paths: parameters: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -1810,11 +1750,6 @@ paths: - $ref: "#/components/parameters/portNumber" summary: Write the Data Storage content to a specific port. description: Write the Data Storage content to a specific port. - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -1858,11 +1793,6 @@ paths: parameters: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -2000,11 +1930,6 @@ paths: description: Write application specific identification to the Device. parameters: - $ref: "#/components/parameters/deviceAlias" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -2097,11 +2022,6 @@ paths: description: Write the process data output values to the specified Device. parameters: - $ref: "#/components/parameters/deviceAlias" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -2330,11 +2250,6 @@ paths: parameters: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/index" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -2434,11 +2349,6 @@ paths: parameters: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/parameterName" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -2595,11 +2505,6 @@ paths: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/index" - $ref: "#/components/parameters/subindex" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -2682,11 +2587,6 @@ paths: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/parameterName" - $ref: "#/components/parameters/subParameterName" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: @@ -2727,11 +2627,6 @@ paths: parameters: - $ref: "#/components/parameters/deviceAlias" - $ref: "#/components/parameters/format" - security: - - {} - - basicAuth: [] - - bearerAuth: [] - - oauth2: [Maintenance] requestBody: required: true content: From d21f15e5db02f11d737f90ff94c57d4717da4d20 Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Mon, 15 Jan 2024 10:01:36 +0100 Subject: [PATCH 092/279] Extend the description of the deviceAlias parameter. Even if a new device alias has been assigned, the device should always be accessible via the default name (e.g. master1port2). This is done to resolve #117. --- JSON_for_IO-Link.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 023ee4f..ca88b69 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5207,9 +5207,10 @@ components: name: deviceAlias in: path description: >- - Device Name configured with the port/configuration URL. Default Device - Name is 'masterNportM' where 'N' means the masterNumber and 'M' means - the portNumber. + Device name configured with the port/configuration URL. Default device + name is 'masterNportM' where 'N' means the masterNumber and 'M' means + the portNumber. Even if a new device alias has been assigned, the device + can always be addressed via the default name. schema: type: string minLength: 1 From ccb1f2054ee88eab674c8148d4f9efc06e9d1a63 Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Tue, 16 Jan 2024 08:52:04 +0100 Subject: [PATCH 093/279] Have less restrictions for gateway/events filtering. Before this change, to get all events related to a specific port (with origin PORT or DEVICE), the user has to do two requests. With this change, a single GET /gateway/events?origin=ALL&masterNumber=1&portNumber=2 request will do the job (= reading all events from master 1 port 2 or from the device connected to this port). This resolves #118. --- JSON_for_IO-Link.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index d593472..18e5165 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5217,13 +5217,13 @@ components: eventMasterNumber: name: masterNumber in: query - description: masterNumber is only applicable with origin=MASTERS and origin=PORTS + description: masterNumber is not applicable with origin=GATEWAY schema: $ref: "#/components/schemas/eventMasterNumber" eventPortNumber: name: portNumber in: query - description: portnumber is only applicable with origin=PORTS + description: portnumber is not applicable with origin=GATEWAY or origin=MASTERS schema: $ref: "#/components/schemas/eventPortNumber" eventdeviceAlias: From b922594cf76387ef508ecccf19173d2594cfaad7 Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 18 Jan 2024 13:25:59 +0100 Subject: [PATCH 094/279] Change spectral file name and disable rules --- .spectral.yaml | 5 +++++ spectral.yaml | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 .spectral.yaml delete mode 100644 spectral.yaml diff --git a/.spectral.yaml b/.spectral.yaml new file mode 100644 index 0000000..8b413bc --- /dev/null +++ b/.spectral.yaml @@ -0,0 +1,5 @@ +# Linting rules +extends: ["spectral:oas", "spectral:asyncapi"] +# rules: +# oas3-unused-component: off +# path-params: off # to disable error: path-params Paths "/devices/{deviceAlias}/parameters/{index}/value" and "/devices/{deviceAlias}/parameters/{parameterName}/value" must not be equivalent. diff --git a/spectral.yaml b/spectral.yaml deleted file mode 100644 index 7a5b6a9..0000000 --- a/spectral.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# Linting rules -extends: spectral:oas -rules: - path-params: off # to disable error: path-params Paths "/devices/{deviceAlias}/parameters/{index}/value" and "/devices/{deviceAlias}/parameters/{parameterName}/value" must not be equivalent. - From c95d9e591b095b763e9ce6112874db62655d27ff Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 18 Jan 2024 13:26:46 +0100 Subject: [PATCH 095/279] Remove unused components --- JSON_for_IO-Link.yaml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index d593472..6e0d007 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5180,14 +5180,6 @@ components: type: integer minimum: 1 required: true - trackNumber: - name: trackNumber - in: path - description: trackNumber identification number starting with 1 - schema: - type: integer - minimum: 1 - required: true portNumber: name: portNumber in: path @@ -5530,17 +5522,6 @@ components: value: code: 106 message: MQTT feature not supported - HTTP_503: - description: Service unavailable - content: - application/json: - schema: - $ref: "#/components/schemas/errorObject" - examples: - "107": - value: - code: 107 - message: "Service temporarily unavailable" examples: # reusable examples exampleMasterConfiguration: From fbb43a17456d72f1e5fb980906ba354662b7d668 Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 18 Jan 2024 14:22:42 +0100 Subject: [PATCH 096/279] Combine path with new path parameter and adjust description/schema --- JSON_for_IO-Link.yaml | 342 +++++++----------------------------------- 1 file changed, 57 insertions(+), 285 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 6e0d007..581a829 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2191,16 +2191,16 @@ paths: "501": $ref: "#/components/responses/HTTP_501" - "/devices/{deviceAlias}/parameters/{index}/value": + "/devices/{deviceAlias}/parameters/{parameterIdent}/value": get: - operationId: GetDevicesDeviceAliasParametersIndexValue + operationId: GetDevicesDeviceAliasParametersValue tags: - devices - summary: Read a parameter value from the specific Device with the given index. - description: Read a parameter value from the specific Device with the given index. + summary: Read a parameter value from the specific Device with the given index or parametername depending on the path parameter. + description: Read a parameter value from the specific Device with the given index or parametername depending on the path parameter. parameters: - $ref: "#/components/parameters/deviceAlias" - - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/parameterIdent" - $ref: "#/components/parameters/format" responses: "200": @@ -2242,14 +2242,14 @@ paths: $ref: "#/components/responses/HTTP_501" post: - operationId: PostDevicesDeviceAliasParametersIndexValue + operationId: PostDevicesDeviceAliasParametersValue tags: - devices - summary: Write a parameter value with the given index to the specified Device. - description: Write a parameter value with the given index to the specified Device. + summary: Write a parameter value with the given index or parametername depending on the path parameter to the specified Device. + description: Write a parameter value with the given index or parametername depending on the path parameter to the specified Device. parameters: - $ref: "#/components/parameters/deviceAlias" - - $ref: "#/components/parameters/index" + - $ref: "#/components/parameters/parameterIdent" requestBody: required: true content: @@ -2291,103 +2291,9 @@ paths: "501": $ref: "#/components/responses/HTTP_501" - "/devices/{deviceAlias}/parameters/{parameterName}/value": + "/devices/{deviceAlias}/parameters/{parameterIdent}/subindices": get: - operationId: GetDevicesDeviceAliasParametersValue - tags: - - devices - summary: >- - Read a parameter value from the specific Device by parameter name. - IODD support is required. - description: Read a parameter value from the specific Device by parameter name. IODD support is required. - parameters: - - $ref: "#/components/parameters/deviceAlias" - - $ref: "#/components/parameters/parameterName" - - $ref: "#/components/parameters/format" - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/deviceParameterValueGetPost" - examples: - format=byteArray: - value: { "value": [0, 156, 125, 25] } - "format=iodd, simple type": - value: - value: 15.2 - unit: "cm" - "format=iodd, complex type": - value: - Distance: - value: 15 - unit: "cm" - Quality: - value: 12 - - "400": # code 305, 306, 307, 311, 601 - $ref: "#/components/responses/HTTP_400" - "401": - $ref: "#/components/responses/HTTP_401" - "403": - $ref: "#/components/responses/HTTP_403" - "404": - $ref: "#/components/responses/HTTP_404" - "500": - $ref: "#/components/responses/HTTP_500" - "501": - $ref: "#/components/responses/HTTP_501" - post: - operationId: PostDevicesDeviceAliasParametersValue - tags: - - devices - summary: >- - Write a parameter value by name to the specified Device.IODD support is required. - IODD support is required. - description: Write a parameter value by name to the specified Device.IODD support is required. IODD support is required. - parameters: - - $ref: "#/components/parameters/deviceAlias" - - $ref: "#/components/parameters/parameterName" - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/deviceParameterValueGetPost" - examples: - format=byteArray: - value: { "value": [0, 156, 125, 25] } - "format=iodd, simple type": - value: - value: 15.2 - unit: "cm" - "format=iodd, complex type": - value: - Distance: - value: 15 - unit: "cm" - Quality: - value: 12 - responses: - "204": - description: Successful operation - "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: "#/components/responses/HTTP_400" - "401": - $ref: "#/components/responses/HTTP_401" - "403": - $ref: "#/components/responses/HTTP_403" - "404": - $ref: "#/components/responses/HTTP_404" - "500": - $ref: "#/components/responses/HTTP_500" - "501": - $ref: "#/components/responses/HTTP_501" - - "/devices/{deviceAlias}/parameters/{index}/subindices": - get: - operationId: GetDevicesDeviceAliasParametersIndexSubindices + operationId: GetDevicesDeviceAliasParametersSubindices tags: - devices summary: >- @@ -2396,39 +2302,7 @@ paths: description: Read all available parameter sub-indices and sub-parameter names from the specific Device. IODD support is required. parameters: - $ref: "#/components/parameters/deviceAlias" - - $ref: "#/components/parameters/index" - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/deviceSubParametersGet" - "400": # code 601 - $ref: "#/components/responses/HTTP_400" - "401": - $ref: "#/components/responses/HTTP_401" - "403": - $ref: "#/components/responses/HTTP_403" - "404": - $ref: "#/components/responses/HTTP_404" - "500": - $ref: "#/components/responses/HTTP_500" - "501": - $ref: "#/components/responses/HTTP_501" - - "/devices/{deviceAlias}/parameters/{parameterName}/subindices": - get: - operationId: GetDevicesDeviceAliasParametersSubindices - tags: - - devices - summary: >- - Read all available parameter sub-indices and sub-parameter names from the specific Device (referenced by parameter name). - IODD support is required. - description: Read all available parameter sub-indices and sub-parameter names from the specific Device (referenced by parameter name). IODD support is required. - parameters: - - $ref: "#/components/parameters/deviceAlias" - - $ref: "#/components/parameters/parameterName" + - $ref: "#/components/parameters/parameterIdent" responses: "200": description: Successful operation @@ -2449,18 +2323,18 @@ paths: "501": $ref: "#/components/responses/HTTP_501" - "/devices/{deviceAlias}/parameters/{index}/subindices/{subindex}/value": - get: - operationId: GetDevicesDeviceAliasParametersSubindicesSubindexValue + ? "/devices/{deviceAlias}/parameters/{parameterIdent}/subindices/{subParameterIdent}/value" + : get: + operationId: GetDevicesDeviceAliasParametersSubindicesValue tags: - devices summary: >- - Read a parameter value from the specific Device with the given index and subindex. - description: Read a parameter value from the specific Device with the given index and subindex. + Read a parameter value from the specific Device with the given index/subindex or parametername/sub-parameter name. + description: Read a parameter value from the specific Device with the given index/subindex or parametername/sub-parameter name. parameters: - $ref: "#/components/parameters/deviceAlias" - - $ref: "#/components/parameters/index" - - $ref: "#/components/parameters/subindex" + - $ref: "#/components/parameters/parameterIdent" + - $ref: "#/components/parameters/subParameterIdent" - $ref: "#/components/parameters/format" responses: "200": @@ -2494,99 +2368,17 @@ paths: $ref: "#/components/responses/HTTP_500" "501": $ref: "#/components/responses/HTTP_501" - post: - operationId: PostDevicesDeviceAliasParametersSubindicesSubindexValue - tags: - - devices - summary: >- - Write the parameter with the given index and subindex. - description: Write the parameter with the given index and subindex. - parameters: - - $ref: "#/components/parameters/deviceAlias" - - $ref: "#/components/parameters/index" - - $ref: "#/components/parameters/subindex" - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" - examples: - format=byteArray: - value: { "value": [0, 156, 125, 25] } - format=iodd: - value: - value: 15.2 - unit: "cm" - responses: - "204": - description: Successful operation - "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: "#/components/responses/HTTP_400" - "401": - $ref: "#/components/responses/HTTP_401" - "403": - $ref: "#/components/responses/HTTP_403" - "404": - $ref: "#/components/responses/HTTP_404" - "500": - $ref: "#/components/responses/HTTP_500" - "501": - $ref: "#/components/responses/HTTP_501" - - ? "/devices/{deviceAlias}/parameters/{parameterName}/subindices/{subParameterName}/value" - : get: - operationId: GetDevicesDeviceAliasParametersSubindicesValue - tags: - - devices - summary: >- - Read a parameter value from the specific Device by parameter name and subname. - IODD support is required. - description: Read a parameter value from the specific Device by parameter name and subname. IODD support is required. - parameters: - - $ref: "#/components/parameters/deviceAlias" - - $ref: "#/components/parameters/parameterName" - - $ref: "#/components/parameters/subParameterName" - - $ref: "#/components/parameters/format" - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" - examples: - format=byteArray: - value: { "value": [0, 156, 125, 25] } - format=iodd: - value: - value: 15.2 - unit: "cm" - - "400": # code 305, 306, 307, 311, 601 - $ref: "#/components/responses/HTTP_400" - "401": - $ref: "#/components/responses/HTTP_401" - "403": - $ref: "#/components/responses/HTTP_403" - "404": - $ref: "#/components/responses/HTTP_404" - "500": - $ref: "#/components/responses/HTTP_500" - "501": - $ref: "#/components/responses/HTTP_501" post: operationId: PostDevicesDeviceAliasParametersSubindicesValue tags: - devices summary: >- - Write a parameter value to the specific Device by the parameter name and subname. - IODD support is required. - description: Write a parameter value to the specific Device by the parameter name and subname. IODD support is required. + Write the parameter with the given index/subindex or parametername/sub-parameter name. + description: Write the parameter with the given index/subindex or parametername/sub-parameter name. parameters: - $ref: "#/components/parameters/deviceAlias" - - $ref: "#/components/parameters/parameterName" - - $ref: "#/components/parameters/subParameterName" + - $ref: "#/components/parameters/parameterIdent" + - $ref: "#/components/parameters/subParameterIdent" requestBody: required: true content: @@ -2603,7 +2395,7 @@ paths: responses: "204": description: Successful operation - "400": # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 + "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 $ref: "#/components/responses/HTTP_400" "401": $ref: "#/components/responses/HTTP_401" @@ -2890,19 +2682,34 @@ components: - VendorLogo - zip default: XML + parameterIdent: + oneOf: + - $ref: "#/components/schemas/parameterName" + - $ref: "#/components/schemas/index" parameterName: type: string description: | Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used.\ - Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with “_“. \ Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. + + Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ minLength: 1 maxLength: 71 + subParameterIdent: + oneOf: + - $ref: "#/components/schemas/subParameterName" + - $ref: "#/components/schemas/subindex" + subindex: + type: integer + description: Subindex of ISDU variable with the given index + minimum: 0 + maximum: 255 subParameterName: type: string description: | @@ -2914,6 +2721,8 @@ components: Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + + Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ minLength: 1 maxLength: 71 cycleTime: @@ -5026,6 +4835,11 @@ components: - READ parameters: $ref: "#/components/schemas/blockParameterizationPostParametersRequest" + index: + type: integer + description: Index of ISDU variable + minimum: 0 + maximum: 65535 ioddIdentification: type: object required: @@ -5246,61 +5060,19 @@ components: description: Value format in response document schema: $ref: "#/components/schemas/format" - index: - name: index - in: path - description: Index of ISDU variable - schema: - type: integer - minimum: 0 - maximum: 65535 - required: true - subindex: - name: subindex - in: path - description: Subindex of ISDU variable with the given index - schema: - type: integer - minimum: 0 - maximum: 255 - required: true - parameterName: - name: parameterName + parameterIdent: + name: parameterIdent in: path - description: | - Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ - Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ - Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ - Rule 3: Leading numbers shall be prefixed with “_“. \ - Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is “element_{subindex}”. - - Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ + description: Parameter access either via index or parametername. schema: - type: string - minLength: 1 - maxLength: 71 + $ref: "#/components/schemas/parameterIdent" required: true - subParameterName: - name: subParameterName + subParameterIdent: + name: subParameterIdent in: path - description: | - Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ - Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ - Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ - Rule 3: Leading numbers shall be prefixed with “_“. \ - Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ - - Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ + description: Subparameter access either via subindex or subparametername. schema: - type: string - minLength: 1 - maxLength: 71 + $ref: "#/components/schemas/subParameterIdent" required: true responses: HTTP_400: From fa6cc6428efa7cfc1157381dffa2559697561410 Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 18 Jan 2024 14:40:18 +0100 Subject: [PATCH 097/279] Update file reference for spectral linter --- .github/workflows/linting.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index beea1d4..1d94606 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -15,5 +15,5 @@ jobs: # Run Spectral - uses: stoplightio/spectral-action@latest with: - file_glob: 'JSON_for_IO-Link.yaml' - spectral_ruleset: spectral.yaml + file_glob: "JSON_for_IO-Link.yaml" + spectral_ruleset: .spectral.yaml From 512a49952af81ae7c3e078ad12d6ede59788f411 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 2 Feb 2024 17:02:50 +0100 Subject: [PATCH 098/279] First draft with discussed changes (in progress) --- MQTT_for_IO-Link.yaml | 163 +- examples.yaml | 75 + schemas.yaml | 3423 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 3564 insertions(+), 97 deletions(-) create mode 100644 examples.yaml create mode 100644 schemas.yaml diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index fa30f87..a2c0bb5 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -1,52 +1,51 @@ -asyncapi: 2.5.0 +asyncapi: 2.6.0 info: - title: MQTT for IO-Link Topics - version: 0.0.1 + title: MQTT for IO-Link Master + version: 0.0.3 description: > This is the _AsyncAPI_ specification of MQTT topics by the IO-Link consortium. termsOfService: "https://www.io-link.com" contact: - name: Markus Rentschler - email: markus.rentschler@murrelektronik.de + name: "IO-Link Community" + email: info@io-link.com + url: "http://www.io-link.com" + license: + name: Apache 2.0 + url: "http://www.apache.org/licenses/LICENSE-2.0.html" +defaultContentType: application/json servers: - broker: - url: "api.iolink.com:{port}" + iol-master: + url: "{iolm-ip}:{port}" protocol: mqtt - description: central mqtt Broker + protocolVersion: 3.1.1 + description: io-link master as MQTT client security: - user-password: [] variables: + iolm-ip: + default: "192.168.0.1" port: enum: - "1883" - "8883" default: "1883" channels: - "{originatorId}/connection": + "{originatorId}/gateway/identification": description: >- - Topic that publishes online/offline state of the gateway, send at - startup/"birth" and as "lastwill" + publishes asset (e.g. gateway) nameplate information, send at startup or + onChange parameters: originatorId: - description: >- - shall be the unique identifier of the originator and shall correspond - to the client id inside the MQTT message. It can be the ProductURI, - DNS name, IP address or MAC address of the device hosting the MQTT - publisher. By default the Hostname shall be used. schema: - type: string - example: iomaster_nr1 - subscribe: + $ref: "./schemas.yaml#/schemas/originatorId" + publish: message: - $ref: "#/components/messages/connection" - bindings: - mqtt: - qos: 1 - retain: true - "{originatorId}/asset": - description: >- - publishes asset (e.g. gateway) nameplate information, send at startup or - onChange + name: gatewayIdentification + payload: + $ref: "./schemas.yaml#/schemas/gatewayIdentificationGet" + + "{originatorId}/gateway/events": + description: publishes gateway events parameters: originatorId: description: >- @@ -57,33 +56,30 @@ channels: schema: type: string example: iomaster_nr1 - subscribe: + publish: message: - $ref: "#/components/messages/nameplate" - bindings: - mqtt: - qos: 1 - retain: true - "{originatorId}/health": - description: publishes gateway health state + name: gatewayEvents + payload: + $ref: "./schemas.yaml#/schemas/gatewayIdentificationGet" + + "{originatorId}/master/{masterNumber}/identification": + description: >- + publishes asset (e.g. gateway) nameplate information, send at startup or + onChange parameters: originatorId: - description: >- - shall be the unique identifier of the originator and shall correspond - to the client id inside the MQTT message. It can be the ProductURI, - DNS name, IP address or MAC address of the device hosting the MQTT - publisher. By default the Hostname shall be used. schema: - type: string - example: iomaster_nr1 - subscribe: + $ref: "./schemas.yaml#/schemas/originatorId" + masterNumber: + schema: + $ref: "./schemas.yaml#/schemas/eventMasterNumber" + publish: message: - $ref: "#/components/messages/gatewayhealth" - bindings: - mqtt: - qos: 1 - retain: true - "{originatorId}/{deviceId}(/event)/asset": + name: gatewayIdentification + payload: + $ref: "./schemas.yaml#/schemas/masterIdentificationGet" + + "{originatorId}/{deviceAlias}/identification": description: >- publishes asset (e.g. device) nameplate information, send at connection startup (new connection) @@ -97,19 +93,18 @@ channels: schema: type: string example: iomaster_nr1 - deviceId: + deviceAlias: description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 - subscribe: + publish: message: - $ref: "#/components/messages/nameplate_iolink" - bindings: - mqtt: - qos: 1 - retain: true - "{originatorId}/{deviceId}(/event)/status": + name: deviceIdentification + payload: + $ref: "./schemas.yaml#/schemas/deviceIdentificationGet" + + "{originatorId}/{deviceAlias}/event": description: "publishes the port status, send at startup/onChange" parameters: originatorId: @@ -121,7 +116,7 @@ channels: schema: type: string example: iomaster_nr1 - deviceId: + deviceAlias: description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string @@ -133,31 +128,8 @@ channels: mqtt: qos: 1 retain: true - "{originatorId}/{deviceId}(/event)/health": - description: health data of the device - parameters: - originatorId: - description: >- - shall be the unique identifier of the originator and shall correspond - to the client id inside the MQTT message. It can be the ProductURI, - DNS name, IP address or MAC address of the device hosting the MQTT - publisher. By default the Hostname shall be used. - schema: - type: string - example: iomaster_nr1 - deviceId: - description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" - schema: - type: string - example: port1 - subscribe: - message: - $ref: "#/components/messages/devicehealth" - bindings: - mqtt: - qos: 1 - retain: true - "{originatorId}/{deviceId}/processData": + + "{originatorId}/{deviceAlias}/processData": parameters: originatorId: description: >- @@ -168,21 +140,18 @@ channels: schema: type: string example: iomaster_nr1 - deviceId: + deviceAlias: description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string example: port1 - subscribe: + publish: message: - oneOf: - - $ref: "#/components/messages/processdata_IOLink" - - $ref: "#/components/messages/processdata_Misc" - bindings: - mqtt: - qos: 1 - retain: true - "{originatorId}/{deviceId}/events": + name: processdata + payload: + $ref: "./schemas.yaml#/schemas/processDataValue" + + "{originatorId}/{deviceAlias}/events": description: >- eventlog of the io link device, see "iolink/v1/devices/{deviceAlias}/events" @@ -196,7 +165,7 @@ channels: schema: type: string example: iomaster_nr1 - deviceId: + deviceAlias: description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: type: string @@ -491,7 +460,7 @@ components: type: boolean isWrongVendorId: type: boolean - isWrongDeviceId: + isWrongdeviceAlias: type: boolean isWrongSerialNumber: type: boolean @@ -924,7 +893,7 @@ components: schema: type: string example: iomaster_nr1 - deviceId: + deviceAlias: description: Id of the IO-Link device (e.g. port nr) schema: type: string diff --git a/examples.yaml b/examples.yaml new file mode 100644 index 0000000..e274b72 --- /dev/null +++ b/examples.yaml @@ -0,0 +1,75 @@ +examples: + processDataValue: + byteArray: + iolink: #"format=byteArray, pin4=IO-Link, pin2=sio" + valid: true + value: + - 15 + - 123 + - 126 + - 236 + iqValue: true + iodd: + iolink: #"format=iodd, pin4=IO-Link, pin2=deactivated/not available" + valid: true + value: + Valve_1: + value: true + Valve_2: + value: false + sio: + cqValue: false #"format=byteArray/iodd, pin4=sio, pin2=deactivated/not available" + + gatewayConfig: + Manual: + value: + ethIpv4: + - ipConfiguration: MANUAL + ipAddress: 192.168.1.13 + subnetMask: 255.255.255.0 + standardGateway: 192.168.1.1 + DHCP: + value: + ethIpv4: + - ipConfiguration: DHCP + Multiple_ethernet_interfaces: + value: + ethIpv4: + - ifName: eth0 + ipConfiguration: MANUAL + ipAddress: 192.168.1.13 + subnetMask: 255.255.255.0 + standardGateway: 192.168.1.1 + - ifName: eth1 + ipConfiguration: MANUAL + ipAddress: 192.168.2.10 + subnetMask: 255.255.255.0 + standardGateway: 192.168.2.1 + - ifName: eth2 + ipConfiguration: DHCP + mqttConfig: + activeClient: + value: + clientMode: "ACTIVE" + serverAddress: 192.168.2.1:1883/mqttbroker + username: iolink_json + password: "1234" + lastwill: + topic: process_data + message: Process data transfer stopped. + qos: 0_ONLY_ONCE + retain: true + keepAliveTime: 10 + inactiveClient: + value: + clientMode: "INACTIVE" + gatewayIdentification: + value: + macAddress: "00:02:72:CE:A6:49" + serialNumber: "C134A746" + productId: "TMP34Z" + vendorName: "SensorCompany" + productName: "FlowSensor34" + hardwareRevision: "V3.45" + firmwareRevision: "V1.30" + productInstanceUri: "sensor.tmp.23.com" diff --git a/schemas.yaml b/schemas.yaml new file mode 100644 index 0000000..b93937b --- /dev/null +++ b/schemas.yaml @@ -0,0 +1,3423 @@ +schemas: + deviceAlias: + type: string + description: Unique deviceAlias. + minLength: 1 + maxLength: 32 + pattern: "^[a-zA-Z0-9_]{1,32}$" + example: master1port1 + originatorId: + type: string + description: + Shall be the unique identifier of the originator and shall correspond to the client id inside the MQTT message. It can be the ProductURI, + DNS name, IP address or MAC address of the device hosting the MQTT publisher. + example: master1 + parameterName: + type: string + description: | + Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used.\ + Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + minLength: 1 + maxLength: 71 + subParameterName: + type: string + description: | + Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ + Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ + Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + minLength: 1 + maxLength: 71 + cycleTime: + type: object + required: + - value + - unit + properties: + value: + type: number + minimum: 0 + example: 10 + unit: + type: string + enum: + - ms + default: ms + event: + type: object + ipConfiguration: + type: string + enum: + - MANUAL + - DHCP + processData: + allOf: + - type: object + required: + - direction + - format + properties: + direction: + $ref: "#/schemas/content" + format: + $ref: "#/schemas/format" + oneOf: + - type: object + required: + - interval + properties: + interval: + $ref: "#/schemas/cycleTime" + - type: object + required: + - onChange + properties: + onChange: + type: boolean + format: + type: string + enum: + - byteArray + - iodd + default: byteArray + content: + type: string + enum: + - getData + - setData + - getSetData + default: getData + mqttParameter: + type: object + required: + - format + properties: + parameter: + $ref: "#/schemas/parameter" + format: + $ref: "#/schemas/format" + oneOf: + - type: object + required: + - interval + properties: + interval: + $ref: "#/schemas/cycleTime" + - type: object + required: + - onChange + properties: + onChange: + type: boolean + parameter: + oneOf: + - type: object + required: + - parameterName + properties: + parameterName: + $ref: "#/schemas/parameterName" + subParameterName: + $ref: "#/schemas/subParameterName" + - type: object + required: + - index + properties: + index: + type: integer + example: 233 + subindex: + type: integer + example: 2 + eventOrigin: + type: string + enum: + - ALL + - GATEWAY + - MASTERS + - PORTS + - DEVICES + default: ALL + eventMasterNumber: + type: integer + minimum: 1 + eventPortNumber: + type: integer + minimum: 1 + eventdeviceAlias: + type: string + minLength: 1 + maxLength: 32 + eventTop: + type: integer + minimum: 1 + eventBottom: + type: integer + minimum: 1 + identificationMasters: + type: array + items: + type: object + required: + - masterNumber + properties: + masterNumber: + type: integer + minimum: 1 + serialNumber: + type: string + minLength: 1 + maxLength: 16 + locationTag: + type: string + minLength: 1 + maxLength: 32 + example: + - masterNumber: 1 + serialNumber: A12345678B + locationTag: slotNumber 5 + - masterNumber: 2 + serialNumber: 123A45B783 + locationTag: slotNumber 6 + masterIdentificationPost: + type: object + properties: + applicationSpecificTag: + type: string + minLength: 1 + maxLength: 32 + locationTag: + type: string + minLength: 1 + maxLength: 32 + functionTag: + type: string + minLength: 1 + maxLength: 32 + gatewayCapabilitiesGet: + required: + - ioddSupported + - mqttSupported + type: object + properties: + ioddSupported: + type: boolean + mqttSupported: + type: boolean + example: + ioddSupported: true + mqttSupported: true + masterCapabilitiesGet: + required: + - numberOfPorts + type: object + properties: + numberOfPorts: + type: integer + minimum: 1 + maxPowerSupply: + type: object + required: + - value + - unit + properties: + value: + type: number + minimum: 0 + unit: + type: string + minLength: 1 + eventTime: + description: >- + Timestamp (format defined in DIN ISO 8601). This field can give an + absolute time or a relative time. Both formats are defined in DIN ISO + 8601. + type: string + eventSeverity: + description: >- + Indicates the severity of the message. The IO-Link EventType + NOTIFICATION maps to NOTICE, WARNING to WARNING and ERROR to ERROR. + type: string + enum: + - EMERGENCY + - ALERT + - CRITICAL + - ERROR + - WARNING + - NOTICE + - INFO + - DEBUG + eventOriginObject: + type: object + properties: + gateway: + type: string + masterNumber: + description: >- + This property is mandatory for IO-Link Master Events, IO-Link Port + Events and IO-Link Device Events. Should not be used for other log + entries. + type: integer + minimum: 1 + portNumber: + description: >- + This property is mandatory for IO-Link Port Events and IO-Link + Device Events. Should not be used for other log entries. + type: integer + minimum: 1 + deviceAlias: + $ref: "#/schemas/deviceAlias" + eventObject: + type: object + properties: + code: + description: >- + IO-Link Port EventCode or IO-Link Device EventCode. This property is + mandatory for IO-Link Port Events or IO-Link Device Events. + type: integer + minimum: 0 + maximum: 65535 + mode: + description: >- + IO-Link Port Event Mode or IO-Link Device EventMode. This property + is mandatory for IO-Link Port Events or IO-Link Device Events. + type: string + enum: + - SINGLESHOT + - APPEARS + - DISAPPEARS + text: + type: string + minLength: 1 + gatewayEventsGet: + type: array + items: + type: object + required: + - time + - severity + - origin + - message + properties: + time: + $ref: "#/schemas/eventTime" + severity: + $ref: "#/schemas/eventSeverity" + origin: + $ref: "#/schemas/eventOriginObject" + message: + $ref: "#/schemas/eventObject" + blockParameterizationPostParametersRequest: + type: array + minItems: 1 + items: + type: object + required: + - identifier + properties: + identifier: + oneOf: + - type: object + required: + - index + properties: + index: + type: integer + minimum: 0 + maximum: 65535 + subIndex: + type: integer + minimum: 0 + maximum: 255 + - type: object + required: + - parameterName + properties: + parameterName: + $ref: "#/schemas/parameterName" + subParameterName: + $ref: "#/schemas/subParameterName" + content: + $ref: "#/schemas/deviceParameterValueGetPost" + deviceBlockParameterizationPostParametersAnswer: + type: array + items: + type: object + required: + - identifier + - result + properties: + identifier: + oneOf: + - type: object + required: + - index + properties: + index: + type: integer + minimum: 0 + maximum: 65535 + subIndex: + type: integer + minimum: 0 + maximum: 255 + - type: object + required: + - parameterName + properties: + parameterName: + $ref: "#/schemas/parameterName" + subParameterName: + $ref: "#/schemas/subParameterName" + result: + type: object + required: + - parameterExchangeResult + properties: + parameterExchangeResult: + type: string + enum: + - WRITE_SUCCESS + - READ_SUCCESS + - ERROR + content: + $ref: "#/schemas/deviceParameterValueGetPost" + iolinkError: + $ref: "#/schemas/iolinkErrorObject" + deviceEventsGet: + type: array + items: + type: object + required: + - time + - severity + - origin + - message + properties: + time: + $ref: "#/schemas/eventTime" + severity: + $ref: "#/schemas/eventSeverity" + origin: + required: + - master + - port + - deviceAlias + allOf: + - $ref: "#/schemas/eventOriginObject" + message: + required: + - code + - mode + allOf: + - $ref: "#/schemas/eventObject" + example: + - time: "2018-05-18T07:31:54.123Z" + severity: WARNING + origin: + master: 1 + port: 1 + deviceAlias: Temperature_sensor_1 + message: + code: 16912 + mode: APPEARS + text: Device temperature over-run – Clear source of heat + gatewayIdentificationGet: + type: object + required: + - macAddress + - vendorName + properties: + macAddress: + type: string + pattern: "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$" + serialNumber: + type: string + orderCode: + type: string + maxLength: 64 + productName: + type: string + productId: + type: string + hardwareRevision: + type: string + maxLength: 64 + firmwareRevision: + type: string + vendorName: + type: string + vendorUrl: + type: string + manualUrl: + type: string + productInstanceUri: + type: string + applicationSpecificTag: + type: string + locationTag: + type: string + functionTag: + type: string + example: + macAddress: "00:02:72:CE:A6:49" + serialNumber: "C134A746" + productId: "TMP34Z" + vendorName: "SensorCompany" + productName: "FlowSensor34" + hardwareRevision: "V3.45" + firmwareRevision: "V1.30" + productInstanceUri: "sensor.tmp.23.com" + gatewayConfigurationGetPost: + type: object + required: + - ethIpv4 + properties: + ethIpv4: + type: array + minItems: 1 + items: + type: object + required: + - ipConfiguration + properties: + ifName: + type: string + ipConfiguration: + $ref: "#/schemas/ipConfiguration" + ipAddress: + type: string + format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ + subnetMask: + type: string + format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ + standardGateway: + type: string + format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ + example: + ethIpv4: + - ifName: "eth0" + ipConfiguration: MANUAL + ipAddress: 192.168.1.13 + subnetMask: 255.255.255.0 + standardGateway: 192.168.1.1 + mqttConfigurationGetPost: + type: object + required: + - clientMode + properties: + clientMode: + type: string + serverAddress: + type: string + username: + type: string + password: + type: string + lastWill: + type: object + required: + - topic + - message + - qos + - retain + properties: + topic: + type: string + message: + type: string + qos: + type: string + enum: + - 0_ONLY_ONCE + - 1_AT_LEAST_ONCE + - 2_EXACTLY_ONCE + retain: + type: boolean + keepAliveTime: + type: integer + clientId: + type: string + description: + MQTT Client identifier to address and identify the iolink master as MQTT client. It needs to be unique within the MQTT network. + Since this parameter is optional, default value shall be set internally to a unique value (e.g. master name + MAC). + originatorId: + $ref: "#/schemas/originatorId" + mqttConfigurationTopic: + allOf: + - type: object + required: + - qos + - deviceAlias + properties: + qos: + type: string + enum: + - 0_ONLY_ONCE + - 1_AT_LEAST_ONCE + - 2_EXACTLY_ONCE + deviceAlias: + type: string + description: Unique deviceAlias. + - oneOf: + - type: object + properties: + event: + $ref: "#/schemas/event" + processData: + $ref: "#/schemas/processData" + parameter: + $ref: "#/schemas/mqttParameter" + mqttConfigurationTopicPost: + allOf: + - type: object + properties: + topicName: + type: string + - $ref: "#/schemas/mqttConfigurationTopic" + mqttConfigurationTopicGet: + allOf: + - type: object + required: + - topicId + properties: + topicId: + type: integer + - type: object + required: + - topicName + properties: + topicName: + type: string + - $ref: "#/schemas/mqttConfigurationTopic" + example: + topicId: 1 + topicName: PD input + qos: 1_AT_LEAST_ONCE + deviceAlias: DT35 + processData: + direction: getData + format: iodd + interval: + value: 10 + unit: ms + mqttConnectionStatusGet: + allOf: + - type: object + required: + - connectionStatus + - serverAddress + - upTime + properties: + connectionStatus: + type: string + enum: + - CLIENT_INACTIVE + - CONNECTION_ACCEPTED + - UNACCEPTABLE_PROTOCOL_VERSION + - IDENTIFIER_REJECTED + - SERVER_UNAVAILABLE + - BAD_USERNAME_OR_PASSWORD + - NOT_AUTHORIZED + serverAddress: + type: string + upTime: + type: integer + example: + connectionStatus: CONNECTION_ACCEPTED + serverAddress: "http://broker-address.com" + upTime: 1050 + deviceCapabilitiesGet: + required: + - minimumCycleTime + - supportedProfiles + type: object + properties: + minimumCycleTime: + $ref: "#/schemas/cycleTime" + supportedProfiles: + type: array + items: + type: integer + minimum: 1 + deviceIdentificationGet: + required: + - vendorId + - deviceId + - iolinkRevision + - vendorName + - productName + type: object + properties: + vendorId: + type: integer + minimum: 1 + maximum: 65535 + deviceId: + type: integer + minimum: 1 + maximum: 16777215 + iolinkRevision: + type: string + enum: + - "1.0" + - "1.1" + vendorName: + description: Mandatory if the Device suports the ISDU. + type: string + minLength: 1 + maxLength: 64 + vendorText: + type: string + vendorUrl: + type: string + productName: + description: Mandatory if the Device suports the ISDU. + type: string + minLength: 1 + maxLength: 64 + productId: + type: string + minLength: 1 + maxLength: 64 + productText: + type: string + minLength: 1 + maxLength: 64 + serialNumber: + type: string + minLength: 1 + maxLength: 16 + hardwareRevision: + type: string + minLength: 1 + maxLength: 64 + firmwareRevision: + type: string + productInstanceUri: + type: string + ioddUri: + type: string + applicationSpecificTag: + type: string + minLength: 1 + maxLength: 32 + locationTag: + type: string + minLength: 1 + maxLength: 32 + functionTag: + type: string + minLength: 1 + maxLength: 32 + example: + vendorId: 26 + deviceId: 8389226 + iolinkRevision: "1.1" + vendorName: SICK AG + vendorText: Sensor Intelligence. + productName: SLG-2 + productId: SLG-2 + productText: The SLG-2 IO-Link device is a smart lightgrid + serialNumber: Serial123456 + hardwareRevision: 3.2.1.444R + firmwareRevision: 3.2.1.888R + vendorUrl: "http://www.sick.com" + productInstanceUri: "http://www.sick.com/SLG-2/Serial123456" + ioddUri: "https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1" + # 'https://ioddfinder.io-link.com/api/vendors/26/iodds/11541/files/zip/rated' + # 'https://ioddfinder.io-link.com/productvariants/search/32872' + applicationSpecificTag: Fallback light switch + locationTag: Down under + functionTag: Check end of belt + portIdentificationPost: + type: object + properties: + applicationSpecificTag: + type: string + minLength: 1 + maxLength: 32 + example: Fallback light switch + locationTag: + type: string + minLength: 1 + maxLength: 32 + example: Down under + functionTag: + type: string + minLength: 1 + maxLength: 32 + example: Check start of belt + portCapabilitiesGet: + type: object + required: + - portType + properties: + portType: + type: string + enum: + - CLASS_A + - CLASS_B + - CLASS_A_WITH_PORT_POWER_OFF_ON + - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS + - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS + - FAILSAFE_PORT_B + - WIRELESS_MASTER + slotType: + description: >- + slotType for Wireless Master only + type: string + enum: + - SSLOT + - DSLOT + maxPowerSupply: + description: >- + maxPowerSupply is not supported in IO-Link Wireless. + type: object + required: + - value + - unit + properties: + value: + type: number + unit: + type: string + + portConfigurationGet: + type: object + required: + - mode + - iqConfiguration + - deviceAlias + properties: + mode: + type: string + enum: + - DEACTIVATED + - IOLINK_MANUAL + - IOLINK_AUTOSTART + - DIGITAL_INPUT + - DIGITAL_OUTPUT + - WIOLINK_CYCLIC_AUTOPAIRING + - WIOLINK_CYCLIC + - WIOLINK_ROAMING_AUTOPAIRING + - WIOLINK_ROAMING + validationAndBackup: + description: required if portMode is IOLINK_MANUAL. + type: string + enum: + - NO_DEVICE_CHECK + - TYPE_COMPATIBLE_DEVICE_V1.0 + - TYPE_COMPATIBLE_DEVICE_V1.1 + - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE + cycleTime: + description: >- + required if portMode is IOLINK_MANUAL or + IOLINK_AUTOSTART. Default value is 0 ms which means as fast as possible. + Note: If the applied value for cycle time cannot exactly be mapped, + the port shall use the next possible higher value. If the cycle time is greater + than 132.8 ms the error 702 shall be returned. + Note: This value is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. + type: object + allOf: + - $ref: "#/schemas/cycleTime" + vendorId: + description: >- + required if portMode is IOLINK_MANUAL and + validationAndBackup is not NO_DEVICE_CHECK. + type: integer + minimum: 1 + maximum: 65535 + deviceId: + description: >- + required if portMode is IOLINK_MANUAL and + validationAndBackup is not NO_DEVICE_CHECK. + type: integer + minimum: 1 + maximum: 16777215 + iqConfiguration: + description: >- + iqConfiguration is not supported in IO-Link Wireless. + type: string + enum: + - NOT_SUPPORTED + - DIGITAL_INPUT + - DIGITAL_OUTPUT + deviceAlias: + type: string + slotNumber: + description: >- + slot number of the Wireless-Device (Wireless Master only). + type: integer + minimum: 0 + maximum: 7 + trackNumber: + description: >- + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). + type: integer + minimum: 1 + maximum: 5 + deviceTxPower: + description: >- + transmission power of the Wireless-Device (Wireless Master only). + type: integer + minimum: 1 + maximum: 31 + maxRetry: + description: >- + Number of Retries for process data (Wireless Master only). + type: integer + minimum: 2 + maximum: 31 + imaTime: + description: >- + I am alive time for the wireless connection (Wireless Master only). + type: object + required: + - base + - multiplier + properties: + base: + description: >- + IMA timeout base. + type: string + enum: + - "1664us" + - "5ms" + - "1s" + - "1min" + multiplier: + description: >- + IMA timeout multiplier. + type: integer + minimum: 1 + maximum: 255 + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). + type: string + enum: + - "SSLOT" + - "DSLOT" + lowEnergyDevice: + description: >- + to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). + type: boolean + default: false + maxPDSegLength: + description: >- + maximum process data output segment length (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + wMasterCycleTimeOut: + description: >- + Wireless-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + Wireless-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + uniqueId: + description: >- + unique identifier for each Wireless-Device (Wireless Master only). + type: string + minLength: 26 + maxLength: 26 + + mastersConfigurationGetPost: # TODO: IOLW + properties: + wMasterId: + description: >- + Master identifier for connection with Wireless-Devices. + type: integer + minimum: 1 + maximum: 29 + advancedConnectivity: + description: >- + To set advanced connectivity functions on the Wireless-Master. + type: object + properties: + "ahtEnable": + description: >- + To enable or disable the Adaptive Hopping Table. + type: boolean + default: false + pairingTimeout: + description: >- + Timeout for pairing by BUTTON / UNIQUE. + type: object + required: + - value + - unit + properties: + value: + type: integer + minimum: 5 + maximum: 255 + unit: + type: string + enum: + - s + serviceTrackNumber: + description: >- + W-Track number used for service requests (Scan/Pairing/Roaming). + type: integer + minimum: 1 + maximum: 5 + default: 1 + serviceTrackMode: + description: >- + Mode of the service track. + type: string + enum: + - CYCLIC + - ROAMING + trackTxPower: + description: >- + transmission power of the W-Track (0 = Disable) + type: object + properties: + "track_1": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_2": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_3": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_4": + type: integer + minimum: 0 + maximum: 31 + default: 0 + "track_5": + type: integer + minimum: 0 + maximum: 31 + default: 0 + blockList: + type: object + properties: + "2403": + type: boolean + default: false + "2404": + type: boolean + default: false + "2405": + type: boolean + default: false + "2406": + type: boolean + default: false + "2407": + type: boolean + default: false + "2408": + type: boolean + default: false + "2409": + type: boolean + default: false + "2410": + type: boolean + default: false + "2411": + type: boolean + default: false + "2412": + type: boolean + default: false + "2413": + type: boolean + default: false + "2414": + type: boolean + default: false + "2415": + type: boolean + default: false + "2416": + type: boolean + default: false + "2417": + type: boolean + default: false + "2418": + type: boolean + default: false + "2419": + type: boolean + default: false + "2420": + type: boolean + default: false + "2421": + type: boolean + default: false + "2422": + type: boolean + default: false + "2423": + type: boolean + default: false + "2424": + type: boolean + default: false + "2425": + type: boolean + default: false + "2426": + type: boolean + default: false + "2427": + type: boolean + default: false + "2428": + type: boolean + default: false + "2429": + type: boolean + default: false + "2430": + type: boolean + default: false + "2431": + type: boolean + default: false + "2432": + type: boolean + default: false + "2433": + type: boolean + default: false + "2434": + type: boolean + default: false + "2435": + type: boolean + default: false + "2436": + type: boolean + default: false + "2437": + type: boolean + default: false + "2438": + type: boolean + default: false + "2439": + type: boolean + default: false + "2440": + type: boolean + default: false + "2441": + type: boolean + default: false + "2442": + type: boolean + default: false + "2443": + type: boolean + default: false + "2444": + type: boolean + default: false + "2445": + type: boolean + default: false + "2446": + type: boolean + default: false + "2447": + type: boolean + default: false + "2448": + type: boolean + default: false + "2449": + type: boolean + default: false + "2450": + type: boolean + default: false + "2451": + type: boolean + default: false + "2452": + type: boolean + default: false + "2453": + type: boolean + default: false + "2454": + type: boolean + default: false + "2455": + type: boolean + default: false + "2456": + type: boolean + default: false + "2457": + type: boolean + default: false + "2458": + type: boolean + default: false + "2459": + type: boolean + default: false + "2460": + type: boolean + default: false + "2461": + type: boolean + default: false + "2462": + type: boolean + default: false + "2463": + type: boolean + default: false + "2464": + type: boolean + default: false + "2465": + type: boolean + default: false + "2466": + type: boolean + default: false + "2467": + type: boolean + default: false + "2468": + type: boolean + default: false + "2469": + type: boolean + default: false + "2470": + type: boolean + default: false + "2471": + type: boolean + default: false + "2472": + type: boolean + default: false + "2473": + type: boolean + default: false + "2474": + type: boolean + default: false + "2475": + type: boolean + default: false + "2476": + type: boolean + default: false + "2477": + type: boolean + default: false + "2478": + type: boolean + default: false + mastersPortsPairingPost: # TODO: IOLW + properties: + portPairing: + type: string + enum: + - Unpairing + - PairingUnique + - PairingButton + example: + WPortPairing: PairingUnique + + mastersScanGet: # TODO: IOLW + properties: + scanStatus: + type: string + enum: + - NoScanWasPerformed + - ScanInProgress + - ScanEnded + scanResults: + type: array + properties: + slotType: + type: string + enum: + - "SSLOT" + - "DSLOT" + uniqueId: + type: string + minLength: 26 + maxLength: 26 + iolinkRevision: + type: string + enum: + - "1.1" + lastSeen: + $ref: "#/schemas/eventTime" + example: + scanStatus: ScanEnded + scanResults: + - slotType: SSLOT + uniqueId: 03:78:00:00:01:32:50:60:46 + iolinkRevision: "1.1" + lastSeen: "2022-12-01T08:42:23.314Z" + - slotType: DSLOT + uniqueId: 03:78:00:00:01:32:50:60:47 + iolinkRevision: "1.1" + lastSeen: "2022-12-01T09:42:23.314Z" + + mastersScanPost: # TODO: IOLW + properties: + txPower: + type: integer + minimum: 1 + maximum: 31 + example: + txPower: 31 + + mastersPortsGet: # TODO: IOLW + type: array + items: + type: object + required: + - portNumber + - statusInfo + - deviceAlias + properties: + portNumber: + type: number + deviceAlias: + type: string + statusInfo: + type: string + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + slotNumber: + description: >- + slot number of the Wireless-Device (Wireless Master only). + type: integer + minimum: 0 + maximum: 7 + trackNumber: + description: >- + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). + type: integer + minimum: 1 + maximum: 5 + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). + type: string + enum: + - "SSLOT" + - "DSLOT" + deviceInfo: + description: >- + Wireless Master only. + type: object + properties: + vendorId: + type: integer + minimum: 1 + maximum: 65535 + deviceId: + type: integer + minimum: 1 + maximum: 16777215 + productName: + type: string + minLength: 1 + maxLength: 64 + + mastersPortsStatusGet: # TODO: IOLW + properties: + statusInfo: + type: string + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE + iolinkRevision: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. + type: string + enum: + - "1.0" + - "1.1" + transmissionRate: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. transmissionRate is not used in IO-Link Wireless. + type: string + enum: + - COM1 + - COM2 + - COM3 + masterCycleTime: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. masterCycleTime is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. + type: object + allOf: + - $ref: "#/schemas/cycleTime" + portQualityInfo: + description: >- + status information of the Process Data (Wireless Master only). + type: object + properties: + "pdInValid": + type: boolean + default: false + "pdOutValid": + type: boolean + default: false + inputDataLength: + description: >- + this element contains the input data length as number of octets of the Device provided by the PDIn service (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + outputDataLength: + description: >- + this element contains the output data length as number of octets of the Device provided by the PDOut service (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + vendorId: + description: >- + Wireless Master only. + type: integer + minimum: 1 + maximum: 65535 + deviceId: + description: >- + Wireless Master only. + type: integer + minimum: 1 + maximum: 16777215 + wMasterCycleTimeOut: + description: >- + Wireless-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + Wireless-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + + mastersTrackstatusGet: # TODO: IOLW + type: array + items: + type: object + properties: + trackNumber: + type: number + Mode: + type: string + enum: + - DEACTIVATED + - CYCLIC + - ROAMING + - SCAN + - PAIRING + txPower: + type: integer + minimum: 1 + maximum: 31 + example: + - trackNumber: 1 + Mode: CYCLIC + txPower: 31 + - trackNumber: 2 + Mode: ROAMING + txPower: 31 + + mastersPortsQualityallGet: # TODO: IOLW + type: array + items: + type: object + properties: + portNumber: + type: number + lqiMaster: + type: integer + minimum: 0 + maximum: 100 + rssiMaster: + type: integer + minimum: -128 + maximum: 20 + lqiDevice: + type: integer + minimum: 0 + maximum: 100 + rssiDevice: + type: integer + minimum: -128 + maximum: 20 + example: + - portNumber: 1 + lqiMaster: 100 + rssiMaster: -40 + lqiDevice: 100 + rssiDevice: -39 + - portNumber: 2 + lqiMaster: 100 + rssiMaster: -60 + lqiDevice: 100 + rssiDevice: -61 + + mastersPortsQualityGet: # TODO: IOLW + properties: + lqiMaster: + type: integer + minimum: 0 + maximum: 100 + rssiMaster: + type: integer + minimum: -128 + maximum: 20 + lqiDevice: + type: integer + minimum: 0 + maximum: 100 + rssiDevice: + type: integer + minimum: -128 + maximum: 20 + example: + lqiMaster: 100 + rssiMaster: -40 + lqiDevice: 100 + rssiDevice: -39 + + portConfigurationPost: + description: "Note: At least one of the mode, iqConfiguration, + deviceAlias properties shall be included to the POST request" + type: object + properties: + mode: + type: string + enum: + - DEACTIVATED + - IOLINK_MANUAL + - IOLINK_AUTOSTART + - DIGITAL_INPUT + - DIGITAL_OUTPUT + - WIOLINK_CYCLIC_AUTOPAIRING + - WIOLINK_CYCLIC + - WIOLINK_ROAMING_AUTOPAIRING + - WIOLINK_ROAMING + validationAndBackup: + description: >- + required if the port's mode is IOLINK_MANUAL. + type: string + enum: + - NO_DEVICE_CHECK + - TYPE_COMPATIBLE_DEVICE_V1.0 + - TYPE_COMPATIBLE_DEVICE_V1.1 + - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE + cycleTime: + description: >- + If no cycleTime configured with mode IOLINK_MANUAL or + IOLINK_AUTOSTART, the possible fastest cycle time is used by the + IO-Link Master. If the applied value for cycle time cannot exactly be + mapped, the port shall use the next possible higher value. + If the cycle time is greater than 132.8 ms the error 702 shall + be returned. This value is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. + type: object + allOf: + - $ref: "#/schemas/cycleTime" + vendorId: + description: >- + required if the port's mode is IOLINK_MANUAL and validationAndBackup is + not NO_DEVICE_CHECK. + type: integer + minimum: 1 + maximum: 65535 + deviceId: + description: >- + required if the port's mode is IOLINK_MANUAL and validationAndBackup is + not NO_DEVICE_CHECK. + type: integer + minimum: 1 + maximum: 16777215 + iqConfiguration: + description: >- + iqConfiguration is not supported in IO-Link Wireless. + type: string + enum: + - NOT_SUPPORTED + - DIGITAL_INPUT + - DIGITAL_OUTPUT + - ANALOG_INPUT + - ANALOG_OUTPUT + - POWER_2 + deviceAlias: + type: string + minLength: 1 + maxLength: 32 + slotNumber: + description: >- + slot number of the Wireless-Device (Wireless Master only). + type: integer + minimum: 0 + maximum: 7 + trackNumber: + description: >- + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). + type: integer + minimum: 1 + maximum: 5 + deviceTxPower: + description: >- + transmission power of the Wireless-Device (Wireless Master only). + type: integer + minimum: 1 + maximum: 31 + maxRetry: + description: >- + Number of Retries for process data (Wireless Master only). + type: integer + minimum: 2 + maximum: 31 + imaTime: + description: >- + I am alive time for the wireless connection (Wireless Master only). + type: object + required: + - base + - multiplier + properties: + base: + description: >- + IMA timeout base. + type: string + enum: + - "1664us" + - "5ms" + - "1s" + - "1min" + multiplier: + description: >- + IMA timeout multiplier. + type: integer + minimum: 1 + maximum: 255 + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). + type: string + enum: + - "SSLOT" + - "DSLOT" + lowEnergyDevice: + description: >- + to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). + type: boolean + default: false + maxPDSegLength: + description: >- + maximum process data output segment length (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + wMasterCycleTimeOut: + description: >- + Wireless-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + Wireless-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + uniqueId: + description: >- + unique identifier for each Wireless-Device (Wireless Master only). + type: string + minLength: 26 + maxLength: 26 + + dataStorageGetPost: + description: >- + In case the Data Storage is empty, the header object is empty and the + content is an empty string. + type: object + required: + - header + - content + properties: + header: + oneOf: + - type: object + required: + - vendorId + - deviceId + - iolinkRevision + properties: + vendorId: + type: integer + minimum: 1 + maximum: 65535 + deviceId: + type: integer + minimum: 1 + maximum: 16777215 + iolinkRevision: + type: string + enum: + - "1.0" + - "1.1" + parameterChecksum: + type: integer + - type: object # empty object + additionalProperties: false + minProperties: 0 + maxProperties: 0 + content: + description: Base64 coded DS data Ojects. Max size = 2KB*1.33. + type: string + # format: byte + processDataValue: + type: object + properties: + iolink: + description: Process data in IO-Link mode + allOf: + - type: object + required: + - valid + properties: + valid: + type: boolean + description: > + Process data validity + - type: object + required: + - value + properties: + value: + oneOf: + - $ref: "#/schemas/deviceByteArrayTypeValue" + - $ref: "#/schemas/deviceSimpleTypeValue" + - $ref: "#/schemas/deviceComplexTypeValue" + unit: + $ref: "#/schemas/deviceSimpleTypeValueUnit" + description: > + Process data value + cqValue: + type: boolean + description: > + IO-Link cable CQ (pin4) level if it is used as digital input or + output (SIO mode). (false - 0 V, true - 24 V) + iqValue: + type: boolean + description: > + IO-Link cable IQ (pin2) level if it is used as digital input or output. + (false - 0 V, true - 24 V) + + deviceProcessDataValueGet: + type: object + description: > + The cqValue is present in the 'getData' object if the CQ (pin4) is configured as + digital input. The cqValue is present in the 'setData' object if the CQ (pin4) + is configured as digital output. The iolink is present either in the + 'getData' or 'setData' or both objects if the CQ (pin4) is configured to IO-Link mode. + The iqValue is present in the 'getData' object if the IQ (pin2) is configured as + digital input. The iqValue is present in the 'setData' object if the IQ (pin4) + is configured as digital output. + properties: + getData: + $ref: "#/schemas/processDataValue" + setData: + $ref: "#/schemas/processDataValue" + deviceProcessDataValuePost: + $ref: "#/schemas/processDataValue" + deviceByteArrayTypeValue: + type: array + description: The value in byteArray format. + items: + type: integer + minimum: 0 + maximum: 255 + deviceSimpleTypeValue: + oneOf: + - type: boolean + - type: string + - type: number + description: The value (with simple type) in iodd format. + deviceComplexTypeEntry: + type: object + description: The entry for a complex iodd type + required: + - value + properties: + value: + $ref: "#/schemas/deviceSimpleTypeValue" + unit: + $ref: "#/schemas/deviceSimpleTypeValueUnit" + deviceSimpleTypeValueUnit: + type: string + description: The unit for the simple type number value in SI format. + deviceComplexTypeValue: + type: object + minProperties: 1 + maxProperties: 255 + description: The value (with complex type) in iodd format. + additionalProperties: + $ref: "#/schemas/deviceComplexTypeEntry" + deviceParametersGet: + type: array + items: + type: object + required: + - index + - parameterName + properties: + index: + type: integer + minimum: 0 + maximum: 65535 + parameterName: + $ref: "#/schemas/parameterName" + subindexAccessSupported: + type: boolean + description: only for complex parameters (records or arrays) required. Not allowed for simple parameters + example: + - index: 16 + parameterName: "Vendor_Name" + - index: 18 + parameterName: "Product_Name" + - index: 19 + parameterName: "ProductID" + - index: 60 + parameterName: "SSC_1_Param" + subindexAccessSupported: true + deviceSubParametersGet: + type: array + items: + type: object + required: + - subIndex + - subParameterName + properties: + subIndex: + type: integer + minimum: 1 + maximum: 255 + subParameterName: + $ref: "#/schemas/subParameterName" + example: + - subIndex: 1 + subParameterName: Master_command + - subIndex: 2 + subParameterName: Master_cycle_time + - subIndex: 3 + subParameterName: Minimum_cycle_time + deviceParameterValueGetPost: + type: object + properties: + value: + oneOf: + - $ref: "#/schemas/deviceByteArrayTypeValue" + - $ref: "#/schemas/deviceSimpleTypeValue" + - $ref: "#/schemas/deviceComplexTypeValue" + unit: + $ref: "#/schemas/deviceSimpleTypeValueUnit" + deviceParameterSubindexValueGetPost: + type: object + properties: + value: + oneOf: + - $ref: "#/schemas/deviceByteArrayTypeValue" + - $ref: "#/schemas/deviceSimpleTypeValue" + - $ref: "#/schemas/deviceComplexTypeValue" + unit: + $ref: "#/schemas/deviceSimpleTypeValueUnit" + deviceBlockParameterizationPost: + type: object + required: + - direction + - parameters + properties: + direction: + type: string + enum: + - WRITE + - READ + parameters: + $ref: "#/schemas/blockParameterizationPostParametersRequest" + ioddIdentification: + type: object + required: + - vendorId + - deviceId + - version + - releaseDate + - iolinkRevision + properties: + vendorId: + type: number + deviceId: + type: number + version: + type: string + releaseDate: + type: string + iolinkRevision: + type: string + enum: + - "1.0" + - "1.1" + availableArtifacts: + type: array + items: + $ref: "#/schemas/artifact" + ioddFile: + description: The IODD XML file or other IODD artifacts. + type: string + format: binary + ioddArchive: + description: The IODD in archive format (e.g. IODD Finder) containing XML file and device images. + type: string + format: binary + ioddsGet: + type: array + items: + $ref: "#/schemas/ioddIdentification" + example: + - vendorId: 1234 + deviceId: 4567 + version: "4.3" + releaseDate: "2018-01-02" + iolinkRevision: "1.1" + - vendorId: 4321 + deviceId: 8765 + version: "2.1" + releaseDate: "2015-01-02" + iolinkRevision: "1.1" + availableArtifacts: [XML, DeviceIcon, DeviceSymbol, VendorLogo] + iolinkErrorObject: + type: object + required: + - code + - message + properties: + code: + type: integer + minimum: 0 + maximum: 65535 + message: + type: string + minLength: 1 + errorObject: + type: object + required: + - code + - message + properties: + code: + type: integer + minimum: 0 + message: + type: string + minLength: 1 + iolinkError: + $ref: "#/schemas/iolinkErrorObject" + ipAddress: + type: string + example: 192.168.1.13 + subnetMask: + type: string + example: 255.255.255.0 + standardGateway: + type: string + example: 192.168.1.1 + dnsServer: + type: object + required: + - server + - configuration + properties: + server: + type: array + items: + type: string + example: + - 1.1.1.1 + - 2.2.2.2 + configuration: + type: string + enum: + - automatic + - custom + macAddress: + type: string + example: "FE:AB:3A:55:33:11" + valueUnitObject: + type: object + properties: + value: + type: integer + unit: + type: string + identificationGet: + required: + - vendorName + - vendorId + - masterId + - masterType + type: object + properties: + vendorName: + type: string + minLength: 1 + maxLength: 64 + vendorId: + type: integer + minimum: 1 + maximum: 65535 + masterId: + type: integer + minimum: 1 + maximum: 4294967295 + masterType: + type: string + enum: + - Unspecific + - Master acc. V1.0 + - Master acc. V1.1 + - Failsafe_Master + - Wireless_Master + serialNumber: + type: string + minLength: 1 + maxLength: 16 + orderCode: + type: string + minLength: 1 + maxLength: 64 + productName: + type: string + minLength: 1 + maxLength: 64 + productId: + type: string + minLength: 1 + maxLength: 64 + hardwareRevision: + type: string + minLength: 1 + maxLength: 64 + firmwareRevision: + type: string + minLength: 1 + maxLength: 64 + vendorUrl: + type: string + format: uri + manualUrl: + type: string + format: uri + productInstanceUri: + type: string + gsdUri: + type: string + applicationSpecificTag: + type: string + minLength: 1 + maxLength: 32 + locationTag: + type: string + minLength: 1 + maxLength: 32 + functionTag: + type: string + minLength: 1 + maxLength: 32 + example: + vendorName: Vendor GmbH + vendorId: 26 + masterId: 42 + masterType: Wireless_Master + serialNumber: IOLWM123456 + orderCode: PROD123456 + productName: IO-Link Wireless Master + productId: PROD123456 + hardwareRevision: 3.2.1.444R + firmwareRevision: 3.2.1.888R + vendorUrl: "http://www.io-link.com" + productInstanceUri: "http://www.io-link.com/PROD123456/IOLWM123456" + gsdUri: "https://io-link.com/GSDML-V2.34-IO-Link-Wireless-Master-20190301.xml" + manualUrl: "http://www.io-link.com/io-link-master/documentation.pdf" + applicationSpecificTag: Fallback reader + locationTag: Down under + functionTag: Code reading + identificationPost: + type: object + properties: + applicationSpecificTag: + type: string + minLength: 1 + maxLength: 32 + locationTag: + type: string + minLength: 1 + maxLength: 32 + functionTag: + type: string + minLength: 1 + maxLength: 32 + + deviceEvents: + summary: events + tags: + - name: device + type: array + payload: + $ref: "#/schemas/deviceEvent" + deviceEvent: + type: object + required: + - time + - severity + - message + properties: + time: + $ref: "#/schemas/eventTime" + severity: + $ref: "#/schemas/eventSeverity" + message: + required: + - code + - mode + allOf: + - $ref: "#/schemas/eventObject" + devicehealth: + summary: contains the health information of the device. + tags: + - name: device + payload: + required: + - health + - healthState + type: object + properties: + health: + $ref: "#/schemas/namurHealth" + healthState: + $ref: "#/schemas/namurHealthState" + errors: + type: object + properties: + iolErrors: + type: object + properties: + isIolWirebreak: + type: boolean + isIolShortCircuit: + type: boolean + isProcessDataInvalid: + type: boolean + isDataStorageFaulty: + type: boolean + isValidationFailure: + type: boolean + validationError: + type: object + properties: + isWrongCycleTime: + type: boolean + isWrongIolinkRevision: + type: boolean + isWrongPdInLength: + type: boolean + isWrongPdOutLength: + type: boolean + isWrongVendorId: + type: boolean + isWrongDeviceId: + type: boolean + isWrongSerialNumber: + type: boolean + isShortCircuitPin4: + type: boolean + isShortCircuitPin2: + type: boolean + isOverloadStatusPin4: + type: boolean + isOverloadStatusPin2: + type: boolean + isActuatorWarningPin4: + type: boolean + isActuatorWarningPin2: + type: boolean + namurHealthState: + type: integer + maximum: 100 + minimum: 0 + description: >- + Reflects changing a meter for the health state as a result of + sub-optimal process and/or environmental conditions from 100 to 0 + namurHealth: + type: string + enum: + - NORMAL_0 + - FAILURE_1 + - CHECK_FUNCTION_2 + - OFF_SPEC_3 + - MAINTENANCE_REQUIRED_4 + - DIAGNOSIS_PASSIVE_5 + description: >- + health indicates the status as defined by NAMUR recommendation NE107 as + an DeviceHealthEnumeration value. + networkConfiguration: + type: array + items: + type: object + required: + - name + - ipConfiguration + - ipAddress + - subnetMask + - macAddress + properties: + name: + type: string + description: Name of the interface. + example: eth0 + ipConfiguration: + $ref: "#/schemas/ipConfiguration" + ipAddress: + $ref: "#/schemas/ipAddress" + subnetMask: + $ref: "#/schemas/subnetMask" + standardGateway: + $ref: "#/schemas/standardGateway" + dnsServer: + $ref: "#/schemas/dnsServer" + macAddress: + $ref: "#/schemas/macAddress" + ifSpeed: + type: array + items: + $ref: "#/schemas/valueUnitObject" + ifOperStatus: + type: array + items: + type: string + example: "linkUp" + masterConfiguration: + properties: + masterId: + type: integer + minimum: 1 + maximum: 29 + ahtEnable: + type: boolean + default: false + pairingTimeout: + type: object + required: + - value + - unit + properties: + value: + type: integer + minimum: 5 + maximum: 65535 + unit: + type: string + enum: + - s + blacklist: + type: object + required: + - all + properties: + "2402": + type: boolean + default: false + "2403": + type: boolean + default: false + "2404": + type: boolean + default: false + "2405": + type: boolean + default: false + "2406": + type: boolean + default: false + "2407": + type: boolean + default: false + "2408": + type: boolean + default: false + "2409": + type: boolean + default: false + "2410": + type: boolean + default: false + "2411": + type: boolean + default: false + "2412": + type: boolean + default: false + "2413": + type: boolean + default: false + "2414": + type: boolean + default: false + "2415": + type: boolean + default: false + "2416": + type: boolean + default: false + "2417": + type: boolean + default: false + "2418": + type: boolean + default: false + "2419": + type: boolean + default: false + "2420": + type: boolean + default: false + "2421": + type: boolean + default: false + "2422": + type: boolean + default: false + "2423": + type: boolean + default: false + "2424": + type: boolean + default: false + "2425": + type: boolean + default: false + "2426": + type: boolean + default: false + "2427": + type: boolean + default: false + "2428": + type: boolean + default: false + "2429": + type: boolean + default: false + "2430": + type: boolean + default: false + "2431": + type: boolean + default: false + "2432": + type: boolean + default: false + "2433": + type: boolean + default: false + "2434": + type: boolean + default: false + "2435": + type: boolean + default: false + "2436": + type: boolean + default: false + "2437": + type: boolean + default: false + "2438": + type: boolean + default: false + "2439": + type: boolean + default: false + "2440": + type: boolean + default: false + "2441": + type: boolean + default: false + "2442": + type: boolean + default: false + "2443": + type: boolean + default: false + "2444": + type: boolean + default: false + "2445": + type: boolean + default: false + "2446": + type: boolean + default: false + "2447": + type: boolean + default: false + "2448": + type: boolean + default: false + "2449": + type: boolean + default: false + "2450": + type: boolean + default: false + "2451": + type: boolean + default: false + "2452": + type: boolean + default: false + "2453": + type: boolean + default: false + "2454": + type: boolean + default: false + "2455": + type: boolean + default: false + "2456": + type: boolean + default: false + "2457": + type: boolean + default: false + "2458": + type: boolean + default: false + "2459": + type: boolean + default: false + "2460": + type: boolean + default: false + "2461": + type: boolean + default: false + "2462": + type: boolean + default: false + "2463": + type: boolean + default: false + "2464": + type: boolean + default: false + "2465": + type: boolean + default: false + "2466": + type: boolean + default: false + "2467": + type: boolean + default: false + "2468": + type: boolean + default: false + "2469": + type: boolean + default: false + "2470": + type: boolean + default: false + "2471": + type: boolean + default: false + "2472": + type: boolean + default: false + "2473": + type: boolean + default: false + "2474": + type: boolean + default: false + "2475": + type: boolean + default: false + "2476": + type: boolean + default: false + "2477": + type: boolean + default: false + "2478": + type: boolean + default: false + "2479": + type: boolean + default: false + example: + masterId: 5 + ahtEnable: false + pairingTimeout: + value: 25 + unit: s + blackList: + "2402": false + "2403": false + "2404": false + "2405": false + "2406": false + "2407": false + "2408": false + "2409": false + "2410": false + "2411": false + "2412": false + "2413": false + "2414": false + "2415": false + "2416": false + "2417": false + "2418": false + "2419": false + "2420": false + "2421": false + "2422": false + "2423": false + "2424": false + "2425": false + "2426": false + "2427": false + "2428": false + "2429": false + "2430": false + "2431": false + "2432": false + "2433": false + "2434": false + "2435": false + "2436": false + "2437": false + "2438": false + "2439": false + "2440": false + "2441": false + "2442": false + "2443": false + "2444": false + "2445": false + "2446": false + "2447": false + "2448": false + "2449": false + "2450": false + "2451": false + "2452": false + "2453": false + "2454": false + "2455": false + "2456": false + "2457": false + "2458": false + "2459": false + "2460": false + "2461": false + "2462": false + "2463": false + "2464": false + "2465": false + "2466": false + "2467": false + "2468": false + "2469": false + "2470": false + "2471": false + "2472": false + "2473": false + "2474": false + "2475": false + "2476": false + "2477": false + "2478": false + "2479": false + + tracksStatisticsChannel: + properties: + trackNumber: + type: integer + minimum: 1 + maximum: 5 + channelErrors: + type: object + # required: # @todo wireles + # - all + properties: + "2402": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2403": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2404": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2405": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2406": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2407": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2408": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2409": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2410": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2411": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2412": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2413": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2414": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2415": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2416": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2417": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2418": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2419": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2420": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2421": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2422": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2423": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2424": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2425": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2426": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2427": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2428": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2429": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2430": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2431": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2432": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2433": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2434": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2435": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2436": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2437": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2438": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2439": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2440": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2441": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2442": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2443": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2444": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2445": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2446": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2447": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2448": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2449": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2450": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2451": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2452": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2453": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2454": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2455": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2456": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2457": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2458": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2459": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2460": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2461": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2462": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2463": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2464": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2465": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2466": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2467": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2468": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2469": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2470": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2471": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2472": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2473": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2474": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2475": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2476": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2477": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2478": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + "2479": + type: integer + minimum: 0 + maximum: 65535 # 0 to 100, 65535 means no data available + example: + trackNumber: 2 + channelErrors: + "2402": 0 + "2403": 0 + "2404": 0 + "2405": 0 + "2406": 0 + "2407": 3 + "2408": 1 + "2409": 5 + "2410": 9 + "2411": 6 + "2412": 4 + "2413": 1 + "2414": 0 + "2415": 0 + "2416": 0 + "2417": 0 + "2418": 0 + "2419": 0 + "2420": 0 + "2421": 0 + "2422": 0 + "2423": 0 + "2424": 0 + "2425": 0 + "2426": 0 + "2427": 0 + "2428": 0 + "2429": 0 + "2430": 0 + "2431": 0 + "2432": 0 + "2433": 0 + "2434": 0 + "2435": 3 + "2436": 2 + "2437": 5 + "2438": 2 + "2439": 0 + "2440": 0 + "2441": 0 + "2442": 0 + "2443": 0 + "2444": 0 + "2445": 0 + "2446": 0 + "2447": 0 + "2448": 0 + "2449": 0 + "2450": 0 + "2451": 0 + "2452": 0 + "2453": 0 + "2454": 0 + "2455": 0 + "2456": 0 + "2457": 0 + "2458": 0 + "2459": 0 + "2460": 0 + "2461": 0 + "2462": 0 + "2463": 0 + "2464": 0 + "2465": 0 + "2466": 0 + "2467": 0 + "2468": 0 + "2469": 0 + "2470": 0 + "2471": 0 + "2472": 0 + "2473": 0 + "2474": 0 + "2475": 0 + "2476": 0 + "2477": 0 + "2478": 0 + "2479": 0 + + trackConfiguration: + properties: + statusInfo: + type: string + enum: + - STOP + - CYCLIC + - ROAMING + - SERVICE + txPower: + type: integer + minimum: 1 + maximum: 31 + example: + trackMode: CYCLIC + + trackConfigurationPost: + properties: + statusInfo: + type: string + enum: + - STOP + - CYCLIC + - ROAMING + - SERVICE + txPower: + type: integer + minimum: 1 + maximum: 31 + example: + trackMode: CYCLIC + txPower: 20 + + # wirelessPortConfigurationGet: # @todo wireles + # properties: + # portMode: + # type: string + # enum: + # - DEACTIVATED + # - CYCLIC + # - ROAMING + # validationBackup: + # type: string + # enum: + # - NO_DEVICE_CHECK + # - TYPE_COMPATIBLE_DEVICE_V1.1 + # - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + # - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE + # vendorId: + # type: integer + # minimum: 1 + # maximum: 65535 + # deviceId: + # type: integer + # minimum: 1 + # maximum: 16777215 + # portCycleTime: + # type: object + # required: + # - value + # - unit + # properties: + # value: + # type: integer + # minimum: 0 ## 0 means Freerunning + # maximum: 315 ## Step size 5ms + # unit: + # type: string + # enum: + # - ms + # trackNumber: + # type: integer + # minimum: 1 + # maximum: 5 + # slotNumber: + # type: integer + # minimum: 0 + # maximum: 7 + # slotType: + # type: string + # enum: + # - "SSLOT" + # - "DSLOT" + # maxRetry: + # type: integer + # minimum: 2 + # maximum: 31 + # imaTime: + # type: object + # required: + # - base + # - multiplier + # properties: + # base: + # type: string + # enum: + # - "1664us" + # - "5ms" + # - "1s" + # - "1min" + # multiplier: + # type: integer + # minimum: 1 + # maximum: 255 + # deviceTxPower: + # type: integer + # minimum: 0 + # maximum: 31 + # lowPowerDevice: + # type: string + # enum: + # - "NORMAL" + # - "LOW_POWER" + # maxPDSegLength: + # type: integer + # minimum: 0 + # maximum: 32 + # uniqueId: + # type: string + # deviceAlias: + # type: string + # example: + # portMode: CYCLIC + # validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1 + # vendorId: 888 + # deviceId: 1 + # portCycleTime: + # value: 0 + # unit: ms + # trackNumber: 5 + # slotNumber: 1 + # slotType: SSLOT + # maxRetry: 20 + # imaTime: + # base: 1664us + # multiplier: 60 + # deviceTxPower: 31 + # lowPowerDevice: NORMAL + # maxPDSegLength: 0 + # uniqueId: 03:78:00:00:01:32:50:60:46 + # deviceAlias: "Port_X01" + + # wirelessPortConfigurationPost: # @todo wireles + # properties: + # portMode: + # type: string + # enum: + # - DEACTIVATED + # - CYCLIC + # - ROAMING + # validationBackup: + # type: string + # enum: + # - NO_DEVICE_CHECK + # - TYPE_COMPATIBLE_DEVICE_V1.1 + # - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + # - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE + # vendorId: + # type: integer + # minimum: 1 + # maximum: 65535 + # deviceId: + # type: integer + # minimum: 1 + # maximum: 16777215 + # portCycleTime: + # type: object + # required: + # - value + # - unit + # properties: + # value: + # type: integer + # minimum: 0 ## 0 means Freerunning + # maximum: 315 ## Step size 5ms + # unit: + # type: string + # enum: + # - ms + # trackNumber: + # type: integer + # minimum: 1 + # maximum: 5 + # slotNumber: + # type: integer + # minimum: 0 + # maximum: 7 + # slotType: + # type: string + # enum: + # - "SSLOT" + # - "DSLOT" + # maxRetry: + # type: integer + # minimum: 2 + # maximum: 31 + # imaTime: + # type: object + # required: + # - base + # - multiplier + # properties: + # base: + # type: string + # enum: + # - "1664us" + # - "5ms" + # - "1s" + # - "1min" + # multiplier: + # type: integer + # minimum: 1 + # maximum: 255 + # deviceTxPower: + # type: integer + # minimum: 0 + # maximum: 31 + # lowPowerDevice: + # type: string + # enum: + # - "NORMAL" + # - "LOW_POWER" + # maxPDSegLength: + # type: integer + # minimum: 0 + # maximum: 32 + # uniqueId: + # type: string + # example: + # portMode: CYCLIC + # validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE + # vendorId: 888 + # deviceId: 1 + # portCycleTime: + # value: 0 ##Or FreeRunning + # unit: ms + # trackNumber: 5 + # slotNumber: 1 + # slotType: SSLOT + # maxRetry: 20 + # imaTime: + # base: 1664us + # multiplier: 60 + # deviceTxPower: 31 + # lowPowerDevice: NORMAL + # maxPDSegLength: 0 + # uniqueId: 03:78:00:00:01:32:50:60:46 + + mqtt-iol-master: + type: string + description: The MQTT topic for the IO-Link Master. + example: "192.168.0.1:1883" + artifact: + type: string + description: IODD Artifacts like device, vendor images + enum: + - XML + - DeviceIcon + - DeviceSymbol + - VendorLogo + - zip + default: XML + masterIdentificationGet: + required: + - vendorName + - vendorId + - masterId + - masterType + type: object + properties: + vendorName: + type: string + minLength: 1 + maxLength: 64 + vendorId: + type: integer + minimum: 1 + maximum: 65535 + masterId: + type: integer + minimum: 1 + maximum: 4294967295 + masterType: + type: string + enum: + - Unspecific + - Master acc. V1.0 + - Master acc. V1.1 + - Failsafe_Master + - Wireless_Master + serialNumber: + type: string + minLength: 1 + maxLength: 16 + orderCode: + type: string + minLength: 1 + maxLength: 64 + productName: + type: string + minLength: 1 + maxLength: 64 + productId: + type: string + minLength: 1 + maxLength: 64 + hardwareRevision: + type: string + minLength: 1 + maxLength: 64 + firmwareRevision: + type: string + minLength: 1 + maxLength: 64 + vendorUrl: + type: string + format: uri + manualUrl: + type: string + format: uri + productInstanceUri: + type: string + descriptionFileUri: + type: string + applicationSpecificTag: + type: string + minLength: 1 + maxLength: 32 + locationTag: + type: string + minLength: 1 + maxLength: 32 + functionTag: + type: string + minLength: 1 + maxLength: 32 From f187ce19dfd773d76f416cc8e69acc94ba95bada Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 5 Feb 2024 16:45:29 +0100 Subject: [PATCH 099/279] Fix underscore visualization --- JSON_for_IO-Link.yaml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index d593472..dfb0d4e 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2896,11 +2896,11 @@ components: Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used.\ - Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used.\ + Rule 3: Leading numbers shall be prefixed with "\_". \ Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + Rule 5: Naming according the scheme {name}\_{index} or {name}\_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is "element\_{subindex}". \ minLength: 1 maxLength: 71 subParameterName: @@ -2909,11 +2909,11 @@ components: Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ - Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with "\_". \ Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + Rule 5: Naming according the scheme {name}\_{index} or {name}\_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is "element\_{subindex}". \ minLength: 1 maxLength: 71 cycleTime: @@ -5279,11 +5279,11 @@ components: Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ - Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with "\_". \ Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is “element_{subindex}”. + Rule 5: Naming according the scheme {name}\_{index} or {name}\_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is "element\_{subindex}"". Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ schema: @@ -5298,11 +5298,11 @@ components: Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ - Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with "\_". \ Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + Rule 5: Naming according the scheme {name}\_{index} or {name}\_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is "element\_{subindex}". \ Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ schema: From 6001bb93b855871956d7d75f132d4c042f1b9e6d Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 5 Feb 2024 16:52:31 +0100 Subject: [PATCH 100/279] Add remark for IODD support --- JSON_for_IO-Link.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 581a829..5e0e719 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5063,14 +5063,14 @@ components: parameterIdent: name: parameterIdent in: path - description: Parameter access either via index or parametername. + description: Parameter access either via index or parametername. Access via parametername requires IODD support. schema: $ref: "#/components/schemas/parameterIdent" required: true subParameterIdent: name: subParameterIdent in: path - description: Subparameter access either via subindex or subparametername. + description: Subparameter access either via subindex or subparametername. Access via subparametername requires IODD support. schema: $ref: "#/components/schemas/subParameterIdent" required: true From 9c327c18bb6633509ffbb04b6caf068ad3013a29 Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 14 Feb 2024 10:21:37 +0100 Subject: [PATCH 101/279] Fix visualization of underscore in description --- JSON_for_IO-Link.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4582602..4faf948 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2692,11 +2692,11 @@ components: Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ - Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with "\_". \ Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is “element_{subindex}”. + Rule 5: Naming according the scheme {name}\_{index} or {name}\_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is "element\_{subindex}"". Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ minLength: 1 @@ -2713,14 +2713,14 @@ components: subParameterName: type: string description: | - Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ + Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specifiation. \ Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "_". The following regex (/[^\w\n]/g) can be used. \ - Rule 3: Leading numbers shall be prefixed with “_“. \ + Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used. \ + Rule 3: Leading numbers shall be prefixed with "\_". \ Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ + Rule 5: Naming according the scheme {name}\_{index} or {name}\_{subindex} is always allowed even if names are not duplicated. \ + Rule 6: The naming of ArrayT elements is "element\_{subindex}"". Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ minLength: 1 @@ -5009,7 +5009,7 @@ components: Device name configured with the port/configuration URL. Default device name is 'masterNportM' where 'N' means the masterNumber and 'M' means the portNumber. Even if a new device alias has been assigned, the device - can always be addressed via the default name. + can always be addressed via the default name. schema: type: string minLength: 1 From 2e8bd304563f50cb0e1732ce7020aaf925d2bca2 Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 14 Feb 2024 11:16:36 +0100 Subject: [PATCH 102/279] Add specification merger workflow --- .github/workflows/spec-merge.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/spec-merge.yml diff --git a/.github/workflows/spec-merge.yml b/.github/workflows/spec-merge.yml new file mode 100644 index 0000000..beab9d3 --- /dev/null +++ b/.github/workflows/spec-merge.yml @@ -0,0 +1,21 @@ +name: Merge async api specification + +on: + - push + - pull_request + +jobs: + build: + name: Run swagger-merger + runs-on: ubuntu-latest + steps: + # Check out the repository + - uses: actions/checkout@v2 + + # install swagger-merger + - name: install swagger-merger + run: npm install -g swagger-merger + + # Run swagger-merger + - name: Run swagger-merger + run: swagger-merger -i .\MQTT_for_IO-Link.yaml .\schemas.yaml .\examples.yaml -o MQTT_for_IO-Link_merged.yaml From 32382737741e24a4fd8986a9be7f8e4aca6419c9 Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 14 Feb 2024 11:27:44 +0100 Subject: [PATCH 103/279] Test workflow --- .github/workflows/spec-merge.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spec-merge.yml b/.github/workflows/spec-merge.yml index beab9d3..8365f42 100644 --- a/.github/workflows/spec-merge.yml +++ b/.github/workflows/spec-merge.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: # Check out the repository - - uses: actions/checkout@v2 + - uses: actions/checkout@v1 # install swagger-merger - name: install swagger-merger @@ -18,4 +18,4 @@ jobs: # Run swagger-merger - name: Run swagger-merger - run: swagger-merger -i .\MQTT_for_IO-Link.yaml .\schemas.yaml .\examples.yaml -o MQTT_for_IO-Link_merged.yaml + run: swagger-merger -i MQTT_for_IO-Link.yaml schemas.yaml examples.yaml -o MQTT_for_IO-Link_merged.yaml From 51f50e8c9de78f43ca730d0e50725421ae9e7f6d Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 14 Feb 2024 11:43:18 +0100 Subject: [PATCH 104/279] Upload merged files as artifacts --- .github/workflows/spec-merge.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spec-merge.yml b/.github/workflows/spec-merge.yml index 8365f42..5a4d984 100644 --- a/.github/workflows/spec-merge.yml +++ b/.github/workflows/spec-merge.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: # Check out the repository - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 # install swagger-merger - name: install swagger-merger @@ -18,4 +18,18 @@ jobs: # Run swagger-merger - name: Run swagger-merger - run: swagger-merger -i MQTT_for_IO-Link.yaml schemas.yaml examples.yaml -o MQTT_for_IO-Link_merged.yaml + run: | + swagger-merger -i MQTT_for_IO-Link.yaml schemas.yaml examples.yaml -o MQTT_for_IO-Link_merged.yaml + swagger-merger -i JSON_for_IO-Link.yaml schemas.yaml examples.yaml -o JSON_for_IO-Link_merged.yaml + + - name: Upload merged MQTT_for_IO-Link YAML file as artifact + uses: actions/upload-artifact@v2 + with: + name: mqtt-yaml + path: MQTT_for_IO-Link_merged.yaml + + - name: Upload merged JSON_for_IO-Link YAML file as artifact + uses: actions/upload-artifact@v2 + with: + name: json-yaml + path: JSON_for_IO-Link_merged.yaml From 3cc74ddeec86975a2f38a1ff7fd82592f2c6d636 Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 14 Feb 2024 11:51:28 +0100 Subject: [PATCH 105/279] Change node version --- .github/workflows/spec-merge.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/spec-merge.yml b/.github/workflows/spec-merge.yml index 5a4d984..dffbc30 100644 --- a/.github/workflows/spec-merge.yml +++ b/.github/workflows/spec-merge.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: # Check out the repository - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 # install swagger-merger - name: install swagger-merger @@ -23,13 +23,13 @@ jobs: swagger-merger -i JSON_for_IO-Link.yaml schemas.yaml examples.yaml -o JSON_for_IO-Link_merged.yaml - name: Upload merged MQTT_for_IO-Link YAML file as artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: mqtt-yaml path: MQTT_for_IO-Link_merged.yaml - name: Upload merged JSON_for_IO-Link YAML file as artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: json-yaml path: JSON_for_IO-Link_merged.yaml From 47c7dcd0ffeb0d5325a7255a9931c2fd1a5af43a Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 14 Feb 2024 12:36:23 +0100 Subject: [PATCH 106/279] Change uptime to mqttuptime to make the meaning more clear --- JSON_for_IO-Link.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index dfb0d4e..060605e 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3616,7 +3616,7 @@ components: required: - connectionStatus - serverAddress - - upTime + - mqttUpTime properties: connectionStatus: type: string @@ -3630,7 +3630,8 @@ components: - NOT_AUTHORIZED serverAddress: type: string - upTime: + mqttUpTime: + description: Duration of established MQTT connection type: integer example: connectionStatus: CONNECTION_ACCEPTED From 7ced2e8d2a3d03dfa886fa163210ad2aa17c9106 Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 14 Feb 2024 14:17:10 +0100 Subject: [PATCH 107/279] Strip down specification to basic feature set --- MQTT_for_IO-Link.yaml | 821 ++---------------------------------------- schemas.yaml | 2 +- 2 files changed, 28 insertions(+), 795 deletions(-) diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index a2c0bb5..2331bde 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -19,8 +19,6 @@ servers: protocol: mqtt protocolVersion: 3.1.1 description: io-link master as MQTT client - security: - - user-password: [] variables: iolm-ip: default: "192.168.0.1" @@ -32,7 +30,7 @@ servers: channels: "{originatorId}/gateway/identification": description: >- - publishes asset (e.g. gateway) nameplate information, send at startup or + Publishes gateway nameplate information, send at startup or onChange parameters: originatorId: @@ -48,23 +46,16 @@ channels: description: publishes gateway events parameters: originatorId: - description: >- - shall be the unique identifier of the originator and shall correspond - to the client id inside the MQTT message. It can be the ProductURI, - DNS name, IP address or MAC address of the device hosting the MQTT - publisher. By default the Hostname shall be used. schema: - type: string - example: iomaster_nr1 + $ref: "./schemas.yaml#/schemas/originatorId" publish: message: name: gatewayEvents payload: - $ref: "./schemas.yaml#/schemas/gatewayIdentificationGet" + $ref: "./schemas.yaml#/schemas/gatewayEventsGet" "{originatorId}/master/{masterNumber}/identification": - description: >- - publishes asset (e.g. gateway) nameplate information, send at startup or + description: publishes master identification data, send at startup or onChange parameters: originatorId: @@ -75,71 +66,50 @@ channels: $ref: "./schemas.yaml#/schemas/eventMasterNumber" publish: message: - name: gatewayIdentification + name: masterIdentification payload: $ref: "./schemas.yaml#/schemas/masterIdentificationGet" "{originatorId}/{deviceAlias}/identification": description: >- - publishes asset (e.g. device) nameplate information, send at connection + publishes device identification, send at connection startup (new connection) parameters: originatorId: - description: >- - shall be the unique identifier of the originator and shall correspond - to the client id inside the MQTT message. It can be the ProductURI, - DNS name, IP address or MAC address of the device hosting the MQTT - publisher. By default the Hostname shall be used. schema: - type: string - example: iomaster_nr1 + $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: - description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: - type: string - example: port1 + $ref: "./schemas.yaml#/schemas/deviceAlias" publish: message: name: deviceIdentification payload: $ref: "./schemas.yaml#/schemas/deviceIdentificationGet" + bindings: + mqtt: + qos: 1 + retain: true "{originatorId}/{deviceAlias}/event": - description: "publishes the port status, send at startup/onChange" + description: "publishes the device events, send at startup/onChange" parameters: originatorId: - description: >- - shall be the unique identifier of the originator and shall correspond - to the client id inside the MQTT message. It can be the ProductURI, - DNS name, IP address or MAC address of the device hosting the MQTT - publisher. By default the Hostname shall be used. schema: - type: string - example: iomaster_nr1 + $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: - description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: - type: string - example: port1 - subscribe: + $ref: "./schemas.yaml#/schemas/deviceAlias" + publish: message: - $ref: "#/components/messages/portstatus" - bindings: - mqtt: - qos: 1 - retain: true + payload: + $ref: "./schemas.yaml#/schemas/deviceEventsGet" "{originatorId}/{deviceAlias}/processData": parameters: originatorId: - description: >- - shall be the unique identifier of the originator and shall correspond - to the client id inside the MQTT message. It can be the ProductURI, - DNS name, IP address or MAC address of the device hosting the MQTT - publisher. By default the Hostname shall be used. schema: - type: string - example: iomaster_nr1 + $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" schema: @@ -151,753 +121,16 @@ channels: payload: $ref: "./schemas.yaml#/schemas/processDataValue" - "{originatorId}/{deviceAlias}/events": - description: >- - eventlog of the io link device, see - "iolink/v1/devices/{deviceAlias}/events" + "{originatorId}/{portNumber}/status": + description: "publishes the port status, send at startup/onChange" parameters: originatorId: - description: >- - shall be the unique identifier of the originator and shall correspond - to the client id inside the MQTT message. It can be the ProductURI, - DNS name, IP address or MAC address of the device hosting the MQTT - publisher. By default the Hostname shall be used. schema: - type: string - example: iomaster_nr1 - deviceAlias: - description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" + $ref: "./schemas.yaml#/schemas/originatorId" + portNumber: schema: - type: string - example: port1 - subscribe: + $ref: "./schemas.yaml#/schemas/eventPortNumber" + publish: message: - $ref: "#/components/messages/deviceEvents" - bindings: - mqtt: - qos: 1 - retain: true -components: - messages: - connection: - summary: onlinestate of the gateway - description: This will be issued as birth and lastwill message. - tags: - - name: gateway - payload: - type: string - enum: - - online - - offline - example: online - nameplate: - summary: contains the nameplate information of a gateway. - tags: - - name: gateway - payload: - type: object - properties: - vendorName: - type: string - default: Murrelektronik - vendorId: - type: number - default: 303 - vendorUrl: - type: string - format: url - default: "http://www.murrelektronik.com" - productName: - type: string - example: Impact67 PN DIO12 IOL4 IRT 7/8 5pin - orderCode: - type: string - example: 55132 - serialNumber: - type: string - example: 1234567 - productUri: - type: string - format: url - description: >- - Unique product identifier and link to product catalogue - (https://product.murrelektronik.com/{productCode}/{orderCode}/{serialNumber}) - example: "https://product.murrelektronik.com/XYZ/512345/01234567" - hardwareRevision: - type: string - example: 7 - softwareRevision: - type: string - example: 1.2.3 - deviceClass: - type: string - example: PN Profinet - nameOfStation: - type: string - description: Profinet station name - example: profinetstation - sysName: - type: string - description: Systemname - example: Device_123 - sysContact: - type: string - description: contact person (eMail) for this device or system - example: service@murrelektronik.de - sysLocation: - type: string - description: Location description of the device or system - example: Factory ABC Hall 123 - ethIpv4: - $ref: "#/components/schemas/networkConfiguration" - gatewayhealth: - summary: diagnostic health information of the gateway. - tags: - - name: gateway - payload: - type: object - required: - - health - - healthState - properties: - error: - type: string - description: Error message describing the error ocurred. - health: - $ref: "#/components/schemas/namurHealth" - healthState: - $ref: "#/components/schemas/namurHealthState" - example: - health: NORMAL_0 - healthState: 100 - portstatus: - summary: contains the status of the port. - tags: - - name: gateway - payload: - type: object - required: - - portNumber - - maxPowerSupply - - portType - - mode - - deviceAlias - - iqConfiguration - properties: - portNumber: - type: number - example: 1 - maxPowerSupply: - type: object - required: - - value - - unit - properties: - value: - type: number - example: 0.3 - unit: - type: string - example: A - portType: - type: string - enum: - - CLASS_A - - CLASS_B - - CLASS_A_WITH_PORT_POWER_OFF_ON - - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_B - - WIRELESS_MASTER - example: CLASS_A - mode: - type: string - enum: - - DEACTIVATED - - IOLINK_MANUAL - - IOLINK_AUTOSTART - - DIGITAL_INPUT - - DIGITAL_OUTPUT - example: DEACTIVATED - deviceAlias: - type: string - example: master1port1 - iqConfiguration: - type: string - enum: - - NOT_SUPPORTED - - DIGITAL_INPUT - - DIGITAL_OUTPUT - example: DIGITAL_INPUT - validationAndBackup: - type: string - description: Used by the IO-Link Master just when portMode is IOLINK_MANUAL. - enum: - - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.0 - - TYPE_COMPATIBLE_DEVICE_V1.1 - - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - example: NO_DEVICE_CHECK - cycleTime: - description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL or - IOLINK_AUTOSTART. Default value is 0 ms which means as fast as - possible - type: object - required: - - value - - unit - properties: - value: - type: number - example: 2.3 - unit: - type: string - enum: - - ms - example: ms - vendorId: - type: integer - minimum: 1 - maximum: 65535 - description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL and - validationAndBackup is not NO_DEVICE_CHECK. - example: 1234 - deviceId: - type: integer - minimum: 1 - maximum: 16777215 - description: >- - Used by the IO-Link Master just when portMode is IOLINK_MANUAL and - validationAndBackup is not NO_DEVICE_CHECK. - example: 15464 - nameplate_iolink: - summary: contains the nameplate information of an IO-Link device. - description: | - This will be issued when an IO-Link device was detected. - tags: - - name: device - payload: - type: object - properties: - vendorName: - type: string - default: Murrelektronik - vendorId: - type: number - default: 303 - vendorUrl: - type: string - format: url - default: "http://www.murrelektronik.com" - productName: - type: string - orderCode: - type: string - serialNumber: - type: string - productUri: - type: string - format: url - description: >- - Unique identifier and link to product catalogue - (https://product.murrelektronik.com/{productCode}/{orderCode}/{serialNumber}) - hardwareRevision: - type: string - firmwareRevision: - type: string - example: - vendorName: Murrelektronik - vendorId: 303 - vendorUrl: "http://www.murrelektronik.com/" - orderCode: 55132 - productName: Impact67 PN DIO12 IOL4 IRT 7/8" 5pin - serialNumber: "123456789" - hardwareRevision: 1.0.0 - softwareRevision: 1.0.1 - devicehealth: - summary: contains the health information of the device. - tags: - - name: device - payload: - required: - - health - - healthState - type: object - properties: - health: - $ref: "#/components/schemas/namurHealth" - healthState: - $ref: "#/components/schemas/namurHealthState" - errors: - type: object - properties: - iolErrors: - type: object - properties: - isIolWirebreak: - type: boolean - isIolShortCircuit: - type: boolean - isProcessDataInvalid: - type: boolean - isDataStorageFaulty: - type: boolean - isValidationFailure: - type: boolean - validationError: - type: object - properties: - isWrongCycleTime: - type: boolean - isWrongIolinkRevision: - type: boolean - isWrongPdInLength: - type: boolean - isWrongPdOutLength: - type: boolean - isWrongVendorId: - type: boolean - isWrongdeviceAlias: - type: boolean - isWrongSerialNumber: - type: boolean - isShortCircuitPin4: - type: boolean - isShortCircuitPin2: - type: boolean - isOverloadStatusPin4: - type: boolean - isOverloadStatusPin2: - type: boolean - isActuatorWarningPin4: - type: boolean - isActuatorWarningPin2: - type: boolean - deviceEvents: - summary: events - tags: - - name: device - payload: - $ref: "#/components/schemas/deviceEvents" - processdata_IOLink: - summary: >- - Read the process data values (input and output) from the specified - Device - tags: - - name: device - payload: - $ref: "#/components/schemas/deviceProcessDataValueIOLINK" - processdata_Misc: - summary: >- - Read the process data values (input and output) from the specified - Device. - tags: - - name: device - payload: - $ref: "#/components/schemas/deviceProcessDataValueMisc" - schemas: - eventOrigin: - type: string - enum: - - ALL - - GATEWAY - - MASTERS - - PORTS - - DEVICES - default: ALL - cycleTime: - type: object - required: - - value - - unit - properties: - value: - type: number - unit: - type: string - enum: - - ms - processData: - allOf: - - type: object - required: - - direction - properties: - direction: - $ref: "#/components/schemas/content" - oneOf: - - type: object - required: - - interval - properties: - interval: - $ref: "#/components/schemas/cycleTime" - - type: object - required: - - onChange - properties: - onChange: - type: boolean - content: - type: string - enum: - - getData - - setData - - getSetData - default: getData - mqttConfiguration: - type: object - required: - - clientMode - properties: - clientMode: - type: string - serverAddress: - type: string - username: - type: string - password: - type: string - lastWill: - type: object - required: - - topic - - message - - qos - - retain - properties: - topic: - type: string - message: - type: string - qos: - type: string - enum: - - 0_ONLY_ONCE - - 1_AT_LEAST_ONCE - - 2_EXACTLY_ONCE - retain: - type: boolean - keepAliveTime: - type: integer - mqttConnectionStatus: - allOf: - - type: object - required: - - connectionStatus - - serverAddress - - upTime - properties: - connectionStatus: - type: string - enum: - - CLIENT_INACTIVE - - CONNECTION_ACCEPTED - - UNACCEPTABLE_PROTOCOL_VERSION - - IDENTIFIER_REJECTED - - SERVER_UNAVAILABLE - - BAD_USERNAME_OR_PASSWORD - - NOT_AUTHORIZED - serverAddress: - type: string - upTime: - type: integer - example: - connectionStatus: CONNECTION_ACCEPTED - serverAddress: "http://broker-address.com" - upTime: 1050 - deviceProcessDataValueIOLINK: - type: object - description: > - The cqValue is present in the 'getData' object if the CQ (pin4) is - configured as digital input. The cqValue is present in the 'setData' - object if the CQ (pin4) is configured as digital output. The ioLink is - present either in the 'getData' or 'setData' or both objects if the CQ - (pin4) is configured to IO-Link mode. The iqValue is present in the - 'getData' object if the IQ (pin2) is configured as digital input. The - iqValue is present in the 'setData' object if the IQ (pin4) is - configured as digital output. - properties: - getData: - $ref: "#/components/schemas/processDataValue" - setData: - $ref: "#/components/schemas/processDataValue" - processDataValue: - type: object - properties: - ioLink: - type: object - description: | - Process data in IO-Link mode - required: - - valid - - value - properties: - valid: - type: boolean - description: | - Process data validity - value: - anyOf: - - $ref: "#/components/schemas/deviceByteArrayTypeValue" - - $ref: "#/components/schemas/deviceSimpleTypeValue" - description: | - Process data value - cqValue: - type: boolean - description: > - IO-Link cable CQ (pin4) level if it is used as digital input or - output (SIO mode). (false - 0 V, true - 24 V) - example: false - iqValue: - type: boolean - description: > - IO-Link cable IQ (pin2) level if it is used as digital input or - output. (false - 0 V, true - 24 V) - example: false - deviceProcessDataValueMisc: - type: object - description: | - "Messageblock for misc. messages (example)". - properties: - getData: - type: string - example: daten - setData: - type: string - example: daten - deviceByteArrayTypeValue: - type: object - required: - - value - properties: - value: - type: array - description: The value in byteArray format. - items: - type: number - minimum: 0 - maximum: 255 - example: - - 12 - - 22 - - 216 - deviceSimpleTypeValue: - type: object - properties: - value: - oneOf: - - type: boolean - - type: string - - type: number - description: The value (with simple type) in iodd format. - required: - - value - example: - value: 15.2 - deviceEvents: - type: object - required: - - time - - severity - - origin - - message - properties: - time: - $ref: "#/components/schemas/eventTime" - severity: - $ref: "#/components/schemas/eventSeverity" - message: - required: - - code - - mode - $ref: "#/components/schemas/eventObject" - eventObject: - type: object - properties: - code: - description: >- - IO-Link Port EventCode or IO-Link Device EventCode. This property is - mandatory for IO-Link Port Events or IO-Link Device Events. - type: number - example: 16912 - mode: - description: >- - IO-Link Port Event Mode or IO-Link Device EventMode. This property - is mandatory for IO-Link Port Events or IO-Link Device Events. - type: string - enum: - - SINGLESHOT - - APPEARS - - DISAPPEARS - example: APPEARS - text: - type: string - example: Device temperature over-run – Clear source of heat - eventOriginObject: - type: object - properties: - gateway: - type: string - example: 1 - masterNumber: - description: >- - This property is mandatory for IO-Link Master Events, IO-Link Port - Events and IO-Link Device Events. Should not be used for other log - entries. - type: integer - minimum: 1 - example: 1 - portNumber: - description: >- - This property is mandatory for IO-Link Port Events and IO-Link - Device Events. Should not be used for other log entries. - type: integer - minimum: 1 - example: 1 - deviceAlias: - description: >- - This property is mandatory for IO-Link Device Events. Should not be - used for other log entries. - type: string - example: Temperature_sensor_1 - eventSeverity: - description: >- - Indicates the severity of the message. The IO-Link EventType - NOTIFICATION maps to NOTICE, WARNING to WARNING and ERROR to ERROR. - type: string - enum: - - EMERGENCY - - ALERT - - CRITICAL - - ERROR - - WARNING - - NOTICE - - INFO - - DEBUG - example: WARNING - eventTime: - description: >- - Timestamp (format defined in DIN ISO 8601). This field can give an - absolute time or a relative time. Both formats are defined in DIN ISO - 8601. - type: string - example: "2021-05-18T07:31:54.123Z" - namurHealthState: - type: integer - maximum: 100 - minimum: 0 - description: >- - Reflects changing a meter for the health state as a result of - sub-optimal process and/or environmental conditions from 100 to 0 - namurHealth: - type: string - enum: - - NORMAL_0 - - FAILURE_1 - - CHECK_FUNCTION_2 - - OFF_SPEC_3 - - MAINTENANCE_REQUIRED_4 - - DIAGNOSIS_PASSIVE_5 - description: >- - health indicates the status as defined by NAMUR recommendation NE107 as - an DeviceHealthEnumeration value. - ipConfiguration: - type: string - enum: - - MANUAL - - DHCP - ipAddress: - type: string - example: 192.168.1.13 - subnetMask: - type: string - example: 255.255.255.0 - standardGateway: - type: string - example: 192.168.1.1 - dnsServer: - type: object - required: - - server - - configuration - properties: - server: - type: array - items: - type: string - example: - - 1.1.1.1 - - 2.2.2.2 - configuration: - type: string - enum: - - automatic - - custom - macAddress: - type: string - example: "FE:AB:3A:55:33:11" - valueUnitObject: - type: object - properties: - value: - type: integer - unit: - type: string - networkConfiguration: - type: array - items: - type: object - required: - - name - - ipConfiguration - - ipAddress - - subnetMask - - macAddress - properties: - name: - type: string - description: Name of the interface. - example: eth0 - ipConfiguration: - $ref: "#/components/schemas/ipConfiguration" - ipAddress: - $ref: "#/components/schemas/ipAddress" - subnetMask: - $ref: "#/components/schemas/subnetMask" - standardGateway: - $ref: "#/components/schemas/standardGateway" - dnsServer: - $ref: "#/components/schemas/dnsServer" - macAddress: - $ref: "#/components/schemas/macAddress" - ifSpeed: - type: array - items: - $ref: "#/components/schemas/valueUnitObject" - ifOperStatus: - type: array - items: - type: string - example: linkUp - parameters: - originatorId: - description: >- - This is the unique identifier of the originator and shall correspond to - the client id inside the MQTT message. It can be the ProductURI, DNS - name, IP address or MAC address of the device hosting the MQTT - publisher. By default the Hostname shall be used. - schema: - type: string - example: iomaster_nr1 - deviceAlias: - description: Id of the IO-Link device (e.g. port nr) - schema: - type: string - example: port1 - securitySchemes: - user-password: - type: userPassword + payload: + $ref: "./schemas.yaml#/schemas/mastersPortsStatusGet" diff --git a/schemas.yaml b/schemas.yaml index b93937b..880122d 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1840,7 +1840,7 @@ schemas: description: > IO-Link cable IQ (pin2) level if it is used as digital input or output. (false - 0 V, true - 24 V) - + deviceProcessDataValueGet: type: object description: > From f1bac07bdec19dc0666e87a61ab143da5585496f Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 14 Feb 2024 15:25:16 +0100 Subject: [PATCH 108/279] Change to subscribe --- MQTT_for_IO-Link.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index 2331bde..4b5d26c 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -36,7 +36,7 @@ channels: originatorId: schema: $ref: "./schemas.yaml#/schemas/originatorId" - publish: + subscribe: message: name: gatewayIdentification payload: @@ -48,7 +48,7 @@ channels: originatorId: schema: $ref: "./schemas.yaml#/schemas/originatorId" - publish: + subscribe: message: name: gatewayEvents payload: @@ -64,7 +64,7 @@ channels: masterNumber: schema: $ref: "./schemas.yaml#/schemas/eventMasterNumber" - publish: + subscribe: message: name: masterIdentification payload: @@ -81,7 +81,7 @@ channels: deviceAlias: schema: $ref: "./schemas.yaml#/schemas/deviceAlias" - publish: + subscribe: message: name: deviceIdentification payload: @@ -100,7 +100,7 @@ channels: deviceAlias: schema: $ref: "./schemas.yaml#/schemas/deviceAlias" - publish: + subscribe: message: payload: $ref: "./schemas.yaml#/schemas/deviceEventsGet" @@ -115,7 +115,7 @@ channels: schema: type: string example: port1 - publish: + subscribe: message: name: processdata payload: @@ -130,7 +130,7 @@ channels: portNumber: schema: $ref: "./schemas.yaml#/schemas/eventPortNumber" - publish: + subscribe: message: payload: $ref: "./schemas.yaml#/schemas/mastersPortsStatusGet" From e91331cd169bc63a06ea8829c5d59ef80085d0b4 Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 15 Feb 2024 11:22:49 +0100 Subject: [PATCH 109/279] Remove type of mqtt topic parameter (V3 allows only string) --- schemas.yaml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/schemas.yaml b/schemas.yaml index 880122d..97d218f 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -6,12 +6,16 @@ schemas: maxLength: 32 pattern: "^[a-zA-Z0-9_]{1,32}$" example: master1port1 + deviceAliasMqtt: + description: Unique deviceAlias. + portNumberMqtt: + description: Port number. + masterNumberMqtt: + description: Index of the master. originatorId: - type: string description: Shall be the unique identifier of the originator and shall correspond to the client id inside the MQTT message. It can be the ProductURI, DNS name, IP address or MAC address of the device hosting the MQTT publisher. - example: master1 parameterName: type: string description: | @@ -148,8 +152,8 @@ schemas: - PORTS - DEVICES default: ALL - eventMasterNumber: - type: integer + masterNumber: + description: Index of the master. minimum: 1 eventPortNumber: type: integer From e6c2ebf612da8ca337b5a1d627cb17d6bd4b975d Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 15 Feb 2024 11:23:09 +0100 Subject: [PATCH 110/279] Update to V3 --- MQTT_for_IO-Link.yaml | 140 +++++++++++++++++++++++++++--------------- 1 file changed, 89 insertions(+), 51 deletions(-) diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index 4b5d26c..eb7035b 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -1,12 +1,13 @@ -asyncapi: 2.6.0 +asyncapi: 3.0.0 info: title: MQTT for IO-Link Master version: 0.0.3 description: > - This is the _AsyncAPI_ specification of MQTT topics by the IO-Link consortium. + This is the _AsyncAPI_ specification of MQTT topics by the IO-Link + consortium. termsOfService: "https://www.io-link.com" contact: - name: "IO-Link Community" + name: IO-Link Community email: info@io-link.com url: "http://www.io-link.com" license: @@ -15,57 +16,55 @@ info: defaultContentType: application/json servers: iol-master: - url: "{iolm-ip}:{port}" + host: "{iolm-ip}:{port}" protocol: mqtt protocolVersion: 3.1.1 description: io-link master as MQTT client variables: iolm-ip: - default: "192.168.0.1" + default: 192.168.0.1 port: enum: - "1883" - "8883" default: "1883" + channels: "{originatorId}/gateway/identification": + address: "{originatorId}/gateway/identification" description: >- Publishes gateway nameplate information, send at startup or onChange parameters: - originatorId: - schema: - $ref: "./schemas.yaml#/schemas/originatorId" - subscribe: - message: + $ref: "./schemas.yaml#/schemas/originatorId" + messages: + subscribe.message: name: gatewayIdentification payload: $ref: "./schemas.yaml#/schemas/gatewayIdentificationGet" "{originatorId}/gateway/events": + address: "{originatorId}/gateway/events" description: publishes gateway events parameters: - originatorId: - schema: - $ref: "./schemas.yaml#/schemas/originatorId" - subscribe: - message: + $ref: "./schemas.yaml#/schemas/originatorId" + messages: + subscribe.message: name: gatewayEvents payload: $ref: "./schemas.yaml#/schemas/gatewayEventsGet" "{originatorId}/master/{masterNumber}/identification": + address: "{originatorId}/master/{masterNumber}/identification" description: publishes master identification data, send at startup or onChange parameters: originatorId: - schema: - $ref: "./schemas.yaml#/schemas/originatorId" + $ref: "./schemas.yaml#/schemas/originatorId" masterNumber: - schema: - $ref: "./schemas.yaml#/schemas/eventMasterNumber" - subscribe: - message: + $ref: "./schemas.yaml#/schemas/masterNumberMqtt" + messages: + subscribe.message: name: masterIdentification payload: $ref: "./schemas.yaml#/schemas/masterIdentificationGet" @@ -76,47 +75,35 @@ channels: startup (new connection) parameters: originatorId: - schema: - $ref: "./schemas.yaml#/schemas/originatorId" + $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: - schema: - $ref: "./schemas.yaml#/schemas/deviceAlias" - subscribe: - message: + $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" + messages: + subscribe.message: name: deviceIdentification payload: $ref: "./schemas.yaml#/schemas/deviceIdentificationGet" - bindings: - mqtt: - qos: 1 - retain: true "{originatorId}/{deviceAlias}/event": description: "publishes the device events, send at startup/onChange" parameters: originatorId: - schema: - $ref: "./schemas.yaml#/schemas/originatorId" + $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: - schema: - $ref: "./schemas.yaml#/schemas/deviceAlias" - subscribe: - message: + $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" + messages: + subscribe.message: payload: $ref: "./schemas.yaml#/schemas/deviceEventsGet" "{originatorId}/{deviceAlias}/processData": parameters: originatorId: - schema: - $ref: "./schemas.yaml#/schemas/originatorId" + $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: - description: "Id of the device (e.g. (i.e. an IO-Link device, an IO-Port number)" - schema: - type: string - example: port1 - subscribe: - message: + $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" + messages: + subscribe.message: name: processdata payload: $ref: "./schemas.yaml#/schemas/processDataValue" @@ -125,12 +112,63 @@ channels: description: "publishes the port status, send at startup/onChange" parameters: originatorId: - schema: - $ref: "./schemas.yaml#/schemas/originatorId" + $ref: "./schemas.yaml#/schemas/originatorId" portNumber: - schema: - $ref: "./schemas.yaml#/schemas/eventPortNumber" - subscribe: - message: + $ref: "./schemas.yaml#/schemas/portNumberMqtt" + messages: + subscribe.message: payload: $ref: "./schemas.yaml#/schemas/mastersPortsStatusGet" +operations: + "{originatorId}/gateway/identification.subscribe": + action: send + channel: + $ref: "#/channels/{originatorId}~1gateway~1identification" + messages: + - $ref: >- + #/channels/{originatorId}~1gateway~1identification/messages/subscribe.message + "{originatorId}/gateway/events.subscribe": + action: send + channel: + $ref: "#/channels/{originatorId}~1gateway~1events" + messages: + - $ref: "#/channels/{originatorId}~1gateway~1events/messages/subscribe.message" + "{originatorId}/master/{masterNumber}/identification.subscribe": + action: send + channel: + $ref: "#/channels/{originatorId}~1master~1{masterNumber}~1identification" + messages: + - $ref: >- + #/channels/{originatorId}~1master~1{masterNumber}~1identification/messages/subscribe.message + "{originatorId}/{deviceAlias}/identification.subscribe": + action: send + channel: + $ref: "#/channels/{originatorId}~1{deviceAlias}~1identification" + bindings: + mqtt: + qos: 1 + retain: true + messages: + - $ref: >- + #/channels/{originatorId}~1{deviceAlias}~1identification/messages/subscribe.message + "{originatorId}/{deviceAlias}/event.subscribe": + action: send + channel: + $ref: "#/channels/{originatorId}~1{deviceAlias}~1event" + messages: + - $ref: >- + #/channels/{originatorId}~1{deviceAlias}~1event/messages/subscribe.message + "{originatorId}/{deviceAlias}/processData.subscribe": + action: send + channel: + $ref: "#/channels/{originatorId}~1{deviceAlias}~1processData" + messages: + - $ref: >- + #/channels/{originatorId}~1{deviceAlias}~1processData/messages/subscribe.message + "{originatorId}/{portNumber}/status.subscribe": + action: send + channel: + $ref: "#/channels/{originatorId}~1{portNumber}~1status" + messages: + - $ref: >- + #/channels/{originatorId}~1{portNumber}~1status/messages/subscribe.message From 89733899a0248f4a3b72d972dd367382946d5d84 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 16 Feb 2024 14:53:57 +0100 Subject: [PATCH 111/279] Remove unsed schemas --- JSON_for_IO-Link.yaml | 19 ------------------- schemas.yaml | 6 +++++- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 060605e..c84041a 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5181,14 +5181,6 @@ components: type: integer minimum: 1 required: true - trackNumber: - name: trackNumber - in: path - description: trackNumber identification number starting with 1 - schema: - type: integer - minimum: 1 - required: true portNumber: name: portNumber in: path @@ -5531,17 +5523,6 @@ components: value: code: 106 message: MQTT feature not supported - HTTP_503: - description: Service unavailable - content: - application/json: - schema: - $ref: "#/components/schemas/errorObject" - examples: - "107": - value: - code: 107 - message: "Service temporarily unavailable" examples: # reusable examples exampleMasterConfiguration: diff --git a/schemas.yaml b/schemas.yaml index 97d218f..75e99f5 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -11,11 +11,15 @@ schemas: portNumberMqtt: description: Port number. masterNumberMqtt: - description: Index of the master. + description: Index of the master. originatorId: description: Shall be the unique identifier of the originator and shall correspond to the client id inside the MQTT message. It can be the ProductURI, DNS name, IP address or MAC address of the device hosting the MQTT publisher. + parameterIdentMqtt: + description: Identifier of the parameter. It can be the parameterName or the index of the parameter. + subParameterIdentMqtt: + description: Identifier of the sub-parameter. It can be the sub-parameterName or the sub-index of the parameter. parameterName: type: string description: | From d528c73753d150a210d80368a435edaadc090230 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 16 Feb 2024 14:54:37 +0100 Subject: [PATCH 112/279] General refinement and add request-response --- MQTT_for_IO-Link.yaml | 181 +++++++++++++++++++++++++++++++----------- 1 file changed, 133 insertions(+), 48 deletions(-) diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index eb7035b..9142433 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -1,10 +1,8 @@ asyncapi: 3.0.0 info: - title: MQTT for IO-Link Master - version: 0.0.3 - description: > - This is the _AsyncAPI_ specification of MQTT topics by the IO-Link - consortium. + title: MQTT for IO-Link Gateways + version: 0.1.0 + description: This is the recommended specification for IO-Link gateway MQTT communication by the IO-Link consortium. termsOfService: "https://www.io-link.com" contact: name: IO-Link Community @@ -19,7 +17,7 @@ servers: host: "{iolm-ip}:{port}" protocol: mqtt protocolVersion: 3.1.1 - description: io-link master as MQTT client + description: IO-Link gateway as MQTT client variables: iolm-ip: default: 192.168.0.1 @@ -32,115 +30,188 @@ servers: channels: "{originatorId}/gateway/identification": address: "{originatorId}/gateway/identification" - description: >- - Publishes gateway nameplate information, send at startup or - onChange + description: Publishes gateway nameplate information, send at connection startup/on change parameters: $ref: "./schemas.yaml#/schemas/originatorId" messages: - subscribe.message: - name: gatewayIdentification + publish.message: + name: gatewayIdentificationMessage payload: $ref: "./schemas.yaml#/schemas/gatewayIdentificationGet" "{originatorId}/gateway/events": address: "{originatorId}/gateway/events" - description: publishes gateway events + description: Publishes list of occured gateway events, send on change parameters: $ref: "./schemas.yaml#/schemas/originatorId" messages: - subscribe.message: - name: gatewayEvents + publish.message: + name: gatewayEventsMessage payload: $ref: "./schemas.yaml#/schemas/gatewayEventsGet" "{originatorId}/master/{masterNumber}/identification": address: "{originatorId}/master/{masterNumber}/identification" - description: publishes master identification data, send at startup or - onChange + description: Publishes master identification data, send at connection startup/on change parameters: originatorId: $ref: "./schemas.yaml#/schemas/originatorId" masterNumber: $ref: "./schemas.yaml#/schemas/masterNumberMqtt" messages: - subscribe.message: - name: masterIdentification + publish.message: + name: masterIdentificationMessage payload: $ref: "./schemas.yaml#/schemas/masterIdentificationGet" + "{originatorId}/{portNumber}/status": + address: "{originatorId}/{portNumber}/status" + description: Publishes the port status, send at connection startup/on change + parameters: + originatorId: + $ref: "./schemas.yaml#/schemas/originatorId" + portNumber: + $ref: "./schemas.yaml#/schemas/portNumberMqtt" + messages: + publish.message: + name: portStatusMessage + payload: + $ref: "./schemas.yaml#/schemas/mastersPortsStatusGet" + "{originatorId}/{deviceAlias}/identification": - description: >- - publishes device identification, send at connection - startup (new connection) + address: "{originatorId}/{deviceAlias}/identification" + description: Publishes device identification, send at connection startup/on change parameters: originatorId: $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" messages: - subscribe.message: - name: deviceIdentification + publish.message: + name: deviceIdentificationMessage payload: $ref: "./schemas.yaml#/schemas/deviceIdentificationGet" "{originatorId}/{deviceAlias}/event": - description: "publishes the device events, send at startup/onChange" + address: "{originatorId}/{deviceAlias}/event" + description: Publishes device events, send at connection startup/on change parameters: originatorId: $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" messages: - subscribe.message: + publish.message: + name: deviceEventsMessage payload: $ref: "./schemas.yaml#/schemas/deviceEventsGet" "{originatorId}/{deviceAlias}/processData": + address: "{originatorId}/{deviceAlias}/processData" + description: Publishes device process data, cyclically or on change parameters: originatorId: $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" messages: - subscribe.message: - name: processdata + publish.message: + name: deviceProcessDataMessage payload: $ref: "./schemas.yaml#/schemas/processDataValue" - "{originatorId}/{portNumber}/status": - description: "publishes the port status, send at startup/onChange" + "{originatorId}/{deviceAlias}/parameter/{parameterIdent}": + address: "{originatorId}/{deviceAlias}/parameter/{parameterIdent}" + description: Publishes device parameter data, depending on the configuration via REST (POST /mqtt/topics), cyclically or on change parameters: originatorId: $ref: "./schemas.yaml#/schemas/originatorId" - portNumber: - $ref: "./schemas.yaml#/schemas/portNumberMqtt" + deviceAlias: + $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" + parameterIdent: + $ref: "./schemas.yaml#/schemas/parameterIdentMqtt" messages: - subscribe.message: + publish.message: + name: deviceParameterMessage payload: - $ref: "./schemas.yaml#/schemas/mastersPortsStatusGet" + $ref: "./schemas.yaml#/schemas/deviceParameterValueGetPost" + + "{originatorId}/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}": + address: "{originatorId}/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}" + description: Publishes device sub-parameter data, depending on the configuration via REST (POST /mqtt/topics), cyclically or on change + parameters: + originatorId: + $ref: "./schemas.yaml#/schemas/originatorId" + deviceAlias: + $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" + parameterIdent: + $ref: "./schemas.yaml#/schemas/parameterIdentMqtt" + subParameterIdent: + $ref: "./schemas.yaml#/schemas/subParameterIdentMqtt" + messages: + publish.message: + name: deviceSubParameterMessage + payload: + $ref: "./schemas.yaml#/schemas/deviceParameterValueGetPost" + + "{originatorId}/{deviceAlias}/parameter/request": + address: "{originatorId}/{deviceAlias}/parameter/request" + description: Listening to device parameter requests + parameters: + originatorId: + $ref: "./schemas.yaml#/schemas/originatorId" + deviceAlias: + $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" + messages: + publish.message: + name: deviceRequestMessage + payload: + $ref: "./schemas.yaml#/schemas/deviceBlockParameterizationPost" + + "{originatorId}/{deviceAlias}/parameter/response": + address: "{originatorId}/{deviceAlias}/parameter/response" + description: Publishes device parameter response depending on the request {originatorId}/{deviceAlias}/parameter/request + parameters: + originatorId: + $ref: "./schemas.yaml#/schemas/originatorId" + deviceAlias: + $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" + messages: + publish.message: + name: deviceResponseMessage + payload: + $ref: "./schemas.yaml#/schemas/deviceBlockParameterizationPostParametersAnswer" + operations: - "{originatorId}/gateway/identification.subscribe": + "{originatorId}/gateway/identification.publish": action: send channel: $ref: "#/channels/{originatorId}~1gateway~1identification" messages: - $ref: >- - #/channels/{originatorId}~1gateway~1identification/messages/subscribe.message - "{originatorId}/gateway/events.subscribe": + #/channels/{originatorId}~1gateway~1identification/messages/publish.message + "{originatorId}/gateway/events.publish": action: send channel: $ref: "#/channels/{originatorId}~1gateway~1events" messages: - - $ref: "#/channels/{originatorId}~1gateway~1events/messages/subscribe.message" - "{originatorId}/master/{masterNumber}/identification.subscribe": + - $ref: "#/channels/{originatorId}~1gateway~1events/messages/publish.message" + "{originatorId}/master/{masterNumber}/identification.publish": action: send channel: $ref: "#/channels/{originatorId}~1master~1{masterNumber}~1identification" messages: - $ref: >- - #/channels/{originatorId}~1master~1{masterNumber}~1identification/messages/subscribe.message - "{originatorId}/{deviceAlias}/identification.subscribe": + #/channels/{originatorId}~1master~1{masterNumber}~1identification/messages/publish.message + + "{originatorId}/{portNumber}/status.publish": + action: send + channel: + $ref: "#/channels/{originatorId}~1{portNumber}~1status" + messages: + - $ref: >- + #/channels/{originatorId}~1{portNumber}~1status/messages/publish.message + "{originatorId}/{deviceAlias}/identification.publish": action: send channel: $ref: "#/channels/{originatorId}~1{deviceAlias}~1identification" @@ -150,25 +221,39 @@ operations: retain: true messages: - $ref: >- - #/channels/{originatorId}~1{deviceAlias}~1identification/messages/subscribe.message - "{originatorId}/{deviceAlias}/event.subscribe": + #/channels/{originatorId}~1{deviceAlias}~1identification/messages/publish.message + "{originatorId}/{deviceAlias}/event.publish": action: send channel: $ref: "#/channels/{originatorId}~1{deviceAlias}~1event" messages: - $ref: >- - #/channels/{originatorId}~1{deviceAlias}~1event/messages/subscribe.message - "{originatorId}/{deviceAlias}/processData.subscribe": + #/channels/{originatorId}~1{deviceAlias}~1event/messages/publish.message + "{originatorId}/{deviceAlias}/processData.publish": action: send channel: $ref: "#/channels/{originatorId}~1{deviceAlias}~1processData" messages: - $ref: >- - #/channels/{originatorId}~1{deviceAlias}~1processData/messages/subscribe.message - "{originatorId}/{portNumber}/status.subscribe": + #/channels/{originatorId}~1{deviceAlias}~1processData/messages/publish.message + "{originatorId}/{deviceAlias}/parameter/parameterIdent.publish": action: send channel: - $ref: "#/channels/{originatorId}~1{portNumber}~1status" + $ref: "#/channels/{originatorId}~1{deviceAlias}~1parameter~1{parameterIdent}" + messages: + - $ref: >- + #/channels/{originatorId}~1{deviceAlias}~1parameter~1{parameterIdent}/messages/publish.message + ? "{originatorId}/{deviceAlias}/parameter/parameterIdent/subParameterIdent.publish" + : action: send + channel: + $ref: "#/channels/{originatorId}~1{deviceAlias}~1parameter~1{parameterIdent}~1{subParameterIdent}" messages: - $ref: >- - #/channels/{originatorId}~1{portNumber}~1status/messages/subscribe.message + #/channels/{originatorId}~1{deviceAlias}~1parameter~1{parameterIdent}/messages/publish.message + "{originatorId}/{deviceAlias}/parameter/request.subscribe": + action: receive + channel: + $ref: "#/channels/{originatorId}~1{deviceAlias}~1parameter~1request" + reply: + channel: + $ref: "#/channels/{originatorId}~1{deviceAlias}~1parameter~1response" From f436e80bc3adf353c523a07b90d1ca98d055b4bb Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 26 Feb 2024 17:10:54 +0100 Subject: [PATCH 113/279] Fix typo and trailing whitespaces --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4faf948..5ee673f 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2713,7 +2713,7 @@ components: subParameterName: type: string description: | - Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specifiation. \ + Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used. \ From 2fd587e3100223389852f0463ed49c6580b722dd Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 18 Mar 2024 12:08:09 +0100 Subject: [PATCH 114/279] Adjust topics to be harmonized with REST endpoints --- MQTT_for_IO-Link.yaml | 82 ++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index 9142433..a808e4d 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -50,8 +50,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/gatewayEventsGet" - "{originatorId}/master/{masterNumber}/identification": - address: "{originatorId}/master/{masterNumber}/identification" + "{originatorId}/masters/{masterNumber}/identification": + address: "{originatorId}/masters/{masterNumber}/identification" description: Publishes master identification data, send at connection startup/on change parameters: originatorId: @@ -64,12 +64,14 @@ channels: payload: $ref: "./schemas.yaml#/schemas/masterIdentificationGet" - "{originatorId}/{portNumber}/status": - address: "{originatorId}/{portNumber}/status" + "{originatorId}/masters/{masterNumber}/ports/{portNumber}/status": + address: "{originatorId}/masters/{masterNumber}/ports/{portNumber}/status" description: Publishes the port status, send at connection startup/on change parameters: originatorId: $ref: "./schemas.yaml#/schemas/originatorId" + masterNumber: + $ref: "./schemas.yaml#/schemas/masterNumberMqtt" portNumber: $ref: "./schemas.yaml#/schemas/portNumberMqtt" messages: @@ -78,8 +80,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/mastersPortsStatusGet" - "{originatorId}/{deviceAlias}/identification": - address: "{originatorId}/{deviceAlias}/identification" + "{originatorId}/devices/{deviceAlias}/identification": + address: "{originatorId}/devices/{deviceAlias}/identification" description: Publishes device identification, send at connection startup/on change parameters: originatorId: @@ -92,8 +94,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/deviceIdentificationGet" - "{originatorId}/{deviceAlias}/event": - address: "{originatorId}/{deviceAlias}/event" + "{originatorId}/devices/{deviceAlias}/event": + address: "{originatorId}/devices/{deviceAlias}/event" description: Publishes device events, send at connection startup/on change parameters: originatorId: @@ -106,8 +108,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/deviceEventsGet" - "{originatorId}/{deviceAlias}/processData": - address: "{originatorId}/{deviceAlias}/processData" + "{originatorId}/devices/{deviceAlias}/processData": + address: "{originatorId}/devices/{deviceAlias}/processData" description: Publishes device process data, cyclically or on change parameters: originatorId: @@ -120,8 +122,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/processDataValue" - "{originatorId}/{deviceAlias}/parameter/{parameterIdent}": - address: "{originatorId}/{deviceAlias}/parameter/{parameterIdent}" + "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}": + address: "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}" description: Publishes device parameter data, depending on the configuration via REST (POST /mqtt/topics), cyclically or on change parameters: originatorId: @@ -136,8 +138,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/deviceParameterValueGetPost" - "{originatorId}/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}": - address: "{originatorId}/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}" + ? "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}" + : address: "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}" description: Publishes device sub-parameter data, depending on the configuration via REST (POST /mqtt/topics), cyclically or on change parameters: originatorId: @@ -154,8 +156,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/deviceParameterValueGetPost" - "{originatorId}/{deviceAlias}/parameter/request": - address: "{originatorId}/{deviceAlias}/parameter/request" + "{originatorId}/devices/{deviceAlias}/parameter/request": + address: "{originatorId}/devices/{deviceAlias}/parameter/request" description: Listening to device parameter requests parameters: originatorId: @@ -168,9 +170,9 @@ channels: payload: $ref: "./schemas.yaml#/schemas/deviceBlockParameterizationPost" - "{originatorId}/{deviceAlias}/parameter/response": - address: "{originatorId}/{deviceAlias}/parameter/response" - description: Publishes device parameter response depending on the request {originatorId}/{deviceAlias}/parameter/request + "{originatorId}/devices/{deviceAlias}/parameter/response": + address: "{originatorId}/devices/{deviceAlias}/parameter/response" + description: Publishes device parameter response depending on the request {originatorId}/devices/{deviceAlias}/parameter/request parameters: originatorId: $ref: "./schemas.yaml#/schemas/originatorId" @@ -196,64 +198,64 @@ operations: $ref: "#/channels/{originatorId}~1gateway~1events" messages: - $ref: "#/channels/{originatorId}~1gateway~1events/messages/publish.message" - "{originatorId}/master/{masterNumber}/identification.publish": + "{originatorId}/masters/{masterNumber}/identification.publish": action: send channel: - $ref: "#/channels/{originatorId}~1master~1{masterNumber}~1identification" + $ref: "#/channels/{originatorId}~1masters~1{masterNumber}~1identification" messages: - $ref: >- - #/channels/{originatorId}~1master~1{masterNumber}~1identification/messages/publish.message + #/channels/{originatorId}~1masters~1{masterNumber}~1identification/messages/publish.message - "{originatorId}/{portNumber}/status.publish": + "{originatorId}/masters/{masterNumber}/ports/{portNumber}/status.publish": action: send channel: - $ref: "#/channels/{originatorId}~1{portNumber}~1status" + $ref: "#/channels/{originatorId}~1masters~1{masterNumber}~1ports~1{portNumber}~1status" messages: - $ref: >- - #/channels/{originatorId}~1{portNumber}~1status/messages/publish.message - "{originatorId}/{deviceAlias}/identification.publish": + #/channels/{originatorId}~1masters~1{masterNumber}~1ports~1{portNumber}~1status/messages/publish.message + "{originatorId}/devices/{deviceAlias}/identification.publish": action: send channel: - $ref: "#/channels/{originatorId}~1{deviceAlias}~1identification" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1identification" bindings: mqtt: qos: 1 retain: true messages: - $ref: >- - #/channels/{originatorId}~1{deviceAlias}~1identification/messages/publish.message + #/channels/{originatorId}~1devices~1{deviceAlias}~1identification/messages/publish.message "{originatorId}/{deviceAlias}/event.publish": action: send channel: - $ref: "#/channels/{originatorId}~1{deviceAlias}~1event" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1event" messages: - $ref: >- - #/channels/{originatorId}~1{deviceAlias}~1event/messages/publish.message + #/channels/{originatorId}~1devices~1{deviceAlias}~1event/messages/publish.message "{originatorId}/{deviceAlias}/processData.publish": action: send channel: - $ref: "#/channels/{originatorId}~1{deviceAlias}~1processData" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1processData" messages: - $ref: >- - #/channels/{originatorId}~1{deviceAlias}~1processData/messages/publish.message + #/channels/{originatorId}~1devices~1{deviceAlias}~1processData/messages/publish.message "{originatorId}/{deviceAlias}/parameter/parameterIdent.publish": action: send channel: - $ref: "#/channels/{originatorId}~1{deviceAlias}~1parameter~1{parameterIdent}" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}" messages: - $ref: >- - #/channels/{originatorId}~1{deviceAlias}~1parameter~1{parameterIdent}/messages/publish.message - ? "{originatorId}/{deviceAlias}/parameter/parameterIdent/subParameterIdent.publish" + #/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}/messages/publish.message + ? "{originatorId}/devices/{deviceAlias}/parameter/parameterIdent/subParameterIdent.publish" : action: send channel: - $ref: "#/channels/{originatorId}~1{deviceAlias}~1parameter~1{parameterIdent}~1{subParameterIdent}" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}~1{subParameterIdent}" messages: - $ref: >- - #/channels/{originatorId}~1{deviceAlias}~1parameter~1{parameterIdent}/messages/publish.message - "{originatorId}/{deviceAlias}/parameter/request.subscribe": + #/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}/messages/publish.message + "{originatorId}/devices/{deviceAlias}/parameter/request.subscribe": action: receive channel: - $ref: "#/channels/{originatorId}~1{deviceAlias}~1parameter~1request" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1request" reply: channel: - $ref: "#/channels/{originatorId}~1{deviceAlias}~1parameter~1response" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1response" From 1c9fb4fcc950f6ee2a74739837e5a1eafd3e2a08 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 18 Mar 2024 15:34:04 +0100 Subject: [PATCH 115/279] Add merge command to readme --- README.md | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 0895696..3c58574 100644 --- a/README.md +++ b/README.md @@ -7,20 +7,31 @@ JSON serialization for IO-Link data. In order to raise a bugfix, improvement or change/feature request file an issue. This issue will then be discussed by the community and the change can be done via pull request. Minor changes like typing errors can be fixed directly by a pull request and does not require opening an issue. ## Branches: - - master: released version (1.0) - - version-1-x: Draft for the next version +- master: released version (1.0) +- version-1-x: Draft for the next version -## Open in Swagger Editor: - https://editor.swagger.io/?url=https://raw.githubusercontent.com/iolinkcommunity/JSON_for_IO-Link/version-1-x/JSON_for_IO-Link.yaml - - https://studio.asyncapi.com/?url=https://raw.githubusercontent.com/iolinkcommunity/JSON_for_IO-Link/version-1-x/MQTT_for_IO-Link.yaml +## Open in Swagger Editor: +https://editor.swagger.io/?url=https://raw.githubusercontent.com/iolinkcommunity/JSON_for_IO-Link/version-1-x/JSON_for_IO-Link.yaml + +https://studio.asyncapi.com/?url=https://raw.githubusercontent.com/iolinkcommunity/JSON_for_IO-Link/version-1-x/MQTT_for_IO-Link.yaml ## Linting The Linting tool ["Spectral"](https://stoplight.io/open-source/spectral) is used for automatic validation of the specifications. You can run it locally with the command: -```docker run --rm -v ${PWD}:/usr/src/spectral stoplight/spectral lint -r spectral.yaml JSON_for_IO-Link.yaml ``` +`docker run --rm -v ${PWD}:/usr/src/spectral stoplight/spectral lint -r spectral.yaml JSON_for_IO-Link.yaml ` + +## Merge files + +Installation of merging tool: + +`npm install -g swagger-merger ` + +Run swagger-merger: + +`swagger-merger -i MQTT_for_IO-Link.yaml schemas.yaml examples.yaml -o MQTT_for_IO-Link_merged.yaml` +`swagger-merger -i JSON_for_IO-Link.yaml schemas.yaml examples.yaml -o JSON_for_IO-Link_merged.yaml` From b64ab7c254a777bf06da4912da007dc61586e2e7 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 18 Mar 2024 15:47:17 +0100 Subject: [PATCH 116/279] Introduce transactionId to map request to response --- MQTT_for_IO-Link.yaml | 54 +++++++++++++++++++++++-------------------- schemas.yaml | 2 ++ 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index a808e4d..65b3920 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -94,8 +94,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/deviceIdentificationGet" - "{originatorId}/devices/{deviceAlias}/event": - address: "{originatorId}/devices/{deviceAlias}/event" + "{originatorId}/devices/{deviceAlias}/events": + address: "{originatorId}/devices/{deviceAlias}/events" description: Publishes device events, send at connection startup/on change parameters: originatorId: @@ -108,8 +108,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/deviceEventsGet" - "{originatorId}/devices/{deviceAlias}/processData": - address: "{originatorId}/devices/{deviceAlias}/processData" + "{originatorId}/devices/{deviceAlias}/processdata/value": + address: "{originatorId}/devices/{deviceAlias}/processdata/value" description: Publishes device process data, cyclically or on change parameters: originatorId: @@ -122,8 +122,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/processDataValue" - "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}": - address: "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}" + "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/value": + address: "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/value" description: Publishes device parameter data, depending on the configuration via REST (POST /mqtt/topics), cyclically or on change parameters: originatorId: @@ -138,8 +138,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/deviceParameterValueGetPost" - ? "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}" - : address: "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}" + ? "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}/value" + : address: "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}/value" description: Publishes device sub-parameter data, depending on the configuration via REST (POST /mqtt/topics), cyclically or on change parameters: originatorId: @@ -156,28 +156,32 @@ channels: payload: $ref: "./schemas.yaml#/schemas/deviceParameterValueGetPost" - "{originatorId}/devices/{deviceAlias}/parameter/request": - address: "{originatorId}/devices/{deviceAlias}/parameter/request" + "{originatorId}/devices/{deviceAlias}/parameter/request/{transactionId}": + address: "{originatorId}/devices/{deviceAlias}/parameter/request/{transactionId}" description: Listening to device parameter requests parameters: originatorId: $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" + transactionId: + $ref: "./schemas.yaml#/schemas/transactionId" messages: publish.message: name: deviceRequestMessage payload: $ref: "./schemas.yaml#/schemas/deviceBlockParameterizationPost" - "{originatorId}/devices/{deviceAlias}/parameter/response": - address: "{originatorId}/devices/{deviceAlias}/parameter/response" - description: Publishes device parameter response depending on the request {originatorId}/devices/{deviceAlias}/parameter/request + "{originatorId}/devices/{deviceAlias}/parameter/response/{transactionId}": + address: "{originatorId}/devices/{deviceAlias}/parameter/response/{transactionId}" + description: Publishes device parameter response depending on the request {originatorId}/devices/{deviceAlias}/parameter/request/{transactionId} parameters: originatorId: $ref: "./schemas.yaml#/schemas/originatorId" deviceAlias: $ref: "./schemas.yaml#/schemas/deviceAliasMqtt" + transactionId: + $ref: "./schemas.yaml#/schemas/transactionId" messages: publish.message: name: deviceResponseMessage @@ -227,35 +231,35 @@ operations: "{originatorId}/{deviceAlias}/event.publish": action: send channel: - $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1event" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1events" messages: - $ref: >- - #/channels/{originatorId}~1devices~1{deviceAlias}~1event/messages/publish.message + #/channels/{originatorId}~1devices~1{deviceAlias}~1events/messages/publish.message "{originatorId}/{deviceAlias}/processData.publish": action: send channel: - $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1processData" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1processdata~1value" messages: - $ref: >- - #/channels/{originatorId}~1devices~1{deviceAlias}~1processData/messages/publish.message + #/channels/{originatorId}~1devices~1{deviceAlias}~1processdata~1value/messages/publish.message "{originatorId}/{deviceAlias}/parameter/parameterIdent.publish": action: send channel: - $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}~1value" messages: - $ref: >- - #/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}/messages/publish.message + #/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}~1value/messages/publish.message ? "{originatorId}/devices/{deviceAlias}/parameter/parameterIdent/subParameterIdent.publish" : action: send channel: - $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}~1{subParameterIdent}" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}~1{subParameterIdent}~1value" messages: - $ref: >- - #/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}/messages/publish.message - "{originatorId}/devices/{deviceAlias}/parameter/request.subscribe": - action: receive + #/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}~1value/messages/publish.message + ? "{originatorId}/devices/{deviceAlias}/parameter/request/{transactionId}.subscribe" + : action: receive channel: - $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1request" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1request~1{transactionId}" reply: channel: - $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1response" + $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1response~1{transactionId}" diff --git a/schemas.yaml b/schemas.yaml index 75e99f5..71e2e44 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1,4 +1,6 @@ schemas: + transactionId: + description: Unique identifier for the transaction in UUIDv4 format. deviceAlias: type: string description: Unique deviceAlias. From dbf9945c3017d9092942b7dfb6cf00a45207ed21 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 8 Apr 2024 10:38:29 +0200 Subject: [PATCH 117/279] Change description of transaction id --- schemas.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schemas.yaml b/schemas.yaml index 71e2e44..c392733 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1,6 +1,6 @@ schemas: transactionId: - description: Unique identifier for the transaction in UUIDv4 format. + description: Unique identifier for the transaction in for example as UUIDv4. deviceAlias: type: string description: Unique deviceAlias. From cbdec56a331ed7538d2041491fa131c5befb7db3 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 29 Apr 2024 16:59:12 +0200 Subject: [PATCH 118/279] Add possibility to activate/deactivate mqtt topics --- JSON_for_IO-Link.yaml | 128 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 127 insertions(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index de6252c..83a0df9 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -664,6 +664,7 @@ paths: $ref: "#/components/schemas/mqttConfigurationTopicGet" example: - topicId: 1 + activated: true topicName: Sensor34/processData qos: 1_AT_LEAST_ONCE deviceAlias: DT35 @@ -674,11 +675,13 @@ paths: value: 10 unit: ms - topicId: 2 + activated: true topicName: Sensor34/event qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 event: {} - topicId: 3 + activated: false topicName: PD qos: 0_ONLY_ONCE deviceAlias: BNI_IOL @@ -687,6 +690,7 @@ paths: format: iodd onChange: true - topicId: 4 + activated: false topicName: DT35_CycleTime qos: 0_ONLY_ONCE deviceAlias: DT35 @@ -696,6 +700,7 @@ paths: format: iodd onChange: true - topicId: 5 + activated: true topicName: deviceTemperature qos: 0_ONLY_ONCE deviceAlias: master1port2 @@ -716,7 +721,7 @@ paths: "501": $ref: "#/components/responses/HTTP_501" post: - operationId: PostMqttTopicsTopicId + operationId: PostMqttTopics tags: - mqtt summary: Create a new MQTT topic. @@ -730,6 +735,7 @@ paths: examples: Process Data: value: + activated: true qos: 1_AT_LEAST_ONCE deviceAlias: DT35 processData: @@ -740,11 +746,13 @@ paths: unit: ms Event: value: + activated: true qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 event: {} Parameter (Index): value: + activated: false qos: 0_ONLY_ONCE deviceAlias: master1port1 parameter: @@ -755,6 +763,7 @@ paths: unit: ms Parameter (ParameterName): value: + activated: true topicName: deviceTemperature qos: 0_ONLY_ONCE deviceAlias: AHM36A @@ -803,6 +812,7 @@ paths: Process Data: value: topicId: 1 + activated: true topicName: PD input qos: 1_AT_LEAST_ONCE deviceAlias: DT35 @@ -815,6 +825,7 @@ paths: Event: value: topicId: 2 + activated: true topicName: Event qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 @@ -822,6 +833,7 @@ paths: Parameter (Index): value: topicId: 3 + activated: true topicName: devvice/indexXY qos: 0_ONLY_ONCE deviceAlias: master1port1 @@ -834,6 +846,7 @@ paths: Parameter (ParameterName): value: topicId: 5 + activated: true topicName: deviceTemperature qos: 0_ONLY_ONCE deviceAlias: AHM36A @@ -853,6 +866,90 @@ paths: $ref: "#/components/responses/HTTP_500" "501": $ref: "#/components/responses/HTTP_501" + post: + operationId: PostMqttTopicsTopicId + parameters: + - $ref: "#/components/parameters/mqttTopicId" + tags: + - mqtt + summary: Change or deactivate one MQTT topic. + description: Change or deactivate one MQTT topic. + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/mqttConfigurationTopicsTopicPost" + examples: + Deactivate Topic: + value: + activated: false + Activate Topic: + value: + activated: true + Process Data: + value: + topicId: 1 + activated: true + topicName: PD input + qos: 1_AT_LEAST_ONCE + deviceAlias: DT35 + processData: + direction: getData + format: iodd + interval: + value: 10 + unit: ms + Event: + value: + topicId: 2 + activated: true + topicName: Event + qos: 1_AT_LEAST_ONCE + deviceAlias: TAD081 + event: {} + Parameter (Index): + value: + topicId: 3 + topicName: devvice/indexXY + qos: 0_ONLY_ONCE + deviceAlias: master1port1 + parameter: + index: 86 + format: byteArray + interval: + value: 10 + unit: ms + Parameter (ParameterName): + value: + topicId: 5 + activated: true + topicName: deviceTemperature + qos: 0_ONLY_ONCE + deviceAlias: AHM36A + parameter: + parameterName: Temperature1 + format: iodd + interval: + value: 1000 + unit: ms + responses: + "200": + description: Successful operation + content: + application/json: + schema: + type: integer + "401": + $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" + "404": + $ref: "#/components/responses/HTTP_404" + "500": + $ref: "#/components/responses/HTTP_500" + "501": + $ref: "#/components/responses/HTTP_501" delete: operationId: DeleteMqttTopicsTopicId tags: @@ -3373,6 +3470,12 @@ components: deviceAlias: type: string description: Unique deviceAlias. + activated: + type: boolean + description: >- + Indicates if the topic is activated. If the topic is not + activated, the device will not publish to this topic. + In case the property is not provided, the topic will be activated. - oneOf: - type: object properties: @@ -3415,6 +3518,29 @@ components: interval: value: 10 unit: ms + mqttConfigurationTopicsTopicPost: + anyOf: + - type: object + properties: + topicId: + type: integer + - type: object + properties: + topicName: + type: string + - $ref: "#/components/schemas/mqttConfigurationTopic" + example: + topicId: 1 + activated: true + topicName: PD input + qos: 1_AT_LEAST_ONCE + deviceAlias: DT35 + processData: + direction: getData + format: iodd + interval: + value: 10 + unit: ms mqttConnectionStatusGet: allOf: - type: object From 4e6a2b57076ef40644b99ae38495ebeffb5d9408 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 24 May 2024 16:17:35 +0200 Subject: [PATCH 119/279] Add parameter restrictions and move artifact schema into separate file --- JSON_for_IO-Link.yaml | 60 +++++++++++-------------------------------- schemas.yaml | 46 +++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 45 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index de6252c..1ca8a84 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2672,16 +2672,6 @@ paths: components: schemas: - artifact: - type: string - description: IODD Artifacts like device, vendor images - enum: - - XML - - DeviceIcon - - DeviceSymbol - - VendorLogo - - zip - default: XML parameterIdent: oneOf: - $ref: "#/components/schemas/parameterName" @@ -2982,6 +2972,7 @@ components: numberOfPorts: type: integer minimum: 1 + maximum: 255 maxPowerSupply: type: object required: @@ -2994,12 +2985,15 @@ components: unit: type: string minLength: 1 + maxLength: 32 eventTime: description: >- Timestamp (format defined in DIN ISO 8601). This field can give an absolute time or a relative time. Both formats are defined in DIN ISO 8601. type: string + minLength: 1 + maxLength: 32 eventSeverity: description: >- Indicates the severity of the message. The IO-Link EventType @@ -3032,6 +3026,7 @@ components: Device Events. Should not be used for other log entries. type: integer minimum: 1 + maximum: 255 deviceAlias: description: >- This property is mandatory for IO-Link Device Events. Should not be @@ -3079,38 +3074,6 @@ components: $ref: "#/components/schemas/eventOriginObject" message: $ref: "#/components/schemas/eventObject" - blockParameterizationPostParametersRequest: - type: array - minItems: 1 - items: - type: object - required: - - identifier - properties: - identifier: - oneOf: - - type: object - required: - - index - properties: - index: - type: integer - minimum: 0 - maximum: 65535 - subIndex: - type: integer - minimum: 0 - maximum: 255 - - type: object - required: - - parameterName - properties: - parameterName: - $ref: "#/components/schemas/parameterName" - subParameterName: - $ref: "#/components/schemas/subParameterName" - content: - $ref: "#/components/schemas/deviceParameterValueGetPost" deviceBlockParameterizationPostParametersAnswer: type: array items: @@ -3249,13 +3212,20 @@ components: macAddress: type: string pattern: "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$" + minLength: 1 + maxLength: 17 serialNumber: type: string + minLength: 1 + maxLength: 16 orderCode: type: string + minLength: 1 maxLength: 64 productName: type: string + minLength: 1 + maxLength: 64 productId: type: string hardwareRevision: @@ -4831,7 +4801,7 @@ components: - WRITE - READ parameters: - $ref: "#/components/schemas/blockParameterizationPostParametersRequest" + $ref: "./schemas.yaml#/schemas/blockParameterizationPostParametersRequest" index: type: integer description: Index of ISDU variable @@ -4862,7 +4832,7 @@ components: availableArtifacts: type: array items: - $ref: "#/components/schemas/artifact" + $ref: "./schemas.yaml#/schemas/artifact" ioddFileName: type: string ioddFile: @@ -4944,7 +4914,7 @@ components: required: false in: query schema: - $ref: "#/components/schemas/artifact" + $ref: "./schemas.yaml#/schemas/artifact" vendorId: name: vendorId in: query diff --git a/schemas.yaml b/schemas.yaml index c392733..c14948b 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -235,6 +235,7 @@ schemas: numberOfPorts: type: integer minimum: 1 + maximum: 255 maxPowerSupply: type: object required: @@ -247,12 +248,15 @@ schemas: unit: type: string minLength: 1 + maxLength: 32 eventTime: description: >- Timestamp (format defined in DIN ISO 8601). This field can give an absolute time or a relative time. Both formats are defined in DIN ISO 8601. type: string + minLength: 1 + maxLength: 32 eventSeverity: description: >- Indicates the severity of the message. The IO-Link EventType @@ -285,6 +289,7 @@ schemas: Device Events. Should not be used for other log entries. type: integer minimum: 1 + maximum: 255 deviceAlias: $ref: "#/schemas/deviceAlias" eventObject: @@ -451,34 +456,58 @@ schemas: macAddress: type: string pattern: "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$" + minLength: 1 + maxLength: 17 serialNumber: type: string + minLength: 1 + maxLength: 16 orderCode: type: string + minLength: 1 maxLength: 64 productName: type: string + minLength: 1 + maxLength: 64 productId: type: string hardwareRevision: type: string + minLength: 1 maxLength: 64 firmwareRevision: type: string + minLength: 1 + maxLength: 64 vendorName: type: string + minLength: 1 + maxLength: 64 vendorUrl: type: string + minLength: 1 + maxLength: 64 manualUrl: type: string + minLength: 1 + maxLength: 64 productInstanceUri: type: string + minLength: 1 + maxLength: 64 applicationSpecificTag: type: string + minLength: 1 + maxLength: 64 locationTag: type: string + minLength: 1 + maxLength: 64 functionTag: type: string + minLength: 1 + maxLength: 64 example: macAddress: "00:02:72:CE:A6:49" serialNumber: "C134A746" @@ -503,6 +532,8 @@ schemas: properties: ifName: type: string + minLength: 1 + maxLength: 64 ipConfiguration: $ref: "#/schemas/ipConfiguration" ipAddress: @@ -531,12 +562,21 @@ schemas: properties: clientMode: type: string + enum: + - ACTIVE + - INACTIVE serverAddress: type: string + minLength: 1 + maxLength: 64 username: type: string + minLength: 1 + maxLength: 64 password: type: string + minLength: 1 + maxLength: 64 lastWill: type: object required: @@ -547,6 +587,8 @@ schemas: properties: topic: type: string + minLength: 1 + maxLength: 64 message: type: string qos: @@ -559,11 +601,15 @@ schemas: type: boolean keepAliveTime: type: integer + minimum: 1 + maximum: 65535 clientId: type: string description: MQTT Client identifier to address and identify the iolink master as MQTT client. It needs to be unique within the MQTT network. Since this parameter is optional, default value shall be set internally to a unique value (e.g. master name + MAC). + minLength: 1 + maxLength: 64 originatorId: $ref: "#/schemas/originatorId" mqttConfigurationTopic: From 393795a7d87f6b59f97f178f30cf3d5d638e315e Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 7 Jun 2024 18:45:33 +0200 Subject: [PATCH 120/279] Remove schema definition because moved to separate file --- JSON_for_IO-Link.yaml | 2371 ++--------------------------------------- schemas.yaml | 243 +++-- 2 files changed, 242 insertions(+), 2372 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 1ca8a84..4b6c807 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -159,7 +159,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/errorObject" + $ref: "./schemas.yaml#/schemas/errorObject" examples: "150": value: @@ -170,7 +170,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/errorObject" + $ref: "./schemas.yaml#/schemas/errorObject" examples: "101": value: @@ -211,7 +211,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/errorObject" + $ref: "./schemas.yaml#/schemas/errorObject" examples: "150": value: @@ -222,7 +222,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/errorObject" + $ref: "./schemas.yaml#/schemas/errorObject" examples: "101": value: @@ -245,7 +245,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/gatewayIdentificationGet" + $ref: "./schemas.yaml#/schemas/gatewayIdentificationGet" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -265,7 +265,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/gatewayCapabilitiesGet" + $ref: "./schemas.yaml#/schemas/gatewayCapabilitiesGet" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -285,7 +285,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/gatewayConfigurationGetPost" + $ref: "./schemas.yaml#/schemas/gatewayConfigurationGetPost" examples: Manual: value: @@ -336,7 +336,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/gatewayConfigurationGetPost" + $ref: "./schemas.yaml#/schemas/gatewayConfigurationGetPost" examples: Manual: value: @@ -436,7 +436,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/gatewayEventsGet" + $ref: "./schemas.yaml#/schemas/gatewayEventsGet" examples: origin=ALL: value: @@ -575,7 +575,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mqttConfigurationGetPost" + $ref: "./schemas.yaml#/schemas/mqttConfigurationGetPost" examples: Active client: value: @@ -615,7 +615,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mqttConfigurationGetPost" + $ref: "./schemas.yaml#/schemas/mqttConfigurationGetPost" examples: Active Client: value: @@ -661,7 +661,7 @@ paths: schema: type: array items: - $ref: "#/components/schemas/mqttConfigurationTopicGet" + $ref: "./schemas.yaml#/schemas/mqttConfigurationTopicGet" example: - topicId: 1 topicName: Sensor34/processData @@ -726,7 +726,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mqttConfigurationTopicPost" + $ref: "./schemas.yaml#/schemas/mqttConfigurationTopicPost" examples: Process Data: value: @@ -798,7 +798,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mqttConfigurationTopicGet" + $ref: "./schemas.yaml#/schemas/mqttConfigurationTopicGet" examples: Process Data: value: @@ -890,7 +890,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mqttConnectionStatusGet" + $ref: "./schemas.yaml#/schemas/mqttConnectionStatusGet" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -925,7 +925,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ioddsGet" + $ref: "./schemas.yaml#/schemas/ioddsGet" "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" "401": @@ -981,15 +981,15 @@ paths: content: application/xml: schema: - $ref: "#/components/schemas/ioddFile" + $ref: "./schemas.yaml#/schemas/ioddFile" example: "IODD XML file" img/png: schema: - $ref: "#/components/schemas/ioddFile" + $ref: "./schemas.yaml#/schemas/ioddFile" example: "iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAJaSURBVDhPPVPPS3JRED0+LVGpIMUfSCW2iVLEiEytv6IWgiLtFNwJbVp9EP0DIogtol0LEaV2QovWSbgQdCFGLbIgBDW08sftzvTpgcu77905c2bOnaeaTCZCAiqVitcU1WoV39/f2NzchE6n42/TOMkBxuMxERmNRkMcHByIxcVF4XQ6xfr6urDZbMLj8YhcLvc/SggSU6Yq6XQaW1tbCAaDiEQirGIymbC6uor5+XmcnJzg6OiIY7k6ypDP5xGPx+FwOPDw8MCHLpeLyRqNht8J7XYbfr8fV1dXf0SLxcIBT09PnJ3Q6XSwsbGBtbU1fieQ0svLC25ubqAQu9froVgsMun8/BwXFxdYWlqC7AvPz89MkPl5Wa1Wbkut1Wr/HR8f4/DwEMlkEtfX17i/v8dgMEA4HMbX1xcqlcqsErVajff3dyi1Wo0NCYVCuL29BZVtNBqRyWSQSCSwvb2N4XD4Z4hcVB2RVbJZshf9fh96vZ6D9vb28Pr6inK5zK6ORiMmtVotnJ6eIpVKQSEFCjYYDNwD4efnB4VCAfv7+3h7e+NvlOjs7AyxWAwfHx9QvF4vDcFsKqiXUqmEx8dH7pdaILdpH41GuW9yG81mU5jNZiHLE7u7u8Ln8/HTbrcLqSzzCSGvgJ/SbZ6qbDYr+B5pUsi5hYWFmTKVS3tSJkxNpGuiCphIBzs7O2wQHZBZiqKg2+1CVoDLy0vIqjhBvV7H8vIy+O8gBQLZT5dOMzo3N8fKNGbkwcrKCu7u7mYmsuJUgfD5+cmOyt7ZbSIEAgG43W4+J5IQAr+h1V0CntKWLwAAAABJRU5ErkJggg==" application/zip: schema: - $ref: "#/components/schemas/ioddArchive" + $ref: "./schemas.yaml#/schemas/ioddArchive" example: "IODD in archive format provided by the IODD finder" "400": # code 305, 306 @@ -1017,11 +1017,11 @@ paths: content: application/xml: schema: - $ref: "#/components/schemas/ioddFile" + $ref: "./schemas.yaml#/schemas/ioddFile" example: "IODD XML file" application/zip: schema: - $ref: "#/components/schemas/ioddArchive" + $ref: "./schemas.yaml#/schemas/ioddArchive" example: "IODD in archive format provided by the IODD finder" responses: "204": @@ -1057,7 +1057,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/identificationMasters" + $ref: "./schemas.yaml#/schemas/identificationMasters" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -1079,7 +1079,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/masterCapabilitiesGet" + $ref: "./schemas.yaml#/schemas/masterCapabilitiesGet" examples: IO-Link: value: @@ -1113,7 +1113,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/masterIdentificationGet" + $ref: "./schemas.yaml#/schemas/masterIdentificationGet" examples: IO-Link: value: @@ -1172,7 +1172,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/masterIdentificationPost" + $ref: "./schemas.yaml#/schemas/masterIdentificationPost" examples: All optional fiels: value: @@ -1208,7 +1208,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mastersConfigurationGetPost" + $ref: "./schemas.yaml#/schemas/mastersConfigurationGetPost" examples: IO-Link: $ref: "#/components/examples/exampleMasterConfiguration" @@ -1233,7 +1233,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mastersConfigurationGetPost" + $ref: "./schemas.yaml#/schemas/mastersConfigurationGetPost" examples: IO-Link: $ref: "#/components/examples/exampleMasterConfiguration" @@ -1293,7 +1293,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mastersTrackstatusGet" + $ref: "./schemas.yaml#/schemas/mastersTrackstatusGet" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -1316,7 +1316,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mastersScanGet" + $ref: "./schemas.yaml#/schemas/mastersScanGet" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -1336,7 +1336,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mastersScanPost" + $ref: "./schemas.yaml#/schemas/mastersScanPost" responses: "204": description: Successful operation @@ -1394,7 +1394,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mastersPortsGet" + $ref: "./schemas.yaml#/schemas/mastersPortsGet" examples: IO-Link: value: @@ -1446,7 +1446,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mastersPortsQualityallGet" + $ref: "./schemas.yaml#/schemas/mastersPortsQualityallGet" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -1472,7 +1472,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/portCapabilitiesGet" + $ref: "./schemas.yaml#/schemas/portCapabilitiesGet" examples: CLASS_A: value: @@ -1538,7 +1538,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mastersPortsStatusGet" + $ref: "./schemas.yaml#/schemas/mastersPortsStatusGet" examples: IO-Link: value: @@ -1587,7 +1587,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/portConfigurationGet" + $ref: "./schemas.yaml#/schemas/portConfigurationGet" examples: IO-Link: value: @@ -1645,7 +1645,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/portConfigurationPost" + $ref: "./schemas.yaml#/schemas/portConfigurationPost" examples: Complete configuration: value: @@ -1718,7 +1718,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/dataStorageGetPost" + $ref: "./schemas.yaml#/schemas/dataStorageGetPost" examples: Data Storage with valid content: value: @@ -1731,8 +1731,13 @@ paths: TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl Empty Data Storage: value: - header: {} - content: "" + header: + vendorId: 26 + deviceId: 65253 + iolinkRevision: "1.1" + parameterChecksum: 123456 + content: >- + '' "401": $ref: "#/components/responses/HTTP_401" "403": @@ -1755,7 +1760,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/dataStorageGetPost" + $ref: "./schemas.yaml#/schemas/dataStorageGetPost" examples: Data Storage with valid content: value: @@ -1798,7 +1803,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mastersPortsPairingPost" + $ref: "./schemas.yaml#/schemas/mastersPortsPairingPost" responses: "204": description: Successful operation @@ -1829,7 +1834,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mastersPortsQualityGet" + $ref: "./schemas.yaml#/schemas/mastersPortsQualityGet" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -1855,7 +1860,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/devicesGet" + $ref: "./schemas.yaml#/schemas/devicesGet" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -1877,7 +1882,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceCapabilitiesGet" + $ref: "./schemas.yaml#/schemas/deviceCapabilitiesGet" example: minimumCycleTime: value: 2.3 @@ -1911,7 +1916,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceIdentificationGet" + $ref: "./schemas.yaml#/schemas/deviceIdentificationGet" "400": # code 307 $ref: "#/components/responses/HTTP_400" "401": @@ -1935,7 +1940,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/portIdentificationPost" + $ref: "./schemas.yaml#/schemas/portIdentificationPost" examples: All optional fields: value: @@ -1971,7 +1976,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceProcessDataValueGet" + $ref: "./schemas.yaml#/schemas/deviceProcessDataValueGet" examples: ? "Format=byteArray, CQ in IO-Link (only input), IQ in digital output" : value: @@ -2027,7 +2032,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceProcessDataValuePost" + $ref: "./schemas.yaml#/schemas/deviceProcessDataValuePost" examples: ? "format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output" : value: @@ -2081,7 +2086,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/processDataValue" + $ref: "./schemas.yaml#/schemas/processDataValue" examples: ? "Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input" : value: @@ -2133,7 +2138,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/processDataValue" + $ref: "./schemas.yaml#/schemas/processDataValue" examples: ? "Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input" : value: @@ -2177,7 +2182,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceParametersGet" + $ref: "./schemas.yaml#/schemas/deviceParametersGet" "400": # code 305, 306, 601 $ref: "#/components/responses/HTTP_400" "401": @@ -2208,7 +2213,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceParameterValueGetPost" + $ref: "./schemas.yaml#/schemas/deviceParameterValueGetPost" examples: format=byteArray: value: @@ -2255,7 +2260,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceParameterValueGetPost" + $ref: "./schemas.yaml#/schemas/deviceParameterValueGetPost" examples: "payload as byteArray": value: @@ -2309,7 +2314,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceSubParametersGet" + $ref: "./schemas.yaml#/schemas/deviceSubParametersGet" "400": # code 601 $ref: "#/components/responses/HTTP_400" "401": @@ -2342,7 +2347,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" + $ref: "./schemas.yaml#/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: value: @@ -2384,7 +2389,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceParameterSubindexValueGetPost" + $ref: "./schemas.yaml#/schemas/deviceParameterSubindexValueGetPost" examples: format=byteArray: value: { "value": [0, 156, 125, 25] } @@ -2424,7 +2429,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceBlockParameterizationPost" + $ref: "./schemas.yaml#/schemas/deviceBlockParameterizationPost" examples: "read, format=byteArray": value: @@ -2482,7 +2487,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceBlockParameterizationPostParametersAnswer" + $ref: "./schemas.yaml#/schemas/deviceBlockParameterizationPostParametersAnswer" examples: "read, format=byteArray": value: @@ -2605,7 +2610,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceEventsGet" + $ref: "./schemas.yaml#/schemas/deviceEventsGet" "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" "401": @@ -2633,7 +2638,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/deviceFirmwareUpdateStatusGet" + $ref: "./schemas.yaml#/schemas/deviceFirmwareUpdateStatusGet" "400": # code 305, 306 $ref: "#/components/responses/HTTP_400" "403": @@ -2668,2225 +2673,9 @@ paths: content: multipart/form-data: schema: - $ref: "#/components/schemas/deviceFirmwareUpdatePost" + $ref: "./schemas.yaml#/schemas/deviceFirmwareUpdatePost" components: - schemas: - parameterIdent: - oneOf: - - $ref: "#/components/schemas/parameterName" - - $ref: "#/components/schemas/index" - parameterName: - type: string - description: | - Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ - Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ - Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used.\ - Rule 3: Leading numbers shall be prefixed with "\_". \ - Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}\_{index} or {name}\_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is "element\_{subindex}". \ - minLength: 1 - maxLength: 71 - subParameterIdent: - oneOf: - - $ref: "#/components/schemas/subParameterName" - - $ref: "#/components/schemas/subindex" - subindex: - type: integer - description: Subindex of ISDU variable with the given index - minimum: 0 - maximum: 255 - subParameterName: - type: string - description: | - Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ - Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ - Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used. \ - Rule 3: Leading numbers shall be prefixed with "\_". \ - Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}\_{index} or {name}\_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is "element\_{subindex}". \ - minLength: 1 - maxLength: 71 - cycleTime: - type: object - required: - - value - - unit - properties: - value: - type: number - minimum: 0 - example: 10 - unit: - type: string - enum: - - ms - default: ms - event: - type: object - ipConfiguration: - type: string - enum: - - MANUAL - - DHCP - processData: - allOf: - - type: object - required: - - direction - - format - properties: - direction: - $ref: "#/components/schemas/content" - format: - $ref: "#/components/schemas/format" - oneOf: - - type: object - required: - - interval - properties: - interval: - $ref: "#/components/schemas/cycleTime" - - type: object - required: - - onChange - properties: - onChange: - type: boolean - format: - type: string - enum: - - byteArray - - iodd - default: byteArray - content: - type: string - enum: - - getData - - setData - - getSetData - default: getData - mqttParameter: - type: object - required: - - format - properties: - parameter: - $ref: "#/components/schemas/parameter" - format: - $ref: "#/components/schemas/format" - oneOf: - - type: object - required: - - interval - properties: - interval: - $ref: "#/components/schemas/cycleTime" - - type: object - required: - - onChange - properties: - onChange: - type: boolean - parameter: - oneOf: - - type: object - required: - - parameterName - properties: - parameterName: - $ref: "#/components/schemas/parameterName" - subParameterName: - $ref: "#/components/schemas/subParameterName" - - type: object - required: - - index - properties: - index: - type: integer - example: 233 - subindex: - type: integer - example: 2 - eventOrigin: - type: string - enum: - - ALL - - GATEWAY - - MASTERS - - PORTS - - DEVICES - default: ALL - eventMasterNumber: - type: integer - minimum: 1 - eventPortNumber: - type: integer - minimum: 1 - eventdeviceAlias: - type: string - minLength: 1 - maxLength: 32 - eventTop: - type: integer - minimum: 1 - eventBottom: - type: integer - minimum: 1 - identificationMasters: - type: array - items: - type: object - required: - - masterNumber - properties: - masterNumber: - type: integer - minimum: 1 - serialNumber: - type: string - minLength: 1 - maxLength: 16 - locationTag: - type: string - minLength: 1 - maxLength: 32 - example: - - masterNumber: 1 - serialNumber: A12345678B - locationTag: slotNumber 5 - - masterNumber: 2 - serialNumber: 123A45B783 - locationTag: slotNumber 6 - masterIdentificationGet: - required: - - vendorName - - vendorId - - masterId - - masterType - type: object - properties: - vendorName: - type: string - minLength: 1 - maxLength: 64 - vendorId: - type: integer - minimum: 1 - maximum: 65535 - masterId: - type: integer - minimum: 1 - maximum: 4294967295 - masterType: - type: string - enum: - - Unspecific - - Master acc. V1.0 - - Master acc. V1.1 - - Failsafe_Master - - Wireless_Master - serialNumber: - type: string - minLength: 1 - maxLength: 16 - orderCode: - type: string - minLength: 1 - maxLength: 64 - productName: - type: string - minLength: 1 - maxLength: 64 - productId: - type: string - minLength: 1 - maxLength: 64 - hardwareRevision: - type: string - minLength: 1 - maxLength: 64 - firmwareRevision: - type: string - minLength: 1 - maxLength: 64 - vendorUrl: - type: string - format: uri - manualUrl: - type: string - format: uri - productInstanceUri: - type: string - descriptionFileUri: - type: string - applicationSpecificTag: - type: string - minLength: 1 - maxLength: 32 - locationTag: - type: string - minLength: 1 - maxLength: 32 - functionTag: - type: string - minLength: 1 - maxLength: 32 - masterIdentificationPost: - type: object - properties: - applicationSpecificTag: - type: string - minLength: 1 - maxLength: 32 - locationTag: - type: string - minLength: 1 - maxLength: 32 - functionTag: - type: string - minLength: 1 - maxLength: 32 - gatewayCapabilitiesGet: - required: - - ioddSupported - - mqttSupported - type: object - properties: - ioddSupported: - type: boolean - mqttSupported: - type: boolean - example: - ioddSupported: true - mqttSupported: true - masterCapabilitiesGet: - required: - - numberOfPorts - type: object - properties: - numberOfPorts: - type: integer - minimum: 1 - maximum: 255 - maxPowerSupply: - type: object - required: - - value - - unit - properties: - value: - type: number - minimum: 0 - unit: - type: string - minLength: 1 - maxLength: 32 - eventTime: - description: >- - Timestamp (format defined in DIN ISO 8601). This field can give an - absolute time or a relative time. Both formats are defined in DIN ISO - 8601. - type: string - minLength: 1 - maxLength: 32 - eventSeverity: - description: >- - Indicates the severity of the message. The IO-Link EventType - NOTIFICATION maps to NOTICE, WARNING to WARNING and ERROR to ERROR. - type: string - enum: - - EMERGENCY - - ALERT - - CRITICAL - - ERROR - - WARNING - - NOTICE - - INFO - - DEBUG - eventOriginObject: - type: object - properties: - gateway: - type: string - masterNumber: - description: >- - This property is mandatory for IO-Link Master Events, IO-Link Port - Events and IO-Link Device Events. Should not be used for other log - entries. - type: integer - minimum: 1 - portNumber: - description: >- - This property is mandatory for IO-Link Port Events and IO-Link - Device Events. Should not be used for other log entries. - type: integer - minimum: 1 - maximum: 255 - deviceAlias: - description: >- - This property is mandatory for IO-Link Device Events. Should not be - used for other log entries. - type: string - minLength: 1 - maxLength: 32 - eventObject: - type: object - properties: - code: - description: >- - IO-Link Port EventCode or IO-Link Device EventCode. This property is - mandatory for IO-Link Port Events or IO-Link Device Events. - type: integer - minimum: 0 - maximum: 65535 - mode: - description: >- - IO-Link Port Event Mode or IO-Link Device EventMode. This property - is mandatory for IO-Link Port Events or IO-Link Device Events. - type: string - enum: - - SINGLESHOT - - APPEARS - - DISAPPEARS - text: - type: string - minLength: 1 - gatewayEventsGet: - type: array - items: - type: object - required: - - time - - severity - - origin - - message - properties: - time: - $ref: "#/components/schemas/eventTime" - severity: - $ref: "#/components/schemas/eventSeverity" - origin: - $ref: "#/components/schemas/eventOriginObject" - message: - $ref: "#/components/schemas/eventObject" - deviceBlockParameterizationPostParametersAnswer: - type: array - items: - type: object - required: - - identifier - - result - properties: - identifier: - oneOf: - - type: object - required: - - index - properties: - index: - type: integer - minimum: 0 - maximum: 65535 - subIndex: - type: integer - minimum: 0 - maximum: 255 - - type: object - required: - - parameterName - properties: - parameterName: - $ref: "#/components/schemas/parameterName" - subParameterName: - $ref: "#/components/schemas/subParameterName" - result: - type: object - required: - - parameterExchangeResult - properties: - parameterExchangeResult: - type: string - enum: - - WRITE_SUCCESS - - READ_SUCCESS - - ERROR - content: - $ref: "#/components/schemas/deviceParameterValueGetPost" - iolinkError: - $ref: "#/components/schemas/iolinkErrorObject" - deviceFirmwareUpdatePost: - type: object - properties: - password: - type: string - description: password for updating the device if required - iolfwfile: - type: string - format: binary - description: IOLFW File for the device - required: - - iolfwfile - deviceFirmwareUpdateStatusGet: - type: object - properties: - active: - type: boolean - description: >- - Indicates if a firmware update is currently in progress. - stage: - type: string - description: >- - Indicates the current stage of the firmware update. - enum: - - PREPARATION - - DOWNLOAD - - VALIDATION - - UPDATE - - FINISHED - message: - type: string - description: >- - Status message according to BLOB Transfer & Firmware Update Specification Version 1.1 September 2019 (Table 19 – Error displays of FW-Update tools). - example: Selected file is not a firmware update file - action: - type: string - description: >- - Indicates the action to be taken by the user according to BLOB Transfer & Firmware Update Specification Version 1.1 September 2019 (Table 19 – Error displays of FW-Update tools). - example: Look for a file with extension .iolfw - progress: - type: number - description: >- - Indicates the progress of the firmware update in percent. - minimum: 0 - maximum: 100 - - deviceEventsGet: - type: array - items: - type: object - required: - - time - - severity - - origin - - message - properties: - time: - $ref: "#/components/schemas/eventTime" - severity: - $ref: "#/components/schemas/eventSeverity" - origin: - required: - - master - - port - - deviceAlias - allOf: - - $ref: "#/components/schemas/eventOriginObject" - message: - required: - - code - - mode - allOf: - - $ref: "#/components/schemas/eventObject" - example: - - time: "2018-05-18T07:31:54.123Z" - severity: WARNING - origin: - master: 1 - port: 1 - deviceAlias: Temperature_sensor_1 - message: - code: 16912 - mode: APPEARS - text: Device temperature over-run – Clear source of heat - gatewayIdentificationGet: - type: object - required: - - macAddress - - vendorName - properties: - macAddress: - type: string - pattern: "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$" - minLength: 1 - maxLength: 17 - serialNumber: - type: string - minLength: 1 - maxLength: 16 - orderCode: - type: string - minLength: 1 - maxLength: 64 - productName: - type: string - minLength: 1 - maxLength: 64 - productId: - type: string - hardwareRevision: - type: string - maxLength: 64 - firmwareRevision: - type: string - vendorName: - type: string - vendorUrl: - type: string - manualUrl: - type: string - productInstanceUri: - type: string - applicationSpecificTag: - type: string - locationTag: - type: string - functionTag: - type: string - example: - macAddress: "00:02:72:CE:A6:49" - serialNumber: "C134A746" - productId: "TMP34Z" - vendorName: "SensorCompany" - productName: "FlowSensor34" - hardwareRevision: "V3.45" - firmwareRevision: "V1.30" - productInstanceUri: "sensor.tmp.23.com" - gatewayConfigurationGetPost: - type: object - required: - - ethIpv4 - properties: - ethIpv4: - type: array - minItems: 1 - items: - type: object - required: - - ipConfiguration - properties: - ifName: - type: string - ipConfiguration: - $ref: "#/components/schemas/ipConfiguration" - ipAddress: - type: string - format: ipv4 - pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ - subnetMask: - type: string - format: ipv4 - pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ - standardGateway: - type: string - format: ipv4 - pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ - example: - ethIpv4: - - ifName: "eth0" - ipConfiguration: MANUAL - ipAddress: 192.168.1.13 - subnetMask: 255.255.255.0 - standardGateway: 192.168.1.1 - mqttConfigurationGetPost: - type: object - required: - - clientMode - properties: - clientMode: - type: string - serverAddress: - type: string - username: - type: string - password: - type: string - lastWill: - type: object - required: - - topic - - message - - qos - - retain - properties: - topic: - type: string - message: - type: string - qos: - type: string - enum: - - 0_ONLY_ONCE - - 1_AT_LEAST_ONCE - - 2_EXACTLY_ONCE - retain: - type: boolean - keepAliveTime: - type: integer - mqttConfigurationTopic: - allOf: - - type: object - required: - - qos - - deviceAlias - properties: - qos: - type: string - enum: - - 0_ONLY_ONCE - - 1_AT_LEAST_ONCE - - 2_EXACTLY_ONCE - deviceAlias: - type: string - description: Unique deviceAlias. - - oneOf: - - type: object - properties: - event: - $ref: "#/components/schemas/event" - processData: - $ref: "#/components/schemas/processData" - parameter: - $ref: "#/components/schemas/mqttParameter" - mqttConfigurationTopicPost: - allOf: - - type: object - properties: - topicName: - type: string - - $ref: "#/components/schemas/mqttConfigurationTopic" - mqttConfigurationTopicGet: - allOf: - - type: object - required: - - topicId - properties: - topicId: - type: integer - - type: object - required: - - topicName - properties: - topicName: - type: string - - $ref: "#/components/schemas/mqttConfigurationTopic" - example: - topicId: 1 - topicName: PD input - qos: 1_AT_LEAST_ONCE - deviceAlias: DT35 - processData: - direction: getData - format: iodd - interval: - value: 10 - unit: ms - mqttConnectionStatusGet: - allOf: - - type: object - required: - - connectionStatus - - serverAddress - - mqttUpTime - properties: - connectionStatus: - type: string - enum: - - CLIENT_INACTIVE - - CONNECTION_ACCEPTED - - UNACCEPTABLE_PROTOCOL_VERSION - - IDENTIFIER_REJECTED - - SERVER_UNAVAILABLE - - BAD_USERNAME_OR_PASSWORD - - NOT_AUTHORIZED - serverAddress: - type: string - mqttUpTime: - description: Duration of established MQTT connection - type: integer - example: - connectionStatus: CONNECTION_ACCEPTED - serverAddress: "http://broker-address.com" - upTime: 1050 - deviceCapabilitiesGet: - required: - - minimumCycleTime - - supportedProfiles - type: object - properties: - minimumCycleTime: - $ref: "#/components/schemas/cycleTime" - supportedProfiles: - type: array - items: - type: integer - minimum: 1 - deviceIdentificationGet: - required: - - vendorId - - deviceId - - iolinkRevision - - vendorName - - productName - type: object - properties: - vendorId: - type: integer - minimum: 1 - maximum: 65535 - deviceId: - type: integer - minimum: 1 - maximum: 16777215 - iolinkRevision: - type: string - enum: - - "1.0" - - "1.1" - vendorName: - description: Mandatory if the Device suports the ISDU. - type: string - minLength: 1 - maxLength: 64 - vendorText: - type: string - vendorUrl: - type: string - productName: - description: Mandatory if the Device suports the ISDU. - type: string - minLength: 1 - maxLength: 64 - productId: - type: string - minLength: 1 - maxLength: 64 - productText: - type: string - minLength: 1 - maxLength: 64 - serialNumber: - type: string - minLength: 1 - maxLength: 16 - hardwareRevision: - type: string - minLength: 1 - maxLength: 64 - firmwareRevision: - type: string - productInstanceUri: - type: string - ioddUri: - type: string - applicationSpecificTag: - type: string - minLength: 1 - maxLength: 32 - locationTag: - type: string - minLength: 1 - maxLength: 32 - functionTag: - type: string - minLength: 1 - maxLength: 32 - example: - vendorId: 26 - deviceId: 8389226 - iolinkRevision: "1.1" - vendorName: SICK AG - vendorText: Sensor Intelligence. - productName: SLG-2 - productId: SLG-2 - productText: The SLG-2 IO-Link device is a smart lightgrid - serialNumber: Serial123456 - hardwareRevision: 3.2.1.444R - firmwareRevision: 3.2.1.888R - vendorUrl: "http://www.sick.com" - productInstanceUri: "http://www.sick.com/SLG-2/Serial123456" - ioddUri: "https://ioddfinder.io-link.com/26/42/SICK-SLG-2-20210428-IODD1.1" - # 'https://ioddfinder.io-link.com/api/vendors/26/iodds/11541/files/zip/rated' - # 'https://ioddfinder.io-link.com/productvariants/search/32872' - applicationSpecificTag: Fallback light switch - locationTag: Down under - functionTag: Check end of belt - portIdentificationPost: - type: object - properties: - applicationSpecificTag: - type: string - minLength: 1 - maxLength: 32 - example: Fallback light switch - locationTag: - type: string - minLength: 1 - maxLength: 32 - example: Down under - functionTag: - type: string - minLength: 1 - maxLength: 32 - example: Check start of belt - portCapabilitiesGet: - type: object - required: - - portType - properties: - portType: - type: string - enum: - - CLASS_A - - CLASS_B - - CLASS_A_WITH_PORT_POWER_OFF_ON - - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_B - - WIRELESS_MASTER - slotType: - description: >- - slotType for Wireless Master only - type: string - enum: - - SSLOT - - DSLOT - maxPowerSupply: - description: >- - maxPowerSupply is not supported in IO-Link Wireless. - type: object - required: - - value - - unit - properties: - value: - type: number - unit: - type: string - - portConfigurationGet: - type: object - required: - - mode - - iqConfiguration - - deviceAlias - properties: - mode: - type: string - enum: - - DEACTIVATED - - IOLINK_MANUAL - - IOLINK_AUTOSTART - - DIGITAL_INPUT - - DIGITAL_OUTPUT - - WIOLINK_CYCLIC_AUTOPAIRING - - WIOLINK_CYCLIC - - WIOLINK_ROAMING_AUTOPAIRING - - WIOLINK_ROAMING - validationAndBackup: - description: required if portMode is IOLINK_MANUAL. - type: string - enum: - - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.0 - - TYPE_COMPATIBLE_DEVICE_V1.1 - - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - cycleTime: - description: >- - required if portMode is IOLINK_MANUAL or - IOLINK_AUTOSTART. Default value is 0 ms which means as fast as possible. - Note: If the applied value for cycle time cannot exactly be mapped, - the port shall use the next possible higher value. If the cycle time is greater - than 132.8 ms the error 702 shall be returned. - Note: This value is not used in IO-Link wireless use - wMasterCycleTimeOut and wMasterCycleTimeIn instead. - type: object - allOf: - - $ref: "#/components/schemas/cycleTime" - vendorId: - description: >- - required if portMode is IOLINK_MANUAL and - validationAndBackup is not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 65535 - deviceId: - description: >- - required if portMode is IOLINK_MANUAL and - validationAndBackup is not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 16777215 - iqConfiguration: - description: >- - iqConfiguration is not supported in IO-Link Wireless. - type: string - enum: - - NOT_SUPPORTED - - DIGITAL_INPUT - - DIGITAL_OUTPUT - deviceAlias: - type: string - slotNumber: - description: >- - slot number of the Wireless-Device (Wireless Master only). - type: integer - minimum: 0 - maximum: 7 - trackNumber: - description: >- - track number of the Wireless-Device, maximum depends on the number of - available tracks on the Wireless-Master (Wireless Master only). - type: integer - minimum: 1 - maximum: 5 - deviceTxPower: - description: >- - transmission power of the Wireless-Device (Wireless Master only). - type: integer - minimum: 1 - maximum: 31 - maxRetry: - description: >- - Number of Retries for process data (Wireless Master only). - type: integer - minimum: 2 - maximum: 31 - imaTime: - description: >- - I am alive time for the wireless connection (Wireless Master only). - type: object - required: - - base - - multiplier - properties: - base: - description: >- - IMA timeout base. - type: string - enum: - - "1664us" - - "5ms" - - "1s" - - "1min" - multiplier: - description: >- - IMA timeout multiplier. - type: integer - minimum: 1 - maximum: 255 - slotType: - description: >- - Single Slot or Double Slot (Wireless Master only). - type: string - enum: - - "SSLOT" - - "DSLOT" - lowEnergyDevice: - description: >- - to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). - type: boolean - default: false - maxPDSegLength: - description: >- - maximum process data output segment length (Wireless Master only). - type: integer - minimum: 0 - maximum: 32 - wMasterCycleTimeOut: - description: >- - Wireless-Master cycle time output for PD data (Wireless Master only). - type: object - required: - - base - properties: - base: - type: string - enum: - - "FreeRunning" - - "5ms" - multiplier: - type: integer - minimum: 1 - maximum: 63 - wMasterCycleTimeIn: - description: >- - Wireless-Master cycle time input for PD data (Wireless Master only). - type: object - required: - - base - properties: - base: - type: string - enum: - - "FreeRunning" - - "5ms" - multiplier: - type: integer - minimum: 1 - maximum: 63 - uniqueId: - description: >- - unique identifier for each Wireless-Device (Wireless Master only). - type: string - minLength: 26 - maxLength: 26 - - mastersConfigurationGetPost: # TODO: IOLW - properties: - wMasterId: - description: >- - Master identifier for connection with Wireless-Devices. - type: integer - minimum: 1 - maximum: 29 - advancedConnectivity: - description: >- - To set advanced connectivity functions on the Wireless-Master. - type: object - properties: - "ahtEnable": - description: >- - To enable or disable the Adaptive Hopping Table. - type: boolean - default: false - pairingTimeout: - description: >- - Timeout for pairing by BUTTON / UNIQUE. - type: object - required: - - value - - unit - properties: - value: - type: integer - minimum: 5 - maximum: 255 - unit: - type: string - enum: - - s - serviceTrackNumber: - description: >- - W-Track number used for service requests (Scan/Pairing/Roaming). - type: integer - minimum: 1 - maximum: 5 - default: 1 - serviceTrackMode: - description: >- - Mode of the service track. - type: string - enum: - - CYCLIC - - ROAMING - trackTxPower: - description: >- - transmission power of the W-Track (0 = Disable) - type: object - properties: - "track_1": - type: integer - minimum: 0 - maximum: 31 - default: 0 - "track_2": - type: integer - minimum: 0 - maximum: 31 - default: 0 - "track_3": - type: integer - minimum: 0 - maximum: 31 - default: 0 - "track_4": - type: integer - minimum: 0 - maximum: 31 - default: 0 - "track_5": - type: integer - minimum: 0 - maximum: 31 - default: 0 - blockList: - type: object - properties: - "2403": - type: boolean - default: false - "2404": - type: boolean - default: false - "2405": - type: boolean - default: false - "2406": - type: boolean - default: false - "2407": - type: boolean - default: false - "2408": - type: boolean - default: false - "2409": - type: boolean - default: false - "2410": - type: boolean - default: false - "2411": - type: boolean - default: false - "2412": - type: boolean - default: false - "2413": - type: boolean - default: false - "2414": - type: boolean - default: false - "2415": - type: boolean - default: false - "2416": - type: boolean - default: false - "2417": - type: boolean - default: false - "2418": - type: boolean - default: false - "2419": - type: boolean - default: false - "2420": - type: boolean - default: false - "2421": - type: boolean - default: false - "2422": - type: boolean - default: false - "2423": - type: boolean - default: false - "2424": - type: boolean - default: false - "2425": - type: boolean - default: false - "2426": - type: boolean - default: false - "2427": - type: boolean - default: false - "2428": - type: boolean - default: false - "2429": - type: boolean - default: false - "2430": - type: boolean - default: false - "2431": - type: boolean - default: false - "2432": - type: boolean - default: false - "2433": - type: boolean - default: false - "2434": - type: boolean - default: false - "2435": - type: boolean - default: false - "2436": - type: boolean - default: false - "2437": - type: boolean - default: false - "2438": - type: boolean - default: false - "2439": - type: boolean - default: false - "2440": - type: boolean - default: false - "2441": - type: boolean - default: false - "2442": - type: boolean - default: false - "2443": - type: boolean - default: false - "2444": - type: boolean - default: false - "2445": - type: boolean - default: false - "2446": - type: boolean - default: false - "2447": - type: boolean - default: false - "2448": - type: boolean - default: false - "2449": - type: boolean - default: false - "2450": - type: boolean - default: false - "2451": - type: boolean - default: false - "2452": - type: boolean - default: false - "2453": - type: boolean - default: false - "2454": - type: boolean - default: false - "2455": - type: boolean - default: false - "2456": - type: boolean - default: false - "2457": - type: boolean - default: false - "2458": - type: boolean - default: false - "2459": - type: boolean - default: false - "2460": - type: boolean - default: false - "2461": - type: boolean - default: false - "2462": - type: boolean - default: false - "2463": - type: boolean - default: false - "2464": - type: boolean - default: false - "2465": - type: boolean - default: false - "2466": - type: boolean - default: false - "2467": - type: boolean - default: false - "2468": - type: boolean - default: false - "2469": - type: boolean - default: false - "2470": - type: boolean - default: false - "2471": - type: boolean - default: false - "2472": - type: boolean - default: false - "2473": - type: boolean - default: false - "2474": - type: boolean - default: false - "2475": - type: boolean - default: false - "2476": - type: boolean - default: false - "2477": - type: boolean - default: false - "2478": - type: boolean - default: false - mastersPortsPairingPost: # TODO: IOLW - properties: - portPairing: - type: string - enum: - - Unpairing - - PairingUnique - - PairingButton - example: - WPortPairing: PairingUnique - - mastersScanGet: # TODO: IOLW - properties: - scanStatus: - type: string - enum: - - NoScanWasPerformed - - ScanInProgress - - ScanEnded - scanResults: - type: array - properties: - slotType: - type: string - enum: - - "SSLOT" - - "DSLOT" - uniqueId: - type: string - minLength: 26 - maxLength: 26 - iolinkRevision: - type: string - enum: - - "1.1" - lastSeen: - $ref: "#/components/schemas/eventTime" - example: - scanStatus: ScanEnded - scanResults: - - slotType: SSLOT - uniqueId: 03:78:00:00:01:32:50:60:46 - iolinkRevision: "1.1" - lastSeen: "2022-12-01T08:42:23.314Z" - - slotType: DSLOT - uniqueId: 03:78:00:00:01:32:50:60:47 - iolinkRevision: "1.1" - lastSeen: "2022-12-01T09:42:23.314Z" - - mastersScanPost: # TODO: IOLW - properties: - txPower: - type: integer - minimum: 1 - maximum: 31 - example: - txPower: 31 - - mastersPortsGet: # TODO: IOLW - type: array - items: - type: object - required: - - portNumber - - statusInfo - - deviceAlias - properties: - portNumber: - type: number - deviceAlias: - type: string - statusInfo: - type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - slotNumber: - description: >- - slot number of the Wireless-Device (Wireless Master only). - type: integer - minimum: 0 - maximum: 7 - trackNumber: - description: >- - track number of the Wireless-Device, maximum depends on the number of - available tracks on the Wireless-Master (Wireless Master only). - type: integer - minimum: 1 - maximum: 5 - slotType: - description: >- - Single Slot or Double Slot (Wireless Master only). - type: string - enum: - - "SSLOT" - - "DSLOT" - deviceInfo: - description: >- - Wireless Master only. - type: object - properties: - vendorId: - type: integer - minimum: 1 - maximum: 65535 - deviceId: - type: integer - minimum: 1 - maximum: 16777215 - productName: - type: string - minLength: 1 - maxLength: 64 - - mastersPortsStatusGet: # TODO: IOLW - properties: - statusInfo: - type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - iolinkRevision: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. - type: string - enum: - - "1.0" - - "1.1" - transmissionRate: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. transmissionRate is not used in IO-Link Wireless. - type: string - enum: - - COM1 - - COM2 - - COM3 - masterCycleTime: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. masterCycleTime is not used in IO-Link wireless use - wMasterCycleTimeOut and wMasterCycleTimeIn instead. - type: object - allOf: - - $ref: "#/components/schemas/cycleTime" - portQualityInfo: - description: >- - status information of the Process Data (Wireless Master only). - type: object - properties: - "pdInValid": - type: boolean - default: false - "pdOutValid": - type: boolean - default: false - inputDataLength: - description: >- - this element contains the input data length as number of octets of the Device provided by the PDIn service (Wireless Master only). - type: integer - minimum: 0 - maximum: 32 - outputDataLength: - description: >- - this element contains the output data length as number of octets of the Device provided by the PDOut service (Wireless Master only). - type: integer - minimum: 0 - maximum: 32 - vendorId: - description: >- - Wireless Master only. - type: integer - minimum: 1 - maximum: 65535 - deviceId: - description: >- - Wireless Master only. - type: integer - minimum: 1 - maximum: 16777215 - wMasterCycleTimeOut: - description: >- - Wireless-Master cycle time output for PD data (Wireless Master only). - type: object - required: - - base - properties: - base: - type: string - enum: - - "FreeRunning" - - "5ms" - multiplier: - type: integer - minimum: 1 - maximum: 63 - wMasterCycleTimeIn: - description: >- - Wireless-Master cycle time input for PD data (Wireless Master only). - type: object - required: - - base - properties: - base: - type: string - enum: - - "FreeRunning" - - "5ms" - multiplier: - type: integer - minimum: 1 - maximum: 63 - - mastersTrackstatusGet: # TODO: IOLW - type: array - items: - type: object - properties: - trackNumber: - type: number - Mode: - type: string - enum: - - DEACTIVATED - - CYCLIC - - ROAMING - - SCAN - - PAIRING - txPower: - type: integer - minimum: 1 - maximum: 31 - example: - - trackNumber: 1 - Mode: CYCLIC - txPower: 31 - - trackNumber: 2 - Mode: ROAMING - txPower: 31 - - mastersPortsQualityallGet: # TODO: IOLW - type: array - items: - type: object - properties: - portNumber: - type: number - lqiMaster: - type: integer - minimum: 0 - maximum: 100 - rssiMaster: - type: integer - minimum: -128 - maximum: 20 - lqiDevice: - type: integer - minimum: 0 - maximum: 100 - rssiDevice: - type: integer - minimum: -128 - maximum: 20 - example: - - portNumber: 1 - lqiMaster: 100 - rssiMaster: -40 - lqiDevice: 100 - rssiDevice: -39 - - portNumber: 2 - lqiMaster: 100 - rssiMaster: -60 - lqiDevice: 100 - rssiDevice: -61 - - mastersPortsQualityGet: # TODO: IOLW - properties: - lqiMaster: - type: integer - minimum: 0 - maximum: 100 - rssiMaster: - type: integer - minimum: -128 - maximum: 20 - lqiDevice: - type: integer - minimum: 0 - maximum: 100 - rssiDevice: - type: integer - minimum: -128 - maximum: 20 - example: - lqiMaster: 100 - rssiMaster: -40 - lqiDevice: 100 - rssiDevice: -39 - - portConfigurationPost: - description: "Note: At least one of the mode, iqConfiguration, - deviceAlias properties shall be included to the POST request" - type: object - properties: - mode: - type: string - enum: - - DEACTIVATED - - IOLINK_MANUAL - - IOLINK_AUTOSTART - - DIGITAL_INPUT - - DIGITAL_OUTPUT - - WIOLINK_CYCLIC_AUTOPAIRING - - WIOLINK_CYCLIC - - WIOLINK_ROAMING_AUTOPAIRING - - WIOLINK_ROAMING - validationAndBackup: - description: >- - required if the port's mode is IOLINK_MANUAL. - type: string - enum: - - NO_DEVICE_CHECK - - TYPE_COMPATIBLE_DEVICE_V1.0 - - TYPE_COMPATIBLE_DEVICE_V1.1 - - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - cycleTime: - description: >- - If no cycleTime configured with mode IOLINK_MANUAL or - IOLINK_AUTOSTART, the possible fastest cycle time is used by the - IO-Link Master. If the applied value for cycle time cannot exactly be - mapped, the port shall use the next possible higher value. - If the cycle time is greater than 132.8 ms the error 702 shall - be returned. This value is not used in IO-Link wireless use - wMasterCycleTimeOut and wMasterCycleTimeIn instead. - type: object - allOf: - - $ref: "#/components/schemas/cycleTime" - vendorId: - description: >- - required if the port's mode is IOLINK_MANUAL and validationAndBackup is - not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 65535 - deviceId: - description: >- - required if the port's mode is IOLINK_MANUAL and validationAndBackup is - not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 16777215 - iqConfiguration: - description: >- - iqConfiguration is not supported in IO-Link Wireless. - type: string - enum: - - NOT_SUPPORTED - - DIGITAL_INPUT - - DIGITAL_OUTPUT - - ANALOG_INPUT - - ANALOG_OUTPUT - - POWER_2 - deviceAlias: - type: string - minLength: 1 - maxLength: 32 - slotNumber: - description: >- - slot number of the Wireless-Device (Wireless Master only). - type: integer - minimum: 0 - maximum: 7 - trackNumber: - description: >- - track number of the Wireless-Device, maximum depends on the number of - available tracks on the Wireless-Master (Wireless Master only). - type: integer - minimum: 1 - maximum: 5 - deviceTxPower: - description: >- - transmission power of the Wireless-Device (Wireless Master only). - type: integer - minimum: 1 - maximum: 31 - maxRetry: - description: >- - Number of Retries for process data (Wireless Master only). - type: integer - minimum: 2 - maximum: 31 - imaTime: - description: >- - I am alive time for the wireless connection (Wireless Master only). - type: object - required: - - base - - multiplier - properties: - base: - description: >- - IMA timeout base. - type: string - enum: - - "1664us" - - "5ms" - - "1s" - - "1min" - multiplier: - description: >- - IMA timeout multiplier. - type: integer - minimum: 1 - maximum: 255 - slotType: - description: >- - Single Slot or Double Slot (Wireless Master only). - type: string - enum: - - "SSLOT" - - "DSLOT" - lowEnergyDevice: - description: >- - to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). - type: boolean - default: false - maxPDSegLength: - description: >- - maximum process data output segment length (Wireless Master only). - type: integer - minimum: 0 - maximum: 32 - wMasterCycleTimeOut: - description: >- - Wireless-Master cycle time output for PD data (Wireless Master only). - type: object - required: - - base - properties: - base: - type: string - enum: - - "FreeRunning" - - "5ms" - multiplier: - type: integer - minimum: 1 - maximum: 63 - wMasterCycleTimeIn: - description: >- - Wireless-Master cycle time input for PD data (Wireless Master only). - type: object - required: - - base - properties: - base: - type: string - enum: - - "FreeRunning" - - "5ms" - multiplier: - type: integer - minimum: 1 - maximum: 63 - uniqueId: - description: >- - unique identifier for each Wireless-Device (Wireless Master only). - type: string - minLength: 26 - maxLength: 26 - - dataStorageGetPost: - description: >- - In case the Data Storage is empty, the header object is empty and the - content is an empty string. - type: object - required: - - header - - content - properties: - header: - oneOf: - - type: object - required: - - vendorId - - deviceId - - iolinkRevision - properties: - vendorId: - type: integer - minimum: 1 - maximum: 65535 - deviceId: - type: integer - minimum: 1 - maximum: 16777215 - iolinkRevision: - type: string - enum: - - "1.0" - - "1.1" - parameterChecksum: - type: integer - - type: object # empty object - additionalProperties: false - minProperties: 0 - maxProperties: 0 - content: - description: Base64 coded DS data Ojects. Max size = 2KB*1.33. - type: string - # format: byte - processDataValue: - type: object - properties: - iolink: - description: Process data in IO-Link mode - allOf: - - type: object - required: - - valid - properties: - valid: - type: boolean - description: > - Process data validity in case of incoming process data see PQI (Table E.10 - IO-Link Interface and System Specification V1.13). The valid flag is required and is equivalent to OE (Table E.11 IO-Link Interface and System Specification V1.13). In case it is set to false the process data should be invalidated by master command 0x99 (see Table B.2 - IO-Link Interface and System Specification V1.13). - - type: object - required: - - value - properties: - value: - oneOf: - - $ref: "#/components/schemas/deviceByteArrayTypeValue" - - $ref: "#/components/schemas/deviceSimpleTypeValue" - - $ref: "#/components/schemas/deviceComplexTypeValue" - unit: - $ref: "#/components/schemas/deviceSimpleTypeValueUnit" - description: > - Process data value - cqValue: - type: boolean - description: > - IO-Link cable CQ (pin4) level if it is used as digital input or - output (SIO mode). (false - 0 V, true - 24 V) - iqValue: - type: boolean - description: > - IO-Link cable IQ (pin2) level if it is used as digital input or output. - (false - 0 V, true - 24 V) - example: - "format=byteArray, pin4=IO-Link, pin2=sio": - iolink: - valid: true - value: - - 15 - - 123 - - 126 - - 236 - iqValue: true - "format=iodd, pin4=IO-Link, pin2=deactivated/not available": - iolink: - valid: true - value: - Valve_1: - value: true - Valve_2: - value: false - "format=byteArray/iodd, pin4=sio, pin2=deactivated/not available": - cqValue: false - devicesGet: - type: array - items: - type: object - description: > - Information about the device access parameter like master/ port number and the unique deviceAlias. - required: - - deviceAlias - - masterNumber - - portNumber - properties: - deviceAlias: - type: string - minLength: 1 - maxLength: 32 - masterNumber: - type: integer - minimum: 1 - portNumber: - type: integer - minimum: 1 - ioddFileName: - type: string - minLength: 1 - maxLength: 128 - example: - - deviceAlias: DT35 - masterNumber: 1 - portNumber: 1 - - deviceAlias: TAD081 - masterNumber: 1 - portNumber: 2 - - deviceAlias: BNI_IOL - masterNumber: 1 - portNumber: 3 - - deviceAlias: master1port4 - masterNumber: 1 - portNumber: 4 - ioddFileName: vendorname-devicename-20231016-IODD1.1.xml - deviceProcessDataValueGet: - type: object - description: > - The cqValue is present in the 'getData' object if the CQ (pin4) is configured as - digital input. The cqValue is present in the 'setData' object if the CQ (pin4) - is configured as digital output. The iolink is present either in the - 'getData' or 'setData' or both objects if the CQ (pin4) is configured to IO-Link mode. - The iqValue is present in the 'getData' object if the IQ (pin2) is configured as - digital input. The iqValue is present in the 'setData' object if the IQ (pin4) - is configured as digital output. - properties: - getData: - $ref: "#/components/schemas/processDataValue" - setData: - $ref: "#/components/schemas/processDataValue" - deviceProcessDataValuePost: - $ref: "#/components/schemas/processDataValue" - deviceByteArrayTypeValue: - type: array - description: The value in byteArray format. - items: - type: integer - minimum: 0 - maximum: 255 - deviceSimpleTypeValue: - oneOf: - - type: boolean - - type: string - - type: number - description: The value (with simple type) in iodd format. - deviceComplexTypeEntry: - type: object - description: The entry for a complex iodd type - required: - - value - properties: - value: - $ref: "#/components/schemas/deviceSimpleTypeValue" - unit: - $ref: "#/components/schemas/deviceSimpleTypeValueUnit" - deviceSimpleTypeValueUnit: - type: string - description: The unit for the simple type number value in SI format. - deviceComplexTypeValue: - type: object - minProperties: 1 - maxProperties: 255 - description: The value (with complex type) in iodd format. - additionalProperties: - $ref: "#/components/schemas/deviceComplexTypeEntry" - deviceParametersGet: - type: array - items: - type: object - required: - - index - - parameterName - properties: - index: - type: integer - minimum: 0 - maximum: 65535 - parameterName: - $ref: "#/components/schemas/parameterName" - subindexAccessSupported: - type: boolean - description: only for complex parameters (records or arrays) required. Not allowed for simple parameters - example: - - index: 16 - parameterName: "Vendor_Name" - - index: 18 - parameterName: "Product_Name" - - index: 19 - parameterName: "ProductID" - - index: 60 - parameterName: "SSC_1_Param" - subindexAccessSupported: true - deviceSubParametersGet: - type: array - items: - type: object - required: - - subIndex - - subParameterName - properties: - subIndex: - type: integer - minimum: 1 - maximum: 255 - subParameterName: - $ref: "#/components/schemas/subParameterName" - example: - - subIndex: 1 - subParameterName: Master_command - - subIndex: 2 - subParameterName: Master_cycle_time - - subIndex: 3 - subParameterName: Minimum_cycle_time - deviceParameterValueGetPost: - type: object - properties: - value: - oneOf: - - $ref: "#/components/schemas/deviceByteArrayTypeValue" - - $ref: "#/components/schemas/deviceSimpleTypeValue" - - $ref: "#/components/schemas/deviceComplexTypeValue" - unit: - $ref: "#/components/schemas/deviceSimpleTypeValueUnit" - deviceParameterSubindexValueGetPost: - type: object - properties: - value: - oneOf: - - $ref: "#/components/schemas/deviceByteArrayTypeValue" - - $ref: "#/components/schemas/deviceSimpleTypeValue" - - $ref: "#/components/schemas/deviceComplexTypeValue" - unit: - $ref: "#/components/schemas/deviceSimpleTypeValueUnit" - deviceBlockParameterizationPost: - type: object - required: - - direction - - parameters - properties: - direction: - type: string - enum: - - WRITE - - READ - parameters: - $ref: "./schemas.yaml#/schemas/blockParameterizationPostParametersRequest" - index: - type: integer - description: Index of ISDU variable - minimum: 0 - maximum: 65535 - ioddIdentification: - type: object - required: - - vendorId - - deviceId - - version - - releaseDate - - iolinkRevision - properties: - vendorId: - type: number - deviceId: - type: number - version: - type: string - releaseDate: - type: string - iolinkRevision: - type: string - enum: - - "1.0" - - "1.1" - availableArtifacts: - type: array - items: - $ref: "./schemas.yaml#/schemas/artifact" - ioddFileName: - type: string - ioddFile: - description: The IODD XML file or other IODD artifacts. - type: string - format: binary - ioddArchive: - description: The IODD in archive format (e.g. IODD Finder) containing XML file and device images. - type: string - format: binary - ioddsGet: - type: array - items: - $ref: "#/components/schemas/ioddIdentification" - example: - - vendorId: 1234 - deviceId: 4567 - version: "4.3" - releaseDate: "2018-01-02" - iolinkRevision: "1.1" - - vendorId: 4321 - deviceId: 8765 - version: "2.1" - releaseDate: "2015-01-02" - iolinkRevision: "1.1" - availableArtifacts: [XML, DeviceIcon, DeviceSymbol, VendorLogo] - ioddFileName: vendorname-devicename-20231016-IODD1.1.xml - iolinkErrorObject: - type: object - required: - - code - - message - properties: - code: - type: integer - minimum: 0 - maximum: 65535 - message: - type: string - minLength: 1 - errorObject: - type: object - required: - - code - - message - properties: - code: - type: integer - minimum: 0 - message: - type: string - minLength: 1 - iolinkError: - $ref: "#/components/schemas/iolinkErrorObject" securitySchemes: basicAuth: description: Basic authentication mechanism with user and password provided in the HTTP header. @@ -4987,25 +2776,25 @@ components: in: query description: The event source to filter schema: - $ref: "#/components/schemas/eventOrigin" + $ref: "./schemas.yaml#/schemas/eventOrigin" eventMasterNumber: name: masterNumber in: query description: masterNumber is only applicable with origin=MASTERS and origin=PORTS schema: - $ref: "#/components/schemas/eventMasterNumber" + $ref: "./schemas.yaml#/schemas/masterNumber" eventPortNumber: name: portNumber in: query description: portnumber is only applicable with origin=PORTS schema: - $ref: "#/components/schemas/eventPortNumber" + $ref: "./schemas.yaml#/schemas/eventPortNumber" eventdeviceAlias: name: deviceAlias in: query description: deviceAlias is only applicable with origin=DEVICES schema: - $ref: "#/components/schemas/eventdeviceAlias" + $ref: "./schemas.yaml#/schemas/eventdeviceAlias" eventTop: name: top in: query @@ -5013,7 +2802,7 @@ components: Delivers or removes the oldest n events of the event buffer. top is mutually exclusive to bottom. schema: - $ref: "#/components/schemas/eventTop" + $ref: "./schemas.yaml#/schemas/eventTop" eventBottom: name: bottom in: query @@ -5021,19 +2810,19 @@ components: Delivers or removes the youngest n events of the event buffer. bottom is mutually exclusive to top. schema: - $ref: "#/components/schemas/eventBottom" + $ref: "./schemas.yaml#/schemas/eventBottom" format: name: format in: query description: Value format in response document schema: - $ref: "#/components/schemas/format" + $ref: "./schemas.yaml#/schemas/format" parameterIdent: name: parameterIdent in: path description: Parameter access either via index or parametername. Access via parametername requires IODD support. schema: - $ref: "#/components/schemas/parameterIdent" + $ref: "./schemas.yaml#/schemas/parameterIdent" required: true subParameterIdent: name: subParameterIdent @@ -5088,7 +2877,7 @@ components: content: application/json: schema: - $ref: "#/components/schemas/errorObject" + $ref: "./schemas.yaml#/schemas/errorObject" examples: "104": description: Fieldbus controller or another gateway protocol has claimed priority @@ -5204,7 +2993,7 @@ components: content: application/json: schema: - $ref: "#/components/schemas/errorObject" + $ref: "./schemas.yaml#/schemas/errorObject" examples: "150": description: due to user management restrictions @@ -5216,7 +3005,7 @@ components: content: application/json: schema: - $ref: "#/components/schemas/errorObject" + $ref: "./schemas.yaml#/schemas/errorObject" examples: "150": description: due to user management restrictions @@ -5228,7 +3017,7 @@ components: content: application/json: schema: - $ref: "#/components/schemas/errorObject" + $ref: "./schemas.yaml#/schemas/errorObject" examples: "103": value: @@ -5273,7 +3062,7 @@ components: content: application/json: schema: - $ref: "#/components/schemas/errorObject" + $ref: "./schemas.yaml#/schemas/errorObject" examples: "101": value: @@ -5292,7 +3081,7 @@ components: content: application/json: schema: - $ref: "#/components/schemas/errorObject" + $ref: "./schemas.yaml#/schemas/errorObject" examples: "105": value: diff --git a/schemas.yaml b/schemas.yaml index c14948b..7bf0cc0 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -8,19 +8,19 @@ schemas: maxLength: 32 pattern: "^[a-zA-Z0-9_]{1,32}$" example: master1port1 - deviceAliasMqtt: + deviceAliasMqtt: # path parameter shall not contain a type according to async api spec description: Unique deviceAlias. - portNumberMqtt: + portNumberMqtt: # path parameter shall not contain a type according to async api spec description: Port number. - masterNumberMqtt: + masterNumberMqtt: # path parameter shall not contain a type according to async api spec description: Index of the master. - originatorId: + originatorId: # path parameter shall not contain a type according to async api spec description: Shall be the unique identifier of the originator and shall correspond to the client id inside the MQTT message. It can be the ProductURI, DNS name, IP address or MAC address of the device hosting the MQTT publisher. - parameterIdentMqtt: + parameterIdentMqtt: # path parameter shall not contain a type according to async api spec description: Identifier of the parameter. It can be the parameterName or the index of the parameter. - subParameterIdentMqtt: + subParameterIdentMqtt: # path parameter shall not contain a type according to async api spec description: Identifier of the sub-parameter. It can be the sub-parameterName or the sub-index of the parameter. parameterName: type: string @@ -34,7 +34,7 @@ schemas: Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ minLength: 1 - maxLength: 71 + maxLength: 64 subParameterName: type: string description: | @@ -47,7 +47,7 @@ schemas: Rule 5: Naming according the scheme {name}_{index} or {name}_{subindex} is always allowed even if names are not duplicated. \ Rule 6: The naming of ArrayT elements is “element_{subindex}”. \ minLength: 1 - maxLength: 71 + maxLength: 64 cycleTime: type: object required: @@ -144,11 +144,9 @@ schemas: - index properties: index: - type: integer - example: 233 + $ref: "#/schemas/index" subindex: - type: integer - example: 2 + $ref: "#/schemas/subIndex" eventOrigin: type: string enum: @@ -165,15 +163,41 @@ schemas: type: integer minimum: 1 eventdeviceAlias: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/deviceAlias" eventTop: type: integer minimum: 1 eventBottom: type: integer minimum: 1 + serialNumber: + type: string + minLength: 1 + serialNumberDevice: + type: string + minLength: 1 + maxLength: 16 + vendorId: + type: integer + minimum: 1 + maximum: 65535 + vendorName: + type: string + minLength: 1 + maxLength: 64 + deviceId: + type: integer + minimum: 1 + maximum: 16777215 + productName: + type: string + minLength: 1 + maxLength: 64 + iolinkRevision: + type: string + enum: + - "1.0" + - "1.1" identificationMasters: type: array items: @@ -182,12 +206,9 @@ schemas: - masterNumber properties: masterNumber: - type: integer - minimum: 1 + $ref: "#/schemas/masterNumber" serialNumber: - type: string - minLength: 1 - maxLength: 16 + $ref: "#/schemas/serialNumber" locationTag: type: string minLength: 1 @@ -199,6 +220,11 @@ schemas: - masterNumber: 2 serialNumber: 123A45B783 locationTag: slotNumber 6 + index: + type: integer + minimum: 0 + maximum: 65535 + example: 233 masterIdentificationPost: type: object properties: @@ -283,6 +309,7 @@ schemas: entries. type: integer minimum: 1 + maximum: 255 portNumber: description: >- This property is mandatory for IO-Link Port Events and IO-Link @@ -314,6 +341,7 @@ schemas: text: type: string minLength: 1 + maxLength: 255 gatewayEventsGet: type: array items: @@ -347,13 +375,9 @@ schemas: - index properties: index: - type: integer - minimum: 0 - maximum: 65535 + $ref: "#/schemas/index" subIndex: - type: integer - minimum: 0 - maximum: 255 + $ref: "#/schemas/subIndex" - type: object required: - parameterName @@ -379,13 +403,9 @@ schemas: - index properties: index: - type: integer - minimum: 0 - maximum: 65535 + $ref: "#/schemas/index" subIndex: - type: integer - minimum: 0 - maximum: 255 + $ref: "#/schemas/subIndex" - type: object required: - parameterName @@ -459,9 +479,7 @@ schemas: minLength: 1 maxLength: 17 serialNumber: - type: string - minLength: 1 - maxLength: 16 + $ref: "#/schemas/serialNumber" orderCode: type: string minLength: 1 @@ -481,9 +499,7 @@ schemas: minLength: 1 maxLength: 64 vendorName: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/vendorName" vendorUrl: type: string minLength: 1 @@ -626,8 +642,7 @@ schemas: - 1_AT_LEAST_ONCE - 2_EXACTLY_ONCE deviceAlias: - type: string - description: Unique deviceAlias. + $ref: "#/schemas/deviceAlias" - oneOf: - type: object properties: @@ -719,18 +734,11 @@ schemas: type: object properties: vendorId: - type: integer - minimum: 1 - maximum: 65535 + $ref: "#/schemas/vendorId" deviceId: - type: integer - minimum: 1 - maximum: 16777215 + $ref: "#/schemas/deviceId" iolinkRevision: - type: string - enum: - - "1.0" - - "1.1" + $ref: "#/schemas/iolinkRevision" vendorName: description: Mandatory if the Device suports the ISDU. type: string @@ -754,9 +762,7 @@ schemas: minLength: 1 maxLength: 64 serialNumber: - type: string - minLength: 1 - maxLength: 16 + $ref: "#/schemas/serialNumberDevice" hardwareRevision: type: string minLength: 1 @@ -1362,9 +1368,7 @@ schemas: minLength: 26 maxLength: 26 iolinkRevision: - type: string - enum: - - "1.1" + $ref: "#/schemas/iolinkRevision" lastSeen: $ref: "#/schemas/eventTime" example: @@ -1471,10 +1475,7 @@ schemas: description: >- Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or OPERATE. - type: string - enum: - - "1.0" - - "1.1" + $ref: "#/schemas/iolinkRevision" transmissionRate: description: >- Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or @@ -1845,10 +1846,7 @@ schemas: minimum: 1 maximum: 16777215 iolinkRevision: - type: string - enum: - - "1.0" - - "1.1" + $ref: "#/schemas/iolinkRevision" parameterChecksum: type: integer - type: object # empty object @@ -1858,7 +1856,6 @@ schemas: content: description: Base64 coded DS data Ojects. Max size = 2KB*1.33. type: string - # format: byte processDataValue: type: object properties: @@ -1956,9 +1953,7 @@ schemas: - parameterName properties: index: - type: integer - minimum: 0 - maximum: 65535 + $ref: "#/schemas/index" parameterName: $ref: "#/schemas/parameterName" subindexAccessSupported: @@ -1983,9 +1978,7 @@ schemas: - subParameterName properties: subIndex: - type: integer - minimum: 1 - maximum: 255 + $ref: "#/schemas/subIndex" subParameterName: $ref: "#/schemas/subParameterName" example: @@ -2038,18 +2031,15 @@ schemas: - iolinkRevision properties: vendorId: - type: number + $ref: "#/schemas/vendorId" deviceId: - type: number + $ref: "#/schemas/deviceId" version: type: string releaseDate: type: string iolinkRevision: - type: string - enum: - - "1.0" - - "1.1" + $ref: "#/schemas/iolinkRevision" availableArtifacts: type: array items: @@ -2091,6 +2081,7 @@ schemas: message: type: string minLength: 1 + maxLength: 255 errorObject: type: object required: @@ -2171,9 +2162,7 @@ schemas: - Failsafe_Master - Wireless_Master serialNumber: - type: string - minLength: 1 - maxLength: 16 + $ref: "#/schemas/serialNumber" orderCode: type: string minLength: 1 @@ -2735,7 +2724,11 @@ schemas: "2477": false "2478": false "2479": false - + subIndex: + type: integer + minimum: 0 + maximum: 255 + example: 12 tracksStatisticsChannel: properties: trackNumber: @@ -3477,3 +3470,91 @@ schemas: type: string minLength: 1 maxLength: 32 + deviceFirmwareUpdateStatusGet: + type: object + properties: + active: + type: boolean + description: >- + Indicates if a firmware update is currently in progress. + stage: + type: string + description: >- + Indicates the current stage of the firmware update. + enum: + - PREPARATION + - DOWNLOAD + - VALIDATION + - UPDATE + - FINISHED + message: + type: string + description: >- + Status message according to BLOB Transfer & Firmware Update Specification Version 1.1 September 2019 (Table 19 – Error displays of FW-Update tools). + example: Selected file is not a firmware update file + action: + type: string + description: >- + Indicates the action to be taken by the user according to BLOB Transfer & Firmware Update Specification Version 1.1 September 2019 (Table 19 – Error displays of FW-Update tools). + example: Look for a file with extension .iolfw + progress: + type: number + description: >- + Indicates the progress of the firmware update in percent. + minimum: 0 + maximum: 100 + deviceFirmwareUpdatePost: + type: object + properties: + password: + type: string + description: password for updating the device if required + iolfwfile: + type: string + format: binary + description: IOLFW File for the device + required: + - iolfwfile + devicesGet: + type: array + items: + type: object + description: > + Information about the device access parameter like master/ port number and the unique deviceAlias. + required: + - deviceAlias + - masterNumber + - portNumber + properties: + deviceAlias: + type: string + minLength: 1 + maxLength: 32 + masterNumber: + type: integer + minimum: 1 + portNumber: + type: integer + minimum: 1 + ioddFileName: + type: string + minLength: 1 + maxLength: 128 + example: + - deviceAlias: DT35 + masterNumber: 1 + portNumber: 1 + - deviceAlias: TAD081 + masterNumber: 1 + portNumber: 2 + - deviceAlias: BNI_IOL + masterNumber: 1 + portNumber: 3 + - deviceAlias: master1port4 + masterNumber: 1 + portNumber: 4 + ioddFileName: vendorname-devicename-20231016-IODD1.1.xml + parameterIdent: + oneOf: + - $ref: "#/schemas/parameterName" + - $ref: "#/schemas/index" From 2dc83ca0db65450f19bfd6aafd64e6b76723cf90 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 10 Jun 2024 16:58:24 +0200 Subject: [PATCH 121/279] Clean up schemas and references --- JSON_for_IO-Link.yaml | 43 +- schemas.yaml | 1035 ++++++++++++----------------------------- 2 files changed, 290 insertions(+), 788 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4b6c807..011d15a 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2788,13 +2788,13 @@ components: in: query description: portnumber is only applicable with origin=PORTS schema: - $ref: "./schemas.yaml#/schemas/eventPortNumber" + $ref: "./schemas.yaml#/schemas/portNumber" eventdeviceAlias: name: deviceAlias in: query description: deviceAlias is only applicable with origin=DEVICES schema: - $ref: "./schemas.yaml#/schemas/eventdeviceAlias" + $ref: "./schemas.yaml#/schemas/deviceAlias" eventTop: name: top in: query @@ -2833,44 +2833,7 @@ components: minimum: 0 maximum: 255 required: true - parameterName: - name: parameterName - in: path - description: | - Parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ - Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ - Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used. \ - Rule 3: Leading numbers shall be prefixed with "\_". \ - Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}\_{index} or {name}\_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is "element\_{subindex}"". - - Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ - schema: - type: string - minLength: 1 - maxLength: 71 - required: true - subParameterName: - name: subParameterName - in: path - description: | - Sub-parameter name. Comes from the IODD but might be reformatted according to the JSON mapping specification. \ - Constraints for strings in keys of JSON key-value-pairs (see [9]) and URLs require the following conversion rules for those names: \ - Rule 1: Names are based on the IODD XML Element Name inside variables or process data 159 resolving the text in primary language. \ - Rule 2: Only alphanumeric characters and underscores are allowed. All other characters are replaced by "\_". The following regex (/[^\w\n]/g) can be used. \ - Rule 3: Leading numbers shall be prefixed with "\_". \ - Rule 4: If there are duplicate IO-Link names, the IO-Link index or subindex has to be accessed by appending the index number or subindex number behind the name according to the following scheme: {name}_{index} or {name}_{subindex}. \ - Rule 5: Naming according the scheme {name}\_{index} or {name}\_{subindex} is always allowed even if names are not duplicated. \ - Rule 6: The naming of ArrayT elements is "element\_{subindex}". \ - - Note: The parameter name may change with the IODD version. If it is used by the client for accessing parameters, it needs to be verified that it is the same used by the master. \ - schema: - type: string - minLength: 1 - maxLength: 71 - required: true + responses: HTTP_400: description: Bad request diff --git a/schemas.yaml b/schemas.yaml index 7bf0cc0..c3723ad 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -14,6 +14,11 @@ schemas: description: Port number. masterNumberMqtt: # path parameter shall not contain a type according to async api spec description: Index of the master. + serverAddressMqtt: + description: Serveraddress. + type: string + minLength: 1 + maxLength: 64 originatorId: # path parameter shall not contain a type according to async api spec description: Shall be the unique identifier of the originator and shall correspond to the client id inside the MQTT message. It can be the ProductURI, @@ -159,17 +164,19 @@ schemas: masterNumber: description: Index of the master. minimum: 1 - eventPortNumber: + portNumber: type: integer minimum: 1 - eventdeviceAlias: - $ref: "#/schemas/deviceAlias" eventTop: type: integer minimum: 1 eventBottom: type: integer minimum: 1 + orderCode: + type: string + minLength: 1 + maxLength: 64 serialNumber: type: string minLength: 1 @@ -185,6 +192,10 @@ schemas: type: string minLength: 1 maxLength: 64 + vendorText: + type: string + minLength: 1 + maxLength: 64 deviceId: type: integer minimum: 1 @@ -198,6 +209,22 @@ schemas: enum: - "1.0" - "1.1" + tags: + type: string + minLength: 1 + maxLength: 32 + wirelessTrackNumber: + type: integer + minimum: 0 + maximum: 31 + default: 0 + wirelessSlotNumber: + type: integer + minimum: 0 + maximum: 7 + wirelessBlockList: + type: boolean + default: false identificationMasters: type: array items: @@ -225,21 +252,20 @@ schemas: minimum: 0 maximum: 65535 example: 233 + subIndex: + type: integer + minimum: 0 + maximum: 255 + example: 12 masterIdentificationPost: type: object properties: applicationSpecificTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" locationTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" functionTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" gatewayCapabilitiesGet: required: - ioddSupported @@ -259,9 +285,7 @@ schemas: type: object properties: numberOfPorts: - type: integer - minimum: 1 - maximum: 255 + $ref: "#/schemas/portNumber" maxPowerSupply: type: object required: @@ -307,16 +331,12 @@ schemas: This property is mandatory for IO-Link Master Events, IO-Link Port Events and IO-Link Device Events. Should not be used for other log entries. - type: integer - minimum: 1 - maximum: 255 + $ref: "#/schemas/masterNumber" portNumber: description: >- This property is mandatory for IO-Link Port Events and IO-Link Device Events. Should not be used for other log entries. - type: integer - minimum: 1 - maximum: 255 + $ref: "#/schemas/portNumber" deviceAlias: $ref: "#/schemas/deviceAlias" eventObject: @@ -474,16 +494,11 @@ schemas: - vendorName properties: macAddress: - type: string - pattern: "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$" - minLength: 1 - maxLength: 17 + $ref: "#/schemas/macAddress" serialNumber: $ref: "#/schemas/serialNumber" orderCode: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/orderCode" productName: type: string minLength: 1 @@ -513,17 +528,11 @@ schemas: minLength: 1 maxLength: 64 applicationSpecificTag: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/tags" locationTag: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/tags" functionTag: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/tags" example: macAddress: "00:02:72:CE:A6:49" serialNumber: "C134A746" @@ -553,17 +562,11 @@ schemas: ipConfiguration: $ref: "#/schemas/ipConfiguration" ipAddress: - type: string - format: ipv4 - pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ + $ref: "#/schemas/ipAddress" subnetMask: - type: string - format: ipv4 - pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ + $ref: "#/schemas/subnetMask" standardGateway: - type: string - format: ipv4 - pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ + $ref: "#/schemas/standardGateway" example: ethIpv4: - ifName: "eth0" @@ -582,9 +585,7 @@ schemas: - ACTIVE - INACTIVE serverAddress: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/serverAddressMqtt" username: type: string minLength: 1 @@ -704,7 +705,7 @@ schemas: - BAD_USERNAME_OR_PASSWORD - NOT_AUTHORIZED serverAddress: - type: string + $ref: "#/schemas/serverAddressMqtt" upTime: type: integer example: @@ -741,18 +742,14 @@ schemas: $ref: "#/schemas/iolinkRevision" vendorName: description: Mandatory if the Device suports the ISDU. - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/vendorName" vendorText: - type: string + $ref: "#/schemas/vendorText" vendorUrl: type: string productName: description: Mandatory if the Device suports the ISDU. - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/productName" productId: type: string minLength: 1 @@ -774,17 +771,11 @@ schemas: ioddUri: type: string applicationSpecificTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" locationTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" functionTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" example: vendorId: 26 deviceId: 8389226 @@ -809,19 +800,13 @@ schemas: type: object properties: applicationSpecificTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" example: Fallback light switch locationTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" example: Down under functionTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" example: Check start of belt portCapabilitiesGet: type: object @@ -902,16 +887,12 @@ schemas: description: >- required if portMode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 65535 + $ref: "#/schemas/vendorId" deviceId: description: >- required if portMode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 16777215 + $ref: "#/schemas/deviceId" iqConfiguration: description: >- iqConfiguration is not supported in IO-Link Wireless. @@ -921,20 +902,16 @@ schemas: - DIGITAL_INPUT - DIGITAL_OUTPUT deviceAlias: - type: string + $ref: "#/schemas/deviceAlias" slotNumber: description: >- slot number of the Wireless-Device (Wireless Master only). - type: integer - minimum: 0 - maximum: 7 + $ref: "#/schemas/wirelessSlotNumber" trackNumber: description: >- track number of the Wireless-Device, maximum depends on the number of available tracks on the Wireless-Master (Wireless Master only). - type: integer - minimum: 1 - maximum: 5 + $ref: "#/schemas/wirelessTrackNumber" deviceTxPower: description: >- transmission power of the Wireless-Device (Wireless Master only). @@ -1029,7 +1006,7 @@ schemas: mastersConfigurationGetPost: # TODO: IOLW properties: - wMasterId: + wMasterId: #ToDo roeseko What masterId is this? Same as in identification object? description: >- Master identifier for connection with Wireless-Devices. type: integer @@ -1064,10 +1041,7 @@ schemas: serviceTrackNumber: description: >- W-Track number used for service requests (Scan/Pairing/Roaming). - type: integer - minimum: 1 - maximum: 5 - default: 1 + $ref: "#/schemas/wirelessTrackNumber" serviceTrackMode: description: >- Mode of the service track. @@ -1081,261 +1055,170 @@ schemas: type: object properties: "track_1": - type: integer - minimum: 0 - maximum: 31 - default: 0 + $ref: "#/schemas/wirelessTrackNumber" "track_2": - type: integer - minimum: 0 - maximum: 31 - default: 0 + $ref: "#/schemas/wirelessTrackNumber" "track_3": - type: integer - minimum: 0 - maximum: 31 - default: 0 + $ref: "#/schemas/wirelessTrackNumber" "track_4": - type: integer - minimum: 0 - maximum: 31 - default: 0 + $ref: "#/schemas/wirelessTrackNumber" "track_5": - type: integer - minimum: 0 - maximum: 31 - default: 0 + $ref: "#/schemas/wirelessTrackNumber" blockList: type: object properties: "2403": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2404": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2405": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2406": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2407": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2408": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2409": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2410": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2411": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2412": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2413": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2414": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2415": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2416": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2417": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2418": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2419": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2420": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2421": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2422": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2423": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2424": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2425": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2426": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2427": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2428": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2429": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2430": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2431": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2432": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2433": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2434": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2435": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2436": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2437": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2438": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2439": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2440": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2441": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2442": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2443": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2444": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2445": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2446": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2447": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2448": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2449": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2450": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2451": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2452": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2453": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2454": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2455": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2456": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2457": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2458": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2459": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2460": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2461": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2462": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2463": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2464": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2465": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2466": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2467": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2468": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2469": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2470": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2471": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2472": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2473": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2474": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2475": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2476": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2477": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2478": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" mastersPortsPairingPost: # TODO: IOLW properties: portPairing: @@ -1402,9 +1285,9 @@ schemas: - deviceAlias properties: portNumber: - type: number + $ref: "#/schemas/portNumber" deviceAlias: - type: string + $ref: "#/schemas/deviceAlias" statusInfo: type: string enum: # see Terminology in V.113, Table E.4 PortStatusList @@ -1421,16 +1304,12 @@ schemas: slotNumber: description: >- slot number of the Wireless-Device (Wireless Master only). - type: integer - minimum: 0 - maximum: 7 + $ref: "#/schemas/wirelessSlotNumber" trackNumber: description: >- track number of the Wireless-Device, maximum depends on the number of available tracks on the Wireless-Master (Wireless Master only). - type: integer - minimum: 1 - maximum: 5 + $ref: "#/schemas/wirelessTrackNumber" slotType: description: >- Single Slot or Double Slot (Wireless Master only). @@ -1444,17 +1323,11 @@ schemas: type: object properties: vendorId: - type: integer - minimum: 1 - maximum: 65535 + $ref: "#/schemas/vendorId" deviceId: - type: integer - minimum: 1 - maximum: 16777215 + $ref: "#/schemas/deviceId" productName: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/productName" mastersPortsStatusGet: # TODO: IOLW properties: @@ -1567,7 +1440,7 @@ schemas: type: object properties: trackNumber: - type: number + $ref: "#/schemas/wirelessTrackNumber" Mode: type: string enum: @@ -1594,7 +1467,7 @@ schemas: type: object properties: portNumber: - type: number + $ref: "#/schemas/portNumber" lqiMaster: type: integer minimum: 0 @@ -1690,16 +1563,12 @@ schemas: description: >- required if the port's mode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 65535 + $ref: "#/schemas/vendorId" deviceId: description: >- required if the port's mode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. - type: integer - minimum: 1 - maximum: 16777215 + $ref: "#/schemas/deviceId" iqConfiguration: description: >- iqConfiguration is not supported in IO-Link Wireless. @@ -1712,22 +1581,16 @@ schemas: - ANALOG_OUTPUT - POWER_2 deviceAlias: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/deviceAlias" slotNumber: description: >- slot number of the Wireless-Device (Wireless Master only). - type: integer - minimum: 0 - maximum: 7 + $ref: "#/schemas/wirelessSlotNumber" trackNumber: description: >- track number of the Wireless-Device, maximum depends on the number of available tracks on the Wireless-Master (Wireless Master only). - type: integer - minimum: 1 - maximum: 5 + $ref: "#/schemas/wirelessTrackNumber" deviceTxPower: description: >- transmission power of the Wireless-Device (Wireless Master only). @@ -1838,13 +1701,9 @@ schemas: - iolinkRevision properties: vendorId: - type: integer - minimum: 1 - maximum: 65535 + $ref: "#/schemas/vendorId" deviceId: - type: integer - minimum: 1 - maximum: 16777215 + $ref: "#/schemas/deviceId" iolinkRevision: $ref: "#/schemas/iolinkRevision" parameterChecksum: @@ -2035,9 +1894,9 @@ schemas: deviceId: $ref: "#/schemas/deviceId" version: - type: string + $ref: "#/schemas/ioddDescriptionText" releaseDate: - type: string + $ref: "#/schemas/ioddDescriptionText" iolinkRevision: $ref: "#/schemas/iolinkRevision" availableArtifacts: @@ -2048,6 +1907,16 @@ schemas: description: The IODD XML file or other IODD artifacts. type: string format: binary + ioddDescriptionText: + description: The decription text from IODD For all others Description/@textId. + type: string + minLength: 1 + maxLength: 255 + ioddNameDescription: + decription: The decription text from IODD For all Name/@textId + type: string + minLength: 1 + maxLength: 64 ioddArchive: description: The IODD in archive format (e.g. IODD Finder) containing XML file and device images. type: string @@ -2079,9 +1948,7 @@ schemas: minimum: 0 maximum: 65535 message: - type: string - minLength: 1 - maxLength: 255 + $ref: "#/schemas/ioddDescriptionText" errorObject: type: object required: @@ -2092,18 +1959,23 @@ schemas: type: integer minimum: 0 message: - type: string - minLength: 1 + $ref: "#/schemas/ioddDescriptionText" iolinkError: $ref: "#/schemas/iolinkErrorObject" ipAddress: type: string + format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ example: 192.168.1.13 subnetMask: type: string + format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ example: 255.255.255.0 standardGateway: type: string + format: ipv4 + pattern: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$ example: 192.168.1.1 dnsServer: type: object @@ -2125,6 +1997,9 @@ schemas: - custom macAddress: type: string + pattern: "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$" + minLength: 1 + maxLength: 17 example: "FE:AB:3A:55:33:11" valueUnitObject: type: object @@ -2142,13 +2017,9 @@ schemas: type: object properties: vendorName: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/vendorName" vendorId: - type: integer - minimum: 1 - maximum: 65535 + $ref: "#/schemas/vendorId" masterId: type: integer minimum: 1 @@ -2164,9 +2035,7 @@ schemas: serialNumber: $ref: "#/schemas/serialNumber" orderCode: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/orderCode" productName: type: string minLength: 1 @@ -2194,17 +2063,11 @@ schemas: gsdUri: type: string applicationSpecificTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" locationTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" functionTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" example: vendorName: Vendor GmbH vendorId: 26 @@ -2227,17 +2090,11 @@ schemas: type: object properties: applicationSpecificTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" locationTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" functionTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" deviceEvents: summary: events @@ -2379,7 +2236,7 @@ schemas: example: "linkUp" masterConfiguration: properties: - masterId: + masterId: #ToDo roeseko What masterId is this? Same as in identification object? type: integer minimum: 1 maximum: 29 @@ -2406,239 +2263,161 @@ schemas: - all properties: "2402": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2403": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2404": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2405": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2406": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2407": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2408": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2409": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2410": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2411": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2412": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2413": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2414": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2415": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2416": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2417": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2418": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2419": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2420": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2421": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2422": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2423": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2424": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2425": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2426": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2427": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2428": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2429": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2430": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2431": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2432": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2433": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2434": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2435": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2436": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2437": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2438": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2439": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2440": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2441": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2442": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2443": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2444": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2445": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2446": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2447": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2448": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2449": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2450": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2451": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2452": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2453": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2454": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2455": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2456": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2457": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2458": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2459": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2460": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2461": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2462": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2463": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2464": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2465": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2466": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2467": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2468": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2469": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2470": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2471": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2472": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2473": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2474": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2475": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2476": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2477": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2478": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" "2479": - type: boolean - default: false + $ref: "#/schemas/wirelessBlockList" example: masterId: 5 ahtEnable: false @@ -2724,23 +2503,16 @@ schemas: "2477": false "2478": false "2479": false - subIndex: - type: integer - minimum: 0 - maximum: 255 - example: 12 tracksStatisticsChannel: properties: trackNumber: - type: integer - minimum: 1 - maximum: 5 + $ref: "#/schemas/wirelessTrackNumber" channelErrors: type: object # required: # @todo wireles # - all properties: - "2402": + "2402": # ToDo roeseko What is mean by this value? Is this the error code for this channel? type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available @@ -3167,221 +2939,6 @@ schemas: trackMode: CYCLIC txPower: 20 - # wirelessPortConfigurationGet: # @todo wireles - # properties: - # portMode: - # type: string - # enum: - # - DEACTIVATED - # - CYCLIC - # - ROAMING - # validationBackup: - # type: string - # enum: - # - NO_DEVICE_CHECK - # - TYPE_COMPATIBLE_DEVICE_V1.1 - # - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - # - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - # vendorId: - # type: integer - # minimum: 1 - # maximum: 65535 - # deviceId: - # type: integer - # minimum: 1 - # maximum: 16777215 - # portCycleTime: - # type: object - # required: - # - value - # - unit - # properties: - # value: - # type: integer - # minimum: 0 ## 0 means Freerunning - # maximum: 315 ## Step size 5ms - # unit: - # type: string - # enum: - # - ms - # trackNumber: - # type: integer - # minimum: 1 - # maximum: 5 - # slotNumber: - # type: integer - # minimum: 0 - # maximum: 7 - # slotType: - # type: string - # enum: - # - "SSLOT" - # - "DSLOT" - # maxRetry: - # type: integer - # minimum: 2 - # maximum: 31 - # imaTime: - # type: object - # required: - # - base - # - multiplier - # properties: - # base: - # type: string - # enum: - # - "1664us" - # - "5ms" - # - "1s" - # - "1min" - # multiplier: - # type: integer - # minimum: 1 - # maximum: 255 - # deviceTxPower: - # type: integer - # minimum: 0 - # maximum: 31 - # lowPowerDevice: - # type: string - # enum: - # - "NORMAL" - # - "LOW_POWER" - # maxPDSegLength: - # type: integer - # minimum: 0 - # maximum: 32 - # uniqueId: - # type: string - # deviceAlias: - # type: string - # example: - # portMode: CYCLIC - # validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1 - # vendorId: 888 - # deviceId: 1 - # portCycleTime: - # value: 0 - # unit: ms - # trackNumber: 5 - # slotNumber: 1 - # slotType: SSLOT - # maxRetry: 20 - # imaTime: - # base: 1664us - # multiplier: 60 - # deviceTxPower: 31 - # lowPowerDevice: NORMAL - # maxPDSegLength: 0 - # uniqueId: 03:78:00:00:01:32:50:60:46 - # deviceAlias: "Port_X01" - - # wirelessPortConfigurationPost: # @todo wireles - # properties: - # portMode: - # type: string - # enum: - # - DEACTIVATED - # - CYCLIC - # - ROAMING - # validationBackup: - # type: string - # enum: - # - NO_DEVICE_CHECK - # - TYPE_COMPATIBLE_DEVICE_V1.1 - # - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - # - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - # vendorId: - # type: integer - # minimum: 1 - # maximum: 65535 - # deviceId: - # type: integer - # minimum: 1 - # maximum: 16777215 - # portCycleTime: - # type: object - # required: - # - value - # - unit - # properties: - # value: - # type: integer - # minimum: 0 ## 0 means Freerunning - # maximum: 315 ## Step size 5ms - # unit: - # type: string - # enum: - # - ms - # trackNumber: - # type: integer - # minimum: 1 - # maximum: 5 - # slotNumber: - # type: integer - # minimum: 0 - # maximum: 7 - # slotType: - # type: string - # enum: - # - "SSLOT" - # - "DSLOT" - # maxRetry: - # type: integer - # minimum: 2 - # maximum: 31 - # imaTime: - # type: object - # required: - # - base - # - multiplier - # properties: - # base: - # type: string - # enum: - # - "1664us" - # - "5ms" - # - "1s" - # - "1min" - # multiplier: - # type: integer - # minimum: 1 - # maximum: 255 - # deviceTxPower: - # type: integer - # minimum: 0 - # maximum: 31 - # lowPowerDevice: - # type: string - # enum: - # - "NORMAL" - # - "LOW_POWER" - # maxPDSegLength: - # type: integer - # minimum: 0 - # maximum: 32 - # uniqueId: - # type: string - # example: - # portMode: CYCLIC - # validationBackup: TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - # vendorId: 888 - # deviceId: 1 - # portCycleTime: - # value: 0 ##Or FreeRunning - # unit: ms - # trackNumber: 5 - # slotNumber: 1 - # slotType: SSLOT - # maxRetry: 20 - # imaTime: - # base: 1664us - # multiplier: 60 - # deviceTxPower: 31 - # lowPowerDevice: NORMAL - # maxPDSegLength: 0 - # uniqueId: 03:78:00:00:01:32:50:60:46 - mqtt-iol-master: type: string description: The MQTT topic for the IO-Link Master. @@ -3405,13 +2962,9 @@ schemas: type: object properties: vendorName: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/vendorName" vendorId: - type: integer - minimum: 1 - maximum: 65535 + $ref: "#/schemas/vendorId" masterId: type: integer minimum: 1 @@ -3429,13 +2982,9 @@ schemas: minLength: 1 maxLength: 16 orderCode: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/orderCode" productName: - type: string - minLength: 1 - maxLength: 64 + $ref: "#/schemas/productName" productId: type: string minLength: 1 @@ -3459,17 +3008,11 @@ schemas: descriptionFileUri: type: string applicationSpecificTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" locationTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" functionTag: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/tags" deviceFirmwareUpdateStatusGet: type: object properties: @@ -3527,15 +3070,11 @@ schemas: - portNumber properties: deviceAlias: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/deviceAlias" masterNumber: - type: integer - minimum: 1 + $ref: "#/schemas/masterNumber" portNumber: - type: integer - minimum: 1 + $ref: "#/schemas/portNumber" ioddFileName: type: string minLength: 1 From ccb28b0f7b54e1d9519171cea12d135584b723cb Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 11 Jun 2024 09:46:29 +0200 Subject: [PATCH 122/279] Update license text --- LICENSE | 222 ++++++++++++-------------------------------------------- 1 file changed, 46 insertions(+), 176 deletions(-) diff --git a/LICENSE b/LICENSE index 6f06789..172f289 100644 --- a/LICENSE +++ b/LICENSE @@ -1,176 +1,46 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS +Disclaimer / License: +License Conditions for OpenAPI specification for IO-Link and AsyncAPI specification for IO-Link +Conditions in Respect of the Transfer of Use of OpenAPI specification for IO-Link and AsyncAPI specification for IO-Link + +between + +IO-Link community at Profibus Nutzerorganisation e.V. Karlsruhe (PNO) +and User hereinafter referred to as the "User" + +Preamble + +IO-Link community is prepared to grant to the User, under the conditions of this agreement, rights of use in respect of OpenAPI specification for IO-Link and AsyncAPI specification for IO-Link (hereinafter referred to as the "Software"). + +1. Rights of use + +1.1 IO-Link community hereby grants to the User the non-exclusive, non-transferable right, free of charge and for an unlimited period of time, to use the Software in accordance with the conditions of this license agreement. + +1.2 The Software is protected by copyright laws and by international agreements against unauthorized copying. The User is not allowed to change or remove the copyright notices and registration numbers contained in the Software. The User is allowed to make copies of the Software and can transfer the Software to another data storage medium solely for the purpose of data backup or archiving. The Software is provided solely for internal use by the User. The User is not allowed to carry out reverse compiling or to make changes or extensions to the Software. + +1.3 Without prejudice to the rights of use granted to the User by IO-Link community , IO-Link community shall retain all rights to the software including the documentation belonging thereto and all further papers. + +1.4 The parties agree that granting of licenses does not involve any technical +support from IO-Link community for the User. + +2. Publications + +Explicit approval from IO-Link community is required in advance if the User plans to make any publications in connection with this software or to publish the results of tests made with this Software. + +3. Limitations + +The User is not allowed to hire out or lend the Software to other parties. This license agreement only grants the User the rights to use the Software. + +4. Warranty + +The software is handed over free of charge. IO-Link community shall not provide any warranty in respect thereof. The use of the software shall be at the sole risk of the User. + +5. Liability + +Claims for damages against IO-Link community arising from or in connection with this agreement shall be excluded, irrespective of legal grounds, in particular claims on the grounds of production stoppage, loss of profit, loss of information and data or consequential damages, insofar as liability is not cogent for example according to product liability legislation or in cases of intent, gross negligence, absence of warranted characteristics or because of violation of fundamental contractual obligations. Compensation for damages on grounds of violation of fundamental contractual obligations shall however be limited to foreseeable damages typical of this type of contract, insofar as no intent or gross negligence applies. + +6. Applicable law/place of jurisdiction + +German law shall apply to the exclusion of the UN law on international sale of goods. The sole place of jurisdiction for all disputes arising from or on the basis of this agreement shall be Karlsruhe. + +If any of the conditions in the license agreement should become invalid for any reason, this does not affect the validity of the remaining conditions. + From fe93d1059fc1227bab10e29211b03657f615ef71 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 24 Jun 2024 16:47:14 +0200 Subject: [PATCH 123/279] Adjust todos --- schemas.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/schemas.yaml b/schemas.yaml index c3723ad..f32956a 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1006,7 +1006,7 @@ schemas: mastersConfigurationGetPost: # TODO: IOLW properties: - wMasterId: #ToDo roeseko What masterId is this? Same as in identification object? + wMasterId: #TODO roeseko What masterId is this? Same as in identification object? description: >- Master identifier for connection with Wireless-Devices. type: integer @@ -2236,7 +2236,7 @@ schemas: example: "linkUp" masterConfiguration: properties: - masterId: #ToDo roeseko What masterId is this? Same as in identification object? + masterId: #TODO roeseko What masterId is this? Same as in identification object? type: integer minimum: 1 maximum: 29 @@ -2509,10 +2509,10 @@ schemas: $ref: "#/schemas/wirelessTrackNumber" channelErrors: type: object - # required: # @todo wireles + # required: # @TODO wireles # - all properties: - "2402": # ToDo roeseko What is mean by this value? Is this the error code for this channel? + "2402": # TODO roeseko What is mean by this value? Is this the error code for this channel? type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available From 0d1eee72469c62380c648ab0d6c5e010208bd803 Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Wed, 26 Jun 2024 16:03:44 +0200 Subject: [PATCH 124/279] Restore the connection between endpoints and error codes. This commit is done to fix the issue #130. --- JSON_for_IO-Link.yaml | 2000 +++++++++++++++++++++++++++++++---------- 1 file changed, 1534 insertions(+), 466 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 5ee673f..c1ab4f2 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -155,27 +155,15 @@ paths: ...: "to be continued", } "401": - description: Forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/errorObject" - examples: - "150": - value: - code: 150 - message: Permission denied + $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": - description: Internal server error + description: Internal Server Error content: application/json: schema: - $ref: "#/components/schemas/errorObject" - examples: - "101": - value: - code: 101 - message: Internal server error + $ref: "#/components/schemas/errorObject_101" /apiversion: get: tags: @@ -207,27 +195,15 @@ paths: version: 1.0.0 additionalInfo: 1.2.3-feature-xyz "401": - description: Forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/errorObject" - examples: - "150": - value: - code: 150 - message: Permission denied + $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" "500": - description: Internal server error + description: Internal Server Error content: application/json: schema: - $ref: "#/components/schemas/errorObject" - examples: - "101": - value: - code: 101 - message: Internal server error + $ref: "#/components/schemas/errorObject_101" ################################################################################ # gateway @@ -251,7 +227,12 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" + "/gateway/capabilities": get: operationId: PostGatewayCapabilities @@ -271,7 +252,12 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" + "/gateway/configuration": get: operationId: GetGatewayConfiguration @@ -324,7 +310,12 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" + post: operationId: PostGatewayConfiguration tags: @@ -367,14 +358,33 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 201, 202, 203, 204, 205, 206,208, 701,702,703 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_204" + - $ref: "#/components/schemas/errorObject_205" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_701" + - $ref: "#/components/schemas/errorObject_702" + - $ref: "#/components/schemas/errorObject_703" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "/gateway/reset": post: @@ -386,14 +396,22 @@ paths: responses: "204": description: Successful operation - "400": # code 104 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_104" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "/gateway/reboot": post: @@ -405,14 +423,22 @@ paths: responses: "204": description: Successful operation - "400": # code 104 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_104" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "/gateway/events": get: @@ -524,14 +550,24 @@ paths: code: 20480 mode: APPEARS text: Device hardware fault – Device exchange - "400": # code 305, 306 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" delete: operationId: DeleteGatewayEvents tags: @@ -548,14 +584,24 @@ paths: responses: "200": description: Successful operation - "400": # code 305, 306 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" ################################################################################ # mqtt @@ -597,11 +643,23 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_103" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_106" post: operationId: PostMqttConfiguration @@ -635,17 +693,45 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702, 703 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_204" + - $ref: "#/components/schemas/errorObject_205" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_701" + - $ref: "#/components/schemas/errorObject_702" + - $ref: "#/components/schemas/errorObject_703" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_103" "500": - $ref: "#/components/responses/HTTP_500" - + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" + "501": + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_106" "/mqtt/topics": get: operationId: GetMqttTopics @@ -710,11 +796,23 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_103" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_106" post: operationId: PostMqttTopicsTopicId tags: @@ -771,18 +869,44 @@ paths: application/json: schema: type: integer - "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 701, 702 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_204" + - $ref: "#/components/schemas/errorObject_205" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_701" + - $ref: "#/components/schemas/errorObject_702" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_103" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_106" "/mqtt/topics/{topicId}": get: operationId: GetMqttTopicsTopicId @@ -848,11 +972,25 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_301" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_106" delete: operationId: DeleteMqttTopicsTopicId tags: @@ -864,19 +1002,36 @@ paths: responses: "204": description: Successful operation - "400": # code 104 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_104" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_301" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "501": - $ref: "#/components/responses/HTTP_501" - + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_106" "/mqtt/connectionstatus": get: operationId: GetMqttConnectionstatus @@ -896,11 +1051,23 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_103" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_106" ################################################################################ # iodds @@ -926,18 +1093,36 @@ paths: application/json: schema: $ref: "#/components/schemas/ioddsGet" - "400": # code 305, 306 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_103" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" delete: operationId: DeleteIodds tags: @@ -951,18 +1136,39 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 305, 306 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_301" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" "/iodds/file": get: operationId: GetIoddsFile @@ -992,18 +1198,38 @@ paths: $ref: "#/components/schemas/ioddArchive" example: "IODD in archive format provided by the IODD finder" - "400": # code 305, 306 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_301" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_101" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" post: operationId: PostIoddsFile tags: @@ -1026,18 +1252,41 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 208, 603, 604, 605 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_603" + - $ref: "#/components/schemas/errorObject_604" + - $ref: "#/components/schemas/errorObject_605" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" - "500": # code 101, 602 - $ref: "#/components/responses/HTTP_500" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_103" + "500": + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_602" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" ################################################################################ # masters @@ -1063,7 +1312,13 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/capabilities": get: operationId: GetMastersMasterNumberCapabilities @@ -1095,9 +1350,19 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_302" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/identification": get: operationId: GetMastersMasterNumberIdentification @@ -1156,9 +1421,19 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_302" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" post: operationId: PostMastersMasterNumberIdentification tags: @@ -1182,17 +1457,36 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 201, 202, 203, 206, 208 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_302" "500": - $ref: "#/components/responses/HTTP_500" - + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/configuration": get: operationId: GetMastersMasterNumberConfiguration @@ -1219,7 +1513,13 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" post: operationId: PostMastersMasterNumberConfiguration tags: @@ -1246,37 +1546,26 @@ paths: description: Bad request content: application/json: - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/trackstatus": #TODO: wireles get: @@ -1299,7 +1588,13 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/scan": #TODO: wireles get: @@ -1322,7 +1617,13 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" post: operationId: PostMastersMasterNumberScan tags: @@ -1344,37 +1645,26 @@ paths: description: Bad request content: application/json: - examples: - "104": - value: - code: 104 - message: Action locked by another client - "201": - value: - code: 201 - message: JSON parsing failed - "202": - value: - code: 202 - message: JSON data value invalid - "203": - value: - code: 203 - message: JSON data type invalid - "206": - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST request without content + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" ################################################################################ # ports @@ -1427,9 +1717,19 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_302" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/ports/qualityall": get: @@ -1452,9 +1752,19 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_302" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/ports/{portNumber}/capabilities": get: @@ -1518,9 +1828,21 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_302" + - $ref: "#/components/schemas/errorObject_303" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/ports/{portNumber}/status": get: @@ -1568,9 +1890,21 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_302" + - $ref: "#/components/schemas/errorObject_303" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/ports/{portNumber}/configuration": get: operationId: GetMastersMasterNumberPortsPortNumberConfiguration @@ -1628,9 +1962,21 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_302" + - $ref: "#/components/schemas/errorObject_303" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" post: operationId: PostMastersMasterNumberPortsPortNumberConfiguration tags: @@ -1692,16 +2038,43 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_204" + - $ref: "#/components/schemas/errorObject_205" + - $ref: "#/components/schemas/errorObject_207" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_701" + - $ref: "#/components/schemas/errorObject_702" + - $ref: "#/components/schemas/errorObject_703" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_302" + - $ref: "#/components/schemas/errorObject_303" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/ports/{portNumber}/datastorage": get: operationId: GetMastersMasterNumberPortsPortNumberDatastorages @@ -1738,9 +2111,21 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_302" + - $ref: "#/components/schemas/errorObject_303" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" post: operationId: PostMastersMasterNumberPortsPortNumberDatastorages tags: @@ -1772,16 +2157,42 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 401, 701 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_204" + - $ref: "#/components/schemas/errorObject_205" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_401" + - $ref: "#/components/schemas/errorObject_701" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_302" + - $ref: "#/components/schemas/errorObject_303" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/ports/{portNumber}/pairing": post: @@ -1802,16 +2213,43 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 201, 202, 203, 204, 205, 207, 208, 701, 702, 703 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_204" + - $ref: "#/components/schemas/errorObject_205" + - $ref: "#/components/schemas/errorObject_207" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_701" + - $ref: "#/components/schemas/errorObject_702" + - $ref: "#/components/schemas/errorObject_703" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_302" + - $ref: "#/components/schemas/errorObject_303" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/masters/{masterNumber}/ports/{portNumber}/quality": get: @@ -1835,10 +2273,21 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_302" + - $ref: "#/components/schemas/errorObject_303" "500": - $ref: "#/components/responses/HTTP_500" - + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" ################################################################################ # devices ################################################################################ @@ -1861,7 +2310,13 @@ paths: "403": $ref: "#/components/responses/HTTP_403" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/devices/{deviceAlias}/capabilities": get: operationId: GetDevicesDeviceAliasCapabilities @@ -1883,16 +2338,32 @@ paths: value: 2.3 unit: ms supportedProfiles: [10, 32770] - "400": # code 307 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_307" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/devices/{deviceAlias}/identification": get: operationId: GetDevicesDeviceAliasidentification @@ -1912,16 +2383,32 @@ paths: application/json: schema: $ref: "#/components/schemas/deviceIdentificationGet" - "400": # code 307 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_307" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" post: operationId: PostDevicesDeviceAliasidentification tags: @@ -1945,16 +2432,41 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 201, 202, 203, 206, 208, 307 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_307" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" + - $ref: "#/components/schemas/errorObject_309" + - $ref: "#/components/schemas/errorObject_310" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/devices/{deviceAlias}/processdata/value": get: operationId: GetDevicesDeviceAliasProcessData @@ -2002,18 +2514,42 @@ paths: value: Buzzer: value: 5 - "400": # code 305, 306, 601 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" + - $ref: "#/components/schemas/errorObject_601" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" post: operationId: PostDevicesDeviceAliasProcessData tags: @@ -2051,18 +2587,57 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 501, 502, 503, 601, 701, 702, 703 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_204" + - $ref: "#/components/schemas/errorObject_205" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" + - $ref: "#/components/schemas/errorObject_307" + - $ref: "#/components/schemas/errorObject_501" + - $ref: "#/components/schemas/errorObject_502" + - $ref: "#/components/schemas/errorObject_503" + - $ref: "#/components/schemas/errorObject_601" + - $ref: "#/components/schemas/errorObject_701" + - $ref: "#/components/schemas/errorObject_702" + - $ref: "#/components/schemas/errorObject_703" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" "/devices/{deviceAlias}/processdata/getdata/value": get: @@ -2103,18 +2678,42 @@ paths: Quality: value: 12 iqValue: true - "400": # code 305, 306, 601 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" + - $ref: "#/components/schemas/errorObject_601" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" "/devices/{deviceAlias}/processdata/setdata/value": get: @@ -2147,18 +2746,43 @@ paths: value: true Valve_2: value: false - "400": # code 305, 306, 601 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" + - $ref: "#/components/schemas/errorObject_601" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" + - $ref: "#/components/schemas/errorObject_503" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" "/devices/{deviceAlias}/parameters": get: @@ -2178,18 +2802,41 @@ paths: application/json: schema: $ref: "#/components/schemas/deviceParametersGet" - "400": # code 305, 306, 601 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_601" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" "/devices/{deviceAlias}/parameters/{parameterIdent}/value": get: @@ -2228,18 +2875,47 @@ paths: unit: "cm" Quality: value: 12 - "400": # code 305, 306, 307, 311, 601 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" + - $ref: "#/components/schemas/errorObject_307" + - $ref: "#/components/schemas/errorObject_311" + - $ref: "#/components/schemas/errorObject_601" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" + - $ref: "#/components/schemas/errorObject_309" + - $ref: "#/components/schemas/errorObject_310" + - $ref: "#/components/schemas/errorObject_312" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" post: operationId: PostDevicesDeviceAliasParametersValue @@ -2278,18 +2954,57 @@ paths: responses: "204": description: Successful operation - "400": # code 103, 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_204" + - $ref: "#/components/schemas/errorObject_205" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" + - $ref: "#/components/schemas/errorObject_307" + - $ref: "#/components/schemas/errorObject_311" + - $ref: "#/components/schemas/errorObject_601" + - $ref: "#/components/schemas/errorObject_701" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" + - $ref: "#/components/schemas/errorObject_309" + - $ref: "#/components/schemas/errorObject_310" + - $ref: "#/components/schemas/errorObject_312" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" "/devices/{deviceAlias}/parameters/{parameterIdent}/subindices": get: @@ -2310,18 +3025,41 @@ paths: application/json: schema: $ref: "#/components/schemas/deviceSubParametersGet" - "400": # code 601 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_601" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_309" + - $ref: "#/components/schemas/errorObject_310" + - $ref: "#/components/schemas/errorObject_312" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" ? "/devices/{deviceAlias}/parameters/{parameterIdent}/subindices/{subParameterIdent}/value" : get: @@ -2356,18 +3094,47 @@ paths: Distance: value: 15.2 unit: "cm" - "400": # code 305, 306, 307, 311, 601 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" + - $ref: "#/components/schemas/errorObject_307" + - $ref: "#/components/schemas/errorObject_311" + - $ref: "#/components/schemas/errorObject_601" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" + - $ref: "#/components/schemas/errorObject_309" + - $ref: "#/components/schemas/errorObject_310" + - $ref: "#/components/schemas/errorObject_312" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" post: operationId: PostDevicesDeviceAliasParametersSubindicesValue tags: @@ -2395,18 +3162,55 @@ paths: responses: "204": description: Successful operation - "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 307, 311, 601, 701 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_204" + - $ref: "#/components/schemas/errorObject_205" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_307" + - $ref: "#/components/schemas/errorObject_311" + - $ref: "#/components/schemas/errorObject_601" + - $ref: "#/components/schemas/errorObject_701" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" + - $ref: "#/components/schemas/errorObject_309" + - $ref: "#/components/schemas/errorObject_310" + - $ref: "#/components/schemas/errorObject_312" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" "/devices/{deviceAlias}/blockparameterization": post: @@ -2573,18 +3377,56 @@ paths: iolinkError: code: 32817 message: Parameter value above limit - "400": # code 104, 201, 202, 203, 204, 205, 206, 208, 305, 306, 307, 311, 601, 701, 702, 703 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_104" + - $ref: "#/components/schemas/errorObject_201" + - $ref: "#/components/schemas/errorObject_202" + - $ref: "#/components/schemas/errorObject_203" + - $ref: "#/components/schemas/errorObject_204" + - $ref: "#/components/schemas/errorObject_205" + - $ref: "#/components/schemas/errorObject_206" + - $ref: "#/components/schemas/errorObject_208" + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" + - $ref: "#/components/schemas/errorObject_307" + - $ref: "#/components/schemas/errorObject_311" + - $ref: "#/components/schemas/errorObject_601" + - $ref: "#/components/schemas/errorObject_701" + - $ref: "#/components/schemas/errorObject_702" + - $ref: "#/components/schemas/errorObject_703" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" + - $ref: "#/components/schemas/errorObject_310" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "501": - $ref: "#/components/responses/HTTP_501" + description: Not Implemented + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_105" "/devices/{deviceAlias}/events": get: @@ -2606,16 +3448,32 @@ paths: application/json: schema: $ref: "#/components/schemas/deviceEventsGet" - "400": # code 305, 306 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_305" + - $ref: "#/components/schemas/errorObject_306" "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_304" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" "/devices/{deviceAlias}/fwupdate": get: @@ -2634,14 +3492,32 @@ paths: application/json: schema: $ref: "#/components/schemas/deviceFirmwareUpdateStatusGet" - "400": # code 305, 306 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_307" + "401": + $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" post: operationId: PostDevicesDeviceAliasFirmwareUpdate tags: @@ -2654,14 +3530,33 @@ paths: "204": description: >- Successful operation. Device firmware has been updated. - "400": # code 107 - $ref: "#/components/responses/HTTP_400" + "400": + description: Bad Request + content: + application/json: + schema: + $ref: "#/components/schemas/errorObject_107" + "401": + $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" "404": - $ref: "#/components/responses/HTTP_404" + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_103" + - $ref: "#/components/schemas/errorObject_304" + - $ref: "#/components/schemas/errorObject_308" "500": - $ref: "#/components/responses/HTTP_500" + description: Internal Server Error + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/errorObject_101" + - $ref: "#/components/schemas/errorObject_102" requestBody: required: true description: The firmware update file in iolfw format. The file must be provided as a multipart/form-data request including the `filename` as header parameter (see RFC7578). @@ -4918,8 +5813,372 @@ components: message: type: string minLength: 1 - iolinkError: - $ref: "#/components/schemas/iolinkErrorObject" + + errorObject_101: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [101] + message: + enum: ["Internal server error"] + errorObject_102: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [102] + message: + enum: ["Internal communication error"] + errorObject_103: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [103] + message: + enum: ["Operation not supported"] + errorObject_104: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [104] + message: + enum: ["Action locked by another client"] + errorObject_105: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [105] + message: + enum: ["IODD feature not supported"] + errorObject_106: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [106] + message: + enum: ["MQTT feature not supported"] + errorObject_107: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [107] + message: + enum: ["Error during device firmware update"] + errorObject_150: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [150] + message: + enum: ["Permission denied"] + errorObject_201: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [201] + message: + enum: ["JSON parsing failed"] + errorObject_202: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [202] + message: + enum: ["JSON data value invalid"] + errorObject_203: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [203] + message: + enum: ["JSON data type invalid"] + errorObject_204: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [204] + message: + enum: ["Enumeration value unknown"] + errorObject_205: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [205] + message: + enum: ["JSON data value out of range"] + errorObject_206: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [206] + message: + enum: ["JSON data value out of bounds"] + errorObject_207: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [207] + message: + enum: ["deviceAlias is not unique"] + errorObject_208: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [208] + message: + enum: ["POST request without content"] + errorObject_301: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [301] + message: + enum: ["Resource not found"] + errorObject_302: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [302] + message: + enum: ["masterNumber not found"] + errorObject_303: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [303] + message: + enum: ["portNumber not found"] + errorObject_304: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [304] + message: + enum: ["deviceAlias not found"] + errorObject_305: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [305] + message: + enum: ["Query parameter name invalid"] + errorObject_306: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [306] + message: + enum: ["Query parameter value invalid"] + errorObject_307: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [307] + message: + enum: ["Port is not configured to IO-Link"] + errorObject_308: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [308] + message: + enum: ["IO-Link Device is not accessible"] + errorObject_309: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [309] + message: + enum: ["IO-Link parameter not found"] + errorObject_310: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [310] + message: + enum: ["IO-Link parameter access not supported by the device"] + errorObject_311: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [311] + message: + enum: ["IO-Link parameter access error"] + iolinkError: + $ref: "#/components/schemas/iolinkErrorObject" + required: + - iolinkError + errorObject_312: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [312] + message: + enum: ["IO-Link parameter name is not unique"] + errorObject_401: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [401] + message: + enum: ["Data storage mismatch"] + errorObject_501: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [501] + message: + enum: ["I/Q is not configured as DIGITAL_OUTPUT"] + errorObject_502: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [502] + message: + enum: ["C/Q is not configured as DIGITAL_OUTPUT"] + errorObject_503: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [503] + message: + enum: ["IO-Link Device has no output process data"] + errorObject_601: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [601] + message: + enum: ["IODD (representation) for this IO-Link device is not available"] + errorObject_602: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [602] + message: + enum: ["IODD upload failed. Not enough memory"] + errorObject_603: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [603] + message: + enum: ["IODD upload failed. IODD XML invalid"] + errorObject_604: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [604] + message: + enum: ["IODD upload failed. CRC error"] + errorObject_605: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [605] + message: + enum: ["IODD upload failed. Parsing error"] + errorObject_701: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [701] + message: + enum: ["Data set incomplete"] + errorObject_702: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [702] + message: + enum: ["Data set not applicable"] + errorObject_703: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [703] + message: + enum: ["Data set combination incompatible"] + securitySchemes: basicAuth: description: Basic authentication mechanism with user and password provided in the HTTP header. @@ -5076,118 +6335,6 @@ components: $ref: "#/components/schemas/subParameterIdent" required: true responses: - HTTP_400: - description: Bad request - content: - application/json: - schema: - $ref: "#/components/schemas/errorObject" - examples: - "104": - description: Fieldbus controller or another gateway protocol has claimed priority - value: - code: 104 - message: Action locked by another client - "107": - description: Error during device firmware update - value: - code: 107 - message: Read /devices/{deviceAlias}/fwupdate to get more information about the status. - "201": - description: Error while parsing the incoming JSON object - value: - code: 201 - message: JSON parsing failed - "202": - description: Error while parsing a specific JSON value, e.g. a malformed IP address - value: - code: 202 - message: JSON data value invalid - "203": - description: e.g. string instead of number - value: - code: 203 - message: JSON data type invalid - "204": - value: - code: 204 - message: Enumeration value unknown - "205": - description: Exceeds the minimum or maximum value - value: - code: 205 - message: JSON data value out of range - "206": - description: An array or string was accessed exceeding its maximum length - value: - code: 206 - message: JSON data value out of bounds - "208": - value: - code: 208 - message: POST or PUT request without content - "305": - value: - code: 305 - message: Query parameter name invalid - "306": - value: - code: 306 - message: Query parameter value invalid - "307": - value: - code: 307 - message: Port is not configured to IO-Link - "311": - value: - code: 311 - message: IO-Link parameter access error - "401": - value: - code: 401 - message: Data storage mismatch - "501": - value: - code: 501 - message: I/Q is not configured as DIGITAL_OUTPUT - "502": - value: - code: 502 - message: C/Q is not configured as DIGITAL_OUTPUT - "503": - value: - code: 503 - message: IO-Link Device has no output process data - "601": - value: - code: 601 - message: IODD (representation) for this IO-Link device is not available - "603": - value: - code: 603 - message: IODD upload failed. IODD XML invalid - "604": - value: - code: 604 - message: IODD upload failed. CRC error - "605": - value: - code: 605 - message: IODD upload failed. Parsing error - "701": - value: - code: 701 - message: Data set incomplete - "702": - description: whole data set is rejected - value: - code: 702 - message: Data set not applicable - "703": - description: whole data set is rejected - value: - code: 703 - message: Data set combination incompatible HTTP_401: description: Authentication information is missing or invalid headers: @@ -5216,85 +6363,6 @@ components: value: code: 150 message: Permission denied - HTTP_404: - description: Not found - content: - application/json: - schema: - $ref: "#/components/schemas/errorObject" - examples: - "103": - value: - code: 103 - message: Operation not supported - "301": - description: e.g. wrong URL - value: - code: 301 - message: Resource not found - "302": - value: - code: 302 - message: masterNumber not found - "303": - value: - code: 303 - message: portNumber not found - "304": - value: - code: 304 - message: deviceAlias not found - "308": - description: e.g. not connected or communication error - value: - code: 308 - message: IO-Link Device is not accessible - "309": - value: - code: 309 - message: IO-Link Parameter not found - "310": - value: - code: 310 - message: IO-Link parameter access not supported by the Device - "312": - value: - code: 312 - message: IO-Link parameter name is not unique - HTTP_500: - description: Internal server error - content: - application/json: - schema: - $ref: "#/components/schemas/errorObject" - examples: - "101": - value: - code: 101 - message: Internal server error - "102": - value: - code: 102 - message: Internal communication error - "602": - value: - code: 602 - message: IODD upload failed. Not enough memory - HTTP_501: - description: Not Implemented - content: - application/json: - schema: - $ref: "#/components/schemas/errorObject" - examples: - "105": - value: - code: 105 - message: IODD feature not supported - "106": - value: - code: 106 - message: MQTT feature not supported examples: # reusable examples exampleMasterConfiguration: From bb073375b4568fa08a9dba3fed547366529dca14 Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Mon, 1 Jul 2024 15:36:20 +0200 Subject: [PATCH 125/279] Add consistent error description for Authentication errors 401 and 403. --- JSON_for_IO-Link.yaml | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index c1ab4f2..dbf8f63 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -5886,6 +5886,15 @@ components: enum: [150] message: enum: ["Permission denied"] + errorObject_151: + allOf: + - $ref: "#/components/schemas/errorObject" + - type: object + properties: + code: + enum: [151] + message: + enum: ["Authentication information is missing or invalid"] errorObject_201: allOf: - $ref: "#/components/schemas/errorObject" @@ -6344,25 +6353,13 @@ components: content: application/json: schema: - $ref: "#/components/schemas/errorObject" - examples: - "150": - description: due to user management restrictions - value: - code: 150 - message: Permission denied + $ref: "#/components/schemas/errorObject_151" HTTP_403: description: Authentication information is not sufficient to access the resource content: application/json: schema: - $ref: "#/components/schemas/errorObject" - examples: - "150": - description: due to user management restrictions - value: - code: 150 - message: Permission denied + $ref: "#/components/schemas/errorObject_150" examples: # reusable examples exampleMasterConfiguration: From 360c05aae51b74ff58ada3939871734d81004020 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 12 Jul 2024 15:31:34 +0200 Subject: [PATCH 126/279] Fix componts indentation --- JSON_for_IO-Link.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 011d15a..d1c24f0 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2674,7 +2674,6 @@ paths: multipart/form-data: schema: $ref: "./schemas.yaml#/schemas/deviceFirmwareUpdatePost" - components: securitySchemes: basicAuth: @@ -2833,7 +2832,7 @@ components: minimum: 0 maximum: 255 required: true - + responses: HTTP_400: description: Bad request From 66e366f82343034345c1cfae505ac6c24b923213 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 12 Jul 2024 16:22:09 +0200 Subject: [PATCH 127/279] Add monitor endpoint and remove wireless quality as an additional endpoint --- JSON_for_IO-Link.yaml | 59 +++++++++----------- schemas.yaml | 126 +++++++++++++++++++++++++++++++----------- 2 files changed, 120 insertions(+), 65 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 011d15a..a5af1e2 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -556,6 +556,27 @@ paths: $ref: "#/components/responses/HTTP_403" "500": $ref: "#/components/responses/HTTP_500" + "/gateway/monitor": + get: + operationId: GetGatewayMonitor + tags: + - gateway + summary: Read current and voltage values of the Gateway. + description: Read current and voltage values of the primary and secondary rail of the Gateway. + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "./schemas.yaml#/schemas/gatewayMonitor" + + "401": + $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + $ref: "#/components/responses/HTTP_500" ################################################################################ # mqtt @@ -1431,31 +1452,6 @@ paths: "500": $ref: "#/components/responses/HTTP_500" - "/masters/{masterNumber}/ports/qualityall": - get: - operationId: GetMastersMasterNumberPortsQuality - tags: - - ports - parameters: - - $ref: "#/components/parameters/masterNumber" - summary: Read the link quality and the RSSI of all used Wireless-Ports (Wireless-Device and Wireless-Master). - description: Read the link quality and the RSSI of all used Wireless-Ports (Wireless-Device and Wireless-Master). - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "./schemas.yaml#/schemas/mastersPortsQualityallGet" - "401": - $ref: "#/components/responses/HTTP_401" - "403": - $ref: "#/components/responses/HTTP_403" - "404": - $ref: "#/components/responses/HTTP_404" - "500": - $ref: "#/components/responses/HTTP_500" - "/masters/{masterNumber}/ports/{portNumber}/capabilities": get: operationId: GetMastersMasterNumberPortsPortNumberCapabilities @@ -1818,23 +1814,23 @@ paths: "500": $ref: "#/components/responses/HTTP_500" - "/masters/{masterNumber}/ports/{portNumber}/quality": + "/masters/{masterNumber}/ports/{portNumber}/monitor": get: - operationId: GetMastersMasterNumberPortsPortNumberQuality + operationId: GetMastersMasterNumberPortsPortNumberMonitor tags: - ports + summary: Read the actual current, voltage and wireless information from a port. + description: Read the actual current, voltage and wireless information from a port. parameters: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" - summary: Read the link quality and the RSSI of the specified Wireless-Port (Wireless-Device and Wireless-Master). - description: Read the link quality and the RSSI of the specified Wireless-Port (Wireless-Device and Wireless-Master). responses: "200": description: Successful operation content: application/json: schema: - $ref: "./schemas.yaml#/schemas/mastersPortsQualityGet" + $ref: "./schemas.yaml#/schemas/portMonitor" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -1843,7 +1839,6 @@ paths: $ref: "#/components/responses/HTTP_404" "500": $ref: "#/components/responses/HTTP_500" - ################################################################################ # devices ################################################################################ @@ -2833,7 +2828,7 @@ components: minimum: 0 maximum: 255 required: true - + responses: HTTP_400: description: Bad request diff --git a/schemas.yaml b/schemas.yaml index f32956a..970f6c9 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -574,6 +574,76 @@ schemas: ipAddress: 192.168.1.13 subnetMask: 255.255.255.0 standardGateway: 192.168.1.1 + + voltageObject: + type: object + properties: + value: + type: number + minimum: 0 + example: 24 + unit: + type: string + minLength: 1 + maxLength: 32 + example: "V" + currentObject: + type: object + properties: + value: + type: number + minimum: 0 + example: 0.5 + unit: + type: string + minLength: 1 + maxLength: 32 + example: "A" + gatewayMonitor: + type: object + properties: + voltage: + type: object + properties: + primaryVoltage: + $ref: "#/schemas/voltageObject" + secondaryVoltage: + $ref: "#/schemas/voltageObject" + current: + type: object + properties: + primaryCurrent: + $ref: "#/schemas/currentObject" + secondaryCurrent: + $ref: "#/schemas/currentObject" + portMonitor: + type: object + properties: + voltage: + type: object + properties: + primaryVoltage: + $ref: "#/schemas/voltageObject" + secondaryVoltage: + $ref: "#/schemas/voltageObject" + cqVoltage: + $ref: "#/schemas/voltageObject" + iqVoltage: + $ref: "#/schemas/voltageObject" + current: + type: object + properties: + primaryCurrent: + $ref: "#/schemas/currentObject" + secondaryCurrent: + $ref: "#/schemas/currentObject" + cqCurrent: + $ref: "#/schemas/currentObject" + iqCurrent: + $ref: "#/schemas/currentObject" + wirelessQuality: + $ref: "#/schemas/wirelessPortQuality" + mqttConfigurationGetPost: type: object required: @@ -1461,40 +1531,30 @@ schemas: Mode: ROAMING txPower: 31 - mastersPortsQualityallGet: # TODO: IOLW - type: array - items: - type: object - properties: - portNumber: - $ref: "#/schemas/portNumber" - lqiMaster: - type: integer - minimum: 0 - maximum: 100 - rssiMaster: - type: integer - minimum: -128 - maximum: 20 - lqiDevice: - type: integer - minimum: 0 - maximum: 100 - rssiDevice: - type: integer - minimum: -128 - maximum: 20 + wirelessPortQuality: + type: object + properties: + lqiMaster: + type: integer + minimum: 0 + maximum: 100 + rssiMaster: + type: integer + minimum: -128 + maximum: 20 + lqiDevice: + type: integer + minimum: 0 + maximum: 100 + rssiDevice: + type: integer + minimum: -128 + maximum: 20 example: - - portNumber: 1 - lqiMaster: 100 - rssiMaster: -40 - lqiDevice: 100 - rssiDevice: -39 - - portNumber: 2 - lqiMaster: 100 - rssiMaster: -60 - lqiDevice: 100 - rssiDevice: -61 + lqiMaster: 100 + rssiMaster: -40 + lqiDevice: 100 + rssiDevice: -39 mastersPortsQualityGet: # TODO: IOLW properties: From e8a2e261dc6b939b32be7008a7827c928959d4a2 Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 16 Jul 2024 09:50:30 +0200 Subject: [PATCH 128/279] Add current object to reuse for master and device capability endpoint --- schemas.yaml | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/schemas.yaml b/schemas.yaml index 970f6c9..eebf784 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -287,18 +287,7 @@ schemas: numberOfPorts: $ref: "#/schemas/portNumber" maxPowerSupply: - type: object - required: - - value - - unit - properties: - value: - type: number - minimum: 0 - unit: - type: string - minLength: 1 - maxLength: 32 + $ref: "#/schemas/currentObject" eventTime: description: >- Timestamp (format defined in DIN ISO 8601). This field can give an @@ -903,15 +892,7 @@ schemas: maxPowerSupply: description: >- maxPowerSupply is not supported in IO-Link Wireless. - type: object - required: - - value - - unit - properties: - value: - type: number - unit: - type: string + $ref: "#/schemas/currentObject" portConfigurationGet: type: object From ba32bf0a4c22bc73c2d5514efe6da5627e6d439d Mon Sep 17 00:00:00 2001 From: roeseko Date: Tue, 16 Jul 2024 12:00:34 +0200 Subject: [PATCH 129/279] Add activate property to mqtt topic configuration endpoint --- JSON_for_IO-Link.yaml | 39 +++++++++++++++++++-------------------- schemas.yaml | 25 +++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index a1b03be..b115fcd 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -664,7 +664,7 @@ paths: $ref: "./schemas.yaml#/schemas/mqttConfigurationTopicGet" example: - topicId: 1 - activated: true + activate: true topicName: Sensor34/processData qos: 1_AT_LEAST_ONCE deviceAlias: DT35 @@ -675,13 +675,13 @@ paths: value: 10 unit: ms - topicId: 2 - activated: true + activate: true topicName: Sensor34/event qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 event: {} - topicId: 3 - activated: false + activate: false topicName: PD qos: 0_ONLY_ONCE deviceAlias: BNI_IOL @@ -690,7 +690,7 @@ paths: format: iodd onChange: true - topicId: 4 - activated: false + activate: false topicName: DT35_CycleTime qos: 0_ONLY_ONCE deviceAlias: DT35 @@ -700,7 +700,7 @@ paths: format: iodd onChange: true - topicId: 5 - activated: true + activate: true topicName: deviceTemperature qos: 0_ONLY_ONCE deviceAlias: master1port2 @@ -735,7 +735,7 @@ paths: examples: Process Data: value: - activated: true + activate: true qos: 1_AT_LEAST_ONCE deviceAlias: DT35 processData: @@ -746,13 +746,13 @@ paths: unit: ms Event: value: - activated: true + activate: true qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 event: {} Parameter (Index): value: - activated: false + activate: false qos: 0_ONLY_ONCE deviceAlias: master1port1 parameter: @@ -763,7 +763,7 @@ paths: unit: ms Parameter (ParameterName): value: - activated: true + activate: true topicName: deviceTemperature qos: 0_ONLY_ONCE deviceAlias: AHM36A @@ -812,7 +812,7 @@ paths: Process Data: value: topicId: 1 - activated: true + activate: true topicName: PD input qos: 1_AT_LEAST_ONCE deviceAlias: DT35 @@ -825,7 +825,7 @@ paths: Event: value: topicId: 2 - activated: true + activate: true topicName: Event qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 @@ -833,7 +833,7 @@ paths: Parameter (Index): value: topicId: 3 - activated: true + activate: true topicName: devvice/indexXY qos: 0_ONLY_ONCE deviceAlias: master1port1 @@ -846,7 +846,7 @@ paths: Parameter (ParameterName): value: topicId: 5 - activated: true + activate: true topicName: deviceTemperature qos: 0_ONLY_ONCE deviceAlias: AHM36A @@ -879,18 +879,18 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/mqttConfigurationTopicsTopicPost" + $ref: "./schemas.yaml#/schemas/mqttConfigurationTopicsTopicPost" examples: Deactivate Topic: value: - activated: false + activate: false Activate Topic: value: - activated: true + activate: true Process Data: value: topicId: 1 - activated: true + activate: true topicName: PD input qos: 1_AT_LEAST_ONCE deviceAlias: DT35 @@ -903,7 +903,7 @@ paths: Event: value: topicId: 2 - activated: true + activate: true topicName: Event qos: 1_AT_LEAST_ONCE deviceAlias: TAD081 @@ -923,7 +923,7 @@ paths: Parameter (ParameterName): value: topicId: 5 - activated: true + activate: true topicName: deviceTemperature qos: 0_ONLY_ONCE deviceAlias: AHM36A @@ -2930,7 +2930,6 @@ components: minimum: 0 maximum: 255 required: true - responses: HTTP_400: description: Bad request diff --git a/schemas.yaml b/schemas.yaml index f32956a..d90390c 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -636,6 +636,8 @@ schemas: - qos - deviceAlias properties: + activate: + type: boolean qos: type: string enum: @@ -660,6 +662,29 @@ schemas: topicName: type: string - $ref: "#/schemas/mqttConfigurationTopic" + mqttConfigurationTopicsTopicPost: + anyOf: + - type: object + properties: + topicId: + type: integer + - type: object + properties: + topicName: + type: string + - $ref: "#/schemas/mqttConfigurationTopic" + example: + topicId: 1 + activate: true + topicName: PD input + qos: 1_AT_LEAST_ONCE + deviceAlias: DT35 + processData: + direction: getData + format: iodd + interval: + value: 10 + unit: ms mqttConfigurationTopicGet: allOf: - type: object From 3b82c52f9a23d25fc7304de5e11fe41b47b93580 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 22 Jul 2024 16:08:32 +0200 Subject: [PATCH 130/279] Add note to monitor endpoint --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index f0f7743..c690fc2 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2252,7 +2252,7 @@ paths: tags: - ports summary: Read the actual current, voltage and wireless information from a port. - description: Read the actual current, voltage and wireless information from a port. + description: Read the actual current, voltage and wireless information from a port. The response object can vary depending on the port configuration or port type. parameters: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" From 3008f9d2dc99ec6eb7962cb87ace3fde5df54eab Mon Sep 17 00:00:00 2001 From: roeseko Date: Wed, 25 Sep 2024 09:19:53 +0200 Subject: [PATCH 131/279] Make voltage and current properties mandatory --- schemas.yaml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/schemas.yaml b/schemas.yaml index 04c02d5..c487f80 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -566,11 +566,14 @@ schemas: voltageObject: type: object + required: + - value + - unit properties: value: type: number minimum: 0 - example: 24 + example: 24.0 unit: type: string minLength: 1 @@ -578,6 +581,9 @@ schemas: example: "V" currentObject: type: object + required: + - value + - unit properties: value: type: number @@ -3445,7 +3451,8 @@ schemas: code: enum: [601] message: - enum: ["IODD (representation) for this IO-Link device is not available"] + enum: + ["IODD (representation) for this IO-Link device is not available"] errorObject_602: allOf: - $ref: "#/schemas/errorObject" @@ -3508,4 +3515,4 @@ schemas: code: enum: [703] message: - enum: ["Data set combination incompatible"] \ No newline at end of file + enum: ["Data set combination incompatible"] From 3436970df096ad17f5faa605e7360ec3271920a3 Mon Sep 17 00:00:00 2001 From: alexkrizsan <108268604+alexkrizsan@users.noreply.github.com> Date: Wed, 9 Oct 2024 13:46:48 +0200 Subject: [PATCH 132/279] Adding indication for DeviceFW Update support. --- JSON_for_IO-Link.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 5d6efdc..38497a2 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3596,8 +3596,8 @@ paths: operationId: GetDevicesDeviceAliasFirmwareUpdateStatus tags: - devices - description: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. - summary: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. + description: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. Device FW Update support is required. + summary: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. Device FW Update support is required. parameters: - $ref: "#/components/parameters/deviceAlias" responses: @@ -3638,8 +3638,8 @@ paths: operationId: PostDevicesDeviceAliasFirmwareUpdate tags: - devices - summary: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. - description: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. + summary: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. Device FW Update support is required. + description: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. Device FW Update support is required. parameters: - $ref: "#/components/parameters/deviceAlias" responses: From 3ed7b3923b9f1b104c9e2d57fa9fe7feb5bcad2f Mon Sep 17 00:00:00 2001 From: alexkrizsan <108268604+alexkrizsan@users.noreply.github.com> Date: Wed, 9 Oct 2024 13:50:00 +0200 Subject: [PATCH 133/279] Adding deviceFwUpdateSupported to GET /gateway/capabilities reponse schema. --- schemas.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/schemas.yaml b/schemas.yaml index e1a187a..e1f3ebd 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -270,15 +270,19 @@ schemas: required: - ioddSupported - mqttSupported + - deviceFwUpdateSupported type: object properties: ioddSupported: type: boolean mqttSupported: type: boolean + deviceFwUpdateSupported: + type: boolean example: ioddSupported: true mqttSupported: true + deviceFwUpdateSupported: true masterCapabilitiesGet: required: - numberOfPorts @@ -3492,4 +3496,4 @@ schemas: code: enum: [703] message: - enum: ["Data set combination incompatible"] \ No newline at end of file + enum: ["Data set combination incompatible"] From af051aa1600ee490f2d8983f95f3ab4eb902a23c Mon Sep 17 00:00:00 2001 From: Alex Krizsan Date: Wed, 9 Oct 2024 13:59:27 +0200 Subject: [PATCH 134/279] Reverting newline change in schemas.yaml. --- schemas.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schemas.yaml b/schemas.yaml index e1f3ebd..d275fd8 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -3496,4 +3496,4 @@ schemas: code: enum: [703] message: - enum: ["Data set combination incompatible"] + enum: ["Data set combination incompatible"] \ No newline at end of file From 865c02be65a04a5e7484a1194f6833dfc7fdb849 Mon Sep 17 00:00:00 2001 From: alexkrizsan <108268604+alexkrizsan@users.noreply.github.com> Date: Wed, 9 Oct 2024 15:29:03 +0200 Subject: [PATCH 135/279] Changing GET /devices/{deviceAlias}/processdata/value response schema description, changing getData and setData to required property. --- schemas.yaml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/schemas.yaml b/schemas.yaml index e1a187a..49965e6 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1781,13 +1781,15 @@ schemas: deviceProcessDataValueGet: type: object description: > - The cqValue is present in the 'getData' object if the CQ (pin4) is configured as - digital input. The cqValue is present in the 'setData' object if the CQ (pin4) - is configured as digital output. The iolink is present either in the - 'getData' or 'setData' or both objects if the CQ (pin4) is configured to IO-Link mode. - The iqValue is present in the 'getData' object if the IQ (pin2) is configured as - digital input. The iqValue is present in the 'setData' object if the IQ (pin4) - is configured as digital output. + The 'cqValue' is present in the 'getData' object if the CQ (pin4) is configured as digital input. + The 'cqValue' is present in the 'setData' object if the CQ (pin4) is configured as digital output. + The 'iolink' is present in the 'getData' if the port is configured to IO-Link mode and the device provides input process data. + The 'iolink' is present in the 'setData' if the port is configured to IO-Link mode and the device provides output process data. + The 'iqValue' is present in the 'getData' object if the IQ (pin2) is configured as digital input. + The 'iqValue' is present in the 'setData' object if the IQ (pin4) is configured as digital output. + required: + - getData + - setData properties: getData: $ref: "#/schemas/processDataValue" @@ -3492,4 +3494,4 @@ schemas: code: enum: [703] message: - enum: ["Data set combination incompatible"] \ No newline at end of file + enum: ["Data set combination incompatible"] From 004030476075c743210f1abadde9b00e9aa0d69e Mon Sep 17 00:00:00 2001 From: Alex Krizsan Date: Wed, 9 Oct 2024 15:41:46 +0200 Subject: [PATCH 136/279] Reverting newline change in schemas.yaml. --- schemas.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schemas.yaml b/schemas.yaml index 49965e6..d8e23f9 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -3494,4 +3494,4 @@ schemas: code: enum: [703] message: - enum: ["Data set combination incompatible"] + enum: ["Data set combination incompatible"] \ No newline at end of file From e0ee94fc253d8c452e328555b4939d774e8e199e Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 18 Oct 2024 14:30:17 +0200 Subject: [PATCH 137/279] Add missing not supported errors and mark endpoints/ groups as optional --- JSON_for_IO-Link.yaml | 51 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index a27ba90..344bece 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -76,9 +76,9 @@ tags: - name: gateway description: Access to parameters of the JSON gateway - name: mqtt - description: Access to the parameters of the MQTT client + description: Access to the parameters of the MQTT client. Optional. - name: iodds - description: Access to the IODDs + description: Access to the IODDs. Optional. - name: masters description: Access to parameters of the IO-Link master itself - name: ports @@ -406,6 +406,12 @@ paths: $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" + "404": + description: Not Found + content: + application/json: + schema: + $ref: "./schemas.yaml#/schemas/errorObject_103" "500": description: Internal Server Error content: @@ -433,6 +439,12 @@ paths: $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" + "404": + description: Not Found + content: + application/json: + schema: + $ref: "./schemas.yaml#/schemas/errorObject_103" "500": description: Internal Server Error content: @@ -607,7 +619,7 @@ paths: operationId: GetGatewayMonitor tags: - gateway - summary: Read current and voltage values of the Gateway. + summary: Read current and voltage values of the Gateway. Optional. description: Read current and voltage values of the primary and secondary rail of the Gateway. responses: "200": @@ -616,11 +628,16 @@ paths: application/json: schema: $ref: "./schemas.yaml#/schemas/gatewayMonitor" - "401": $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" + "404": + description: Not Found + content: + application/json: + schema: + $ref: "./schemas.yaml#/schemas/errorObject_103" "500": description: Internal Server Error content: @@ -1723,6 +1740,12 @@ paths: $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" + "404": + description: Not Found + content: + application/json: + schema: + $ref: "./schemas.yaml#/schemas/errorObject_103" "500": description: Internal Server Error content: @@ -1752,6 +1775,12 @@ paths: $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" + "404": + description: Not Found + content: + application/json: + schema: + $ref: "./schemas.yaml#/schemas/errorObject_103" "500": description: Internal Server Error content: @@ -1793,6 +1822,12 @@ paths: $ref: "#/components/responses/HTTP_401" "403": $ref: "#/components/responses/HTTP_403" + "404": + description: Not Found + content: + application/json: + schema: + $ref: "./schemas.yaml#/schemas/errorObject_103" "500": description: Internal Server Error content: @@ -2346,6 +2381,7 @@ paths: application/json: schema: oneOf: + - $ref: "./schemas.yaml#/schemas/errorObject_103" - $ref: "./schemas.yaml#/schemas/errorObject_302" - $ref: "./schemas.yaml#/schemas/errorObject_303" "500": @@ -2362,7 +2398,7 @@ paths: operationId: GetMastersMasterNumberPortsPortNumberMonitor tags: - ports - summary: Read the actual current, voltage and wireless information from a port. + summary: Read the actual current, voltage and wireless information from a port. Optional. description: Read the actual current, voltage and wireless information from a port. The response object can vary depending on the port configuration or port type. parameters: - $ref: "#/components/parameters/masterNumber" @@ -2384,6 +2420,7 @@ paths: application/json: schema: oneOf: + - $ref: "./schemas.yaml#/schemas/errorObject_103" - $ref: "./schemas.yaml#/schemas/errorObject_302" - $ref: "./schemas.yaml#/schemas/errorObject_303" "500": @@ -3586,8 +3623,8 @@ paths: operationId: GetDevicesDeviceAliasFirmwareUpdateStatus tags: - devices + summary: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. Optional. description: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. - summary: Gives the stage and progress of a running firmware update. The active property shows if an update is currently in progress. parameters: - $ref: "#/components/parameters/deviceAlias" responses: @@ -3628,7 +3665,7 @@ paths: operationId: PostDevicesDeviceAliasFirmwareUpdate tags: - devices - summary: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. + summary: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. Optional. description: Perform a firmware update for a specific Device with an iolfw-file according to specification IOL-Profile_Firmware-Update_V11_10082_Sep19. parameters: - $ref: "#/components/parameters/deviceAlias" From 311354294f7f841b2d0091c9bff74d94ae83d50d Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 21 Oct 2024 14:11:19 +0200 Subject: [PATCH 138/279] Add description for IODD assignment --- JSON_for_IO-Link.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 344bece..2b84f2b 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1389,8 +1389,7 @@ paths: - iodds summary: Store or update an IODD. description: > - It is not needed to specify the identification data for this action as the - parser can read this information. + The assignment of an IODD to a device shall be done by matching vendor and device id. Only one IODD per vendor and device id is allowed. In case IODD with vendor and device id is already present on the gateway, this file should be replaced by the new one. This endpoint is mandatory, if IODD feature is supported. requestBody: required: true content: From 7b53f0165464cbfdffd7b86a4e3a5a84f76a80a0 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 21 Oct 2024 15:06:53 +0200 Subject: [PATCH 139/279] Fix port schema --- JSON_for_IO-Link.yaml | 4 +- schemas.yaml | 125 +++++++++++++++++++++++++----------------- 2 files changed, 77 insertions(+), 52 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 2b84f2b..960db88 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1854,7 +1854,9 @@ paths: content: application/json: schema: - $ref: "./schemas.yaml#/schemas/mastersPortsGet" + oneOf: + - $ref: "./schemas.yaml#/schemas/mastersPortsGet" + - $ref: "./schemas.yaml#/schemas/mastersPortsGetWireless" examples: IO-Link: value: diff --git a/schemas.yaml b/schemas.yaml index aa4b352..eea63dd 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -257,6 +257,19 @@ schemas: minimum: 0 maximum: 255 example: 12 + statusInfo: + type: string + enum: # see Terminology in V.113, Table E.4 PortStatusList + - COMMUNICATION_LOST # NO_DEVICE + - DEACTIVATED # DEACTIVATED + - INCORRECT_DEVICE # PORT_DIAG + - DEVICE_STARTING # + - DEVICE_ONLINE # OPERATE + - DIGITAL_INPUT_C/Q # DI_CQ + - DIGITAL_OUTPUT_C/Q # DO_CQ + - NOT_AVAILABLE # NOT_AVAILABLE + - PORT_POWER_OFF # PORT_POWER_OFF + - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE masterIdentificationPost: type: object properties: @@ -494,6 +507,7 @@ schemas: maxLength: 64 productId: type: string + minLength: 1 hardwareRevision: type: string minLength: 1 @@ -1357,59 +1371,68 @@ schemas: example: txPower: 31 - mastersPortsGet: # TODO: IOLW + portObject: + type: object + required: + - portNumber + - statusInfo + - deviceAlias + properties: + portNumber: + $ref: "#/schemas/portNumber" + deviceAlias: + $ref: "#/schemas/deviceAlias" + statusInfo: + $ref: "#/schemas/statusInfo" + deviceInfo: + description: >- + Wireless Master only. + type: object + properties: + vendorId: + $ref: "#/schemas/vendorId" + deviceId: + $ref: "#/schemas/deviceId" + productName: + $ref: "#/schemas/productName" + + portWirelessObject: + allOf: + - $ref: "#/schemas/portObject" + - type: object + required: + - slotNumber + - trackNumber + - slotType + properties: + slotNumber: + description: >- + slot number of the Wireless-Device (Wireless Master only). + $ref: "#/schemas/wirelessSlotNumber" + trackNumber: + description: >- + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). + $ref: "#/schemas/wirelessTrackNumber" + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). + type: string + enum: + - "SSLOT" + - "DSLOT" + + mastersPortsGet: + name: masterPortSchema type: array items: - type: object - required: - - portNumber - - statusInfo - - deviceAlias - properties: - portNumber: - $ref: "#/schemas/portNumber" - deviceAlias: - $ref: "#/schemas/deviceAlias" - statusInfo: - type: string - enum: # see Terminology in V.113, Table E.4 PortStatusList - - COMMUNICATION_LOST # NO_DEVICE - - DEACTIVATED # DEACTIVATED - - INCORRECT_DEVICE # PORT_DIAG - - DEVICE_STARTING # - - DEVICE_ONLINE # OPERATE - - DIGITAL_INPUT_C/Q # DI_CQ - - DIGITAL_OUTPUT_C/Q # DO_CQ - - NOT_AVAILABLE # NOT_AVAILABLE - - PORT_POWER_OFF # PORT_POWER_OFF - - PAIRING_FAULT # PAIRING_TIMEOUT, PAIRING_WRONG_SLOTTYPE - slotNumber: - description: >- - slot number of the Wireless-Device (Wireless Master only). - $ref: "#/schemas/wirelessSlotNumber" - trackNumber: - description: >- - track number of the Wireless-Device, maximum depends on the number of - available tracks on the Wireless-Master (Wireless Master only). - $ref: "#/schemas/wirelessTrackNumber" - slotType: - description: >- - Single Slot or Double Slot (Wireless Master only). - type: string - enum: - - "SSLOT" - - "DSLOT" - deviceInfo: - description: >- - Wireless Master only. - type: object - properties: - vendorId: - $ref: "#/schemas/vendorId" - deviceId: - $ref: "#/schemas/deviceId" - productName: - $ref: "#/schemas/productName" + $ref: "#/schemas/portObject" + + mastersPortsGetWireless: + name: masterWirelessPortSchema + type: array + items: + $ref: "#/schemas/portWirelessObject" mastersPortsStatusGet: # TODO: IOLW properties: From 4c1bf0758e90c2e1dbbd4b706808afd8725746c6 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 21 Oct 2024 17:27:33 +0200 Subject: [PATCH 140/279] Fix errors --- JSON_for_IO-Link.yaml | 2 +- schemas.yaml | 30 ++++++++++++++++-------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 960db88..fe8fc18 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -69,7 +69,7 @@ security: - {} - basicAuth: [] - bearerAuth: [] - - oauth2: [Maintenance] + - oauth2: [MaintenanceRole] tags: - name: general description: Access to general informations diff --git a/schemas.yaml b/schemas.yaml index eea63dd..fafa00a 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1336,20 +1336,22 @@ schemas: - ScanEnded scanResults: type: array - properties: - slotType: - type: string - enum: - - "SSLOT" - - "DSLOT" - uniqueId: - type: string - minLength: 26 - maxLength: 26 - iolinkRevision: - $ref: "#/schemas/iolinkRevision" - lastSeen: - $ref: "#/schemas/eventTime" + items: + type: object + properties: + slotType: + type: string + enum: + - "SSLOT" + - "DSLOT" + uniqueId: + type: string + minLength: 26 + maxLength: 26 + iolinkRevision: + $ref: "#/schemas/iolinkRevision" + lastSeen: + $ref: "#/schemas/eventTime" example: scanStatus: ScanEnded scanResults: From 265a2aca637a6fed213cb5cd458b9f9932d4d3d5 Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 31 Oct 2024 13:38:27 +0100 Subject: [PATCH 141/279] Fix errors for real --- JSON_for_IO-Link.yaml | 4 ++-- schemas.yaml | 35 +++++++++++++++++++++-------------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 344bece..65f15af 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3727,8 +3727,8 @@ components: tokenUrl: https://io-link-vendor.com/protocol/openid-connect/token authorizationUrl: https://io-link-vendor.com/protocol/openid-connect/auth scopes: - MaintenanceRole: priviledged access for reading and writing all endpoints - SpecialistRole: more priviledged access for advanced features like firmware update + Maintenance: priviledged access for reading and writing all endpoints + Specialist: more priviledged access for advanced features like firmware update parameters: artifact: name: artifact diff --git a/schemas.yaml b/schemas.yaml index aa4b352..164cf47 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1322,20 +1322,27 @@ schemas: - ScanEnded scanResults: type: array - properties: - slotType: - type: string - enum: - - "SSLOT" - - "DSLOT" - uniqueId: - type: string - minLength: 26 - maxLength: 26 - iolinkRevision: - $ref: "#/schemas/iolinkRevision" - lastSeen: - $ref: "#/schemas/eventTime" + items: + type: object + required: + - slotType + - uniqueId + - iolinkRevision + - lastSeen + properties: + slotType: + type: string + enum: + - "SSLOT" + - "DSLOT" + uniqueId: + type: string + minLength: 26 + maxLength: 26 + iolinkRevision: + $ref: "#/schemas/iolinkRevision" + lastSeen: + $ref: "#/schemas/eventTime" example: scanStatus: ScanEnded scanResults: From 4b694c8d341373a1cce33c0ce1ae2aa84a3a4d71 Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 31 Oct 2024 13:51:53 +0100 Subject: [PATCH 142/279] Fix errors for real second try --- JSON_for_IO-Link.yaml | 2 +- schemas.yaml | 30 +++++++++++++----------------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index d86f537..9c61f15 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -69,7 +69,7 @@ security: - {} - basicAuth: [] - bearerAuth: [] - - oauth2: [MaintenanceRole] + - oauth2: [Maintenance] tags: - name: general description: Access to general informations diff --git a/schemas.yaml b/schemas.yaml index c3f5474..ecd7f7c 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1343,22 +1343,20 @@ schemas: - uniqueId - iolinkRevision - lastSeen - items: - type: object properties: - slotType: - type: string - enum: - - "SSLOT" - - "DSLOT" - uniqueId: - type: string - minLength: 26 - maxLength: 26 - iolinkRevision: - $ref: "#/schemas/iolinkRevision" - lastSeen: - $ref: "#/schemas/eventTime" + slotType: + type: string + enum: + - "SSLOT" + - "DSLOT" + uniqueId: + type: string + minLength: 26 + maxLength: 26 + iolinkRevision: + $ref: "#/schemas/iolinkRevision" + lastSeen: + $ref: "#/schemas/eventTime" example: scanStatus: ScanEnded scanResults: @@ -1432,13 +1430,11 @@ schemas: - "DSLOT" mastersPortsGet: - name: masterPortSchema type: array items: $ref: "#/schemas/portObject" mastersPortsGetWireless: - name: masterWirelessPortSchema type: array items: $ref: "#/schemas/portWirelessObject" From f994a603fe143c8a317a55832f08eec4a3add155 Mon Sep 17 00:00:00 2001 From: roeseko Date: Thu, 31 Oct 2024 15:24:44 +0100 Subject: [PATCH 143/279] Add description for mandatory endpoints for wireless master --- JSON_for_IO-Link.yaml | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 9c61f15..8c97098 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1645,7 +1645,7 @@ paths: tags: - masters summary: Read the actual configuration of the specified Master. - description: Read the actual configuration of the specified Master. + description: Read the actual configuration of the specified Master. This endpoint is mandatory, if wireless feature is supported. parameters: - $ref: "#/components/parameters/masterNumber" responses: @@ -1656,8 +1656,6 @@ paths: schema: $ref: "./schemas.yaml#/schemas/mastersConfigurationGetPost" examples: - IO-Link: - $ref: "#/components/examples/exampleMasterConfiguration" IO-Link_Wireless: $ref: "#/components/examples/exampleWirelessMasterConfiguration" "401": @@ -1677,7 +1675,7 @@ paths: tags: - masters summary: Write the configuration of the specified Master. - description: Write the configuration of the specified Master. + description: Write the configuration of the specified Master. This endpoint is mandatory, if wireless feature is supported. parameters: - $ref: "#/components/parameters/masterNumber" requestBody: @@ -1719,13 +1717,13 @@ paths: - $ref: "./schemas.yaml#/schemas/errorObject_101" - $ref: "./schemas.yaml#/schemas/errorObject_102" - "/masters/{masterNumber}/trackstatus": #TODO: wireles + "/masters/{masterNumber}/trackstatus": get: operationId: GetMastersMasterNumberTrackstatus tags: - masters summary: Read the actual Track status of the specified Wireless-Master. - description: Read the actual Track status of the specified Wireless-Master. + description: Read the actual Track status of the specified Wireless-Master. This endpoint is mandatory, if wireless feature is supported. parameters: - $ref: "#/components/parameters/masterNumber" responses: @@ -1754,13 +1752,13 @@ paths: - $ref: "./schemas.yaml#/schemas/errorObject_101" - $ref: "./schemas.yaml#/schemas/errorObject_102" - "/masters/{masterNumber}/scan": #TODO: wireles + "/masters/{masterNumber}/scan": get: operationId: GetMastersMasterNumberScan tags: - masters summary: Read the actual scan results of the specified Wireless-Master. - description: Read the actual scan results of the specified Wireless-Master. + description: Read the actual scan results of the specified Wireless-Master. This endpoint is mandatory, if wireless feature is supported. parameters: - $ref: "#/components/parameters/masterNumber" responses: @@ -1793,7 +1791,7 @@ paths: tags: - masters summary: To start a scan of the specified Wireless-Master. - description: To start a scan of the specified Wireless-Master. + description: To start a scan of the specified Wireless-Master. This endpoint is mandatory, if wireless feature is supported. parameters: - $ref: "#/components/parameters/masterNumber" requestBody: @@ -2342,7 +2340,7 @@ paths: tags: - ports summary: To pair a Wireless-Device with the specified Wireless-Port. - description: To pair a Wireless-Device with the specified Wireless-Port. + description: To pair a Wireless-Device with the specified Wireless-Port. This endpoint is mandatory, if wireless feature is supported. parameters: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" @@ -2400,7 +2398,7 @@ paths: tags: - ports summary: Read the actual current, voltage and wireless information from a port. Optional. - description: Read the actual current, voltage and wireless information from a port. The response object can vary depending on the port configuration or port type. + description: Read the actual current, voltage and wireless information from a port. The response object can vary depending on the port configuration or port type. This endpoint providing the wireless quality is mandatory, if wireless feature is supported. parameters: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" From bfef51b52b80574483ab3cc5c297c85d9dfd082c Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Mon, 4 Nov 2024 14:09:53 +0100 Subject: [PATCH 144/279] First part of issue #146: fix the description of the dataStorageGetPost object. --- schemas.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/schemas.yaml b/schemas.yaml index aa4b352..1c70c8a 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1785,7 +1785,11 @@ schemas: minProperties: 0 maxProperties: 0 content: - description: Base64 coded DS data Ojects. Max size = 2KB*1.33. + description: >- + Base64 encoded DataStorageObject. + The contents of the DataStorageObject are described in E.6 of the "IO-Link Interface and System Specification 1.1.3", + it consists of the "Associated header information for stored DS data objects" as described in Table G.2, + followed by the "stored DS data object" as described in Table G.1. type: string processDataValue: type: object From 6a9f325d92c84e1b37fec2f6cb78fd83c659344e Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 22 Nov 2024 16:35:14 +0100 Subject: [PATCH 145/279] Adjust description text and change empty data storage example --- JSON_for_IO-Link.yaml | 35 +++++++++++++++++------------------ schemas.yaml | 8 ++++++-- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 8c97098..78c7cde 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -620,7 +620,7 @@ paths: tags: - gateway summary: Read current and voltage values of the Gateway. Optional. - description: Read current and voltage values of the primary and secondary rail of the Gateway. + description: Read current and voltage values of the primary and secondary rail of the Gateway. This feature is optional. responses: "200": description: Successful operation @@ -709,7 +709,7 @@ paths: - mqtt summary: >- Update the MQTT configuration of the Gateway. - description: Update the MQTT configuration of the Gateway. + description: Update the MQTT configuration of the Gateway. This endpoint is mandatory, if MQTT feature is supported. requestBody: required: true content: @@ -780,7 +780,7 @@ paths: tags: - mqtt summary: Get the list of MQTT topics. - description: Get the list of MQTT topics. + description: Get the list of MQTT topics. This endpoint is mandatory, if MQTT feature is supported. responses: "200": description: Successful operation @@ -865,7 +865,7 @@ paths: tags: - mqtt summary: Create a new MQTT topic. - description: Create a new MQTT topic. + description: Create a new MQTT topic. This endpoint is mandatory, if MQTT feature is supported. requestBody: required: true content: @@ -964,7 +964,7 @@ paths: tags: - mqtt summary: Get one MQTT topic. - description: Get one MQTT topic. + description: Get one MQTT topic. This endpoint is mandatory, if MQTT feature is supported. parameters: - $ref: "#/components/parameters/mqttTopicId" responses: @@ -1053,7 +1053,7 @@ paths: tags: - mqtt summary: Change or deactivate one MQTT topic. - description: Change or deactivate one MQTT topic. + description: Change or deactivate one MQTT topic. This endpoint is mandatory, if MQTT feature is supported. requestBody: required: true content: @@ -1149,7 +1149,7 @@ paths: tags: - mqtt summary: Delete a specific MQTT topic. - description: Delete a specific MQTT topic. + description: Delete a specific MQTT topic. This endpoint is mandatory, if MQTT feature is supported. parameters: - $ref: "#/components/parameters/mqttTopicId" responses: @@ -1191,7 +1191,7 @@ paths: tags: - mqtt summary: Read the connection status of the MQTT client to the MQTT server. - description: Read the connection status of the MQTT client to the MQTT server. + description: Read the connection status of the MQTT client to the MQTT server. This endpoint is mandatory, if MQTT feature is supported. responses: "200": description: Successful operation @@ -1233,8 +1233,7 @@ paths: summary: >- Get a list of all IODD (representations) that are available on the Gateway. description: >- - Only one version of an IODD is stored on the webserver at the same time - for one vendorId-deviceId-iolinkRevision-combination. + Only one version of an IODD is stored on the webserver at the same time for one vendorId-deviceId-iolinkRevision-combination. This endpoint is mandatory, if IODD feature is supported. parameters: - $ref: "#/components/parameters/vendorId" - $ref: "#/components/parameters/deviceId" @@ -1281,7 +1280,7 @@ paths: tags: - iodds summary: Delete a specific IODD representation. - description: Delete a specific IODD representation and all related artifacts. + description: Delete a specific IODD representation and all related artifacts. This endpoint is mandatory, if IODD feature is supported. parameters: - $ref: "#/components/parameters/vendorId" - $ref: "#/components/parameters/deviceId" @@ -1328,7 +1327,7 @@ paths: tags: - iodds summary: Get a specific IODD or other IODD artifacts like device image. Optional. - description: Get a specific IODD or other IODD artifacts like device image. + description: Get a specific IODD or other IODD artifacts like device image. This feature is optional. parameters: - $ref: "#/components/parameters/vendorId" - $ref: "#/components/parameters/deviceId" @@ -1723,7 +1722,7 @@ paths: tags: - masters summary: Read the actual Track status of the specified Wireless-Master. - description: Read the actual Track status of the specified Wireless-Master. This endpoint is mandatory, if wireless feature is supported. + description: Read the actual Track status of the specified Wireless-Master. This endpoint is mandatory, if master has wireless ports. parameters: - $ref: "#/components/parameters/masterNumber" responses: @@ -1758,7 +1757,7 @@ paths: tags: - masters summary: Read the actual scan results of the specified Wireless-Master. - description: Read the actual scan results of the specified Wireless-Master. This endpoint is mandatory, if wireless feature is supported. + description: Read the actual scan results of the specified Wireless-Master. This endpoint is mandatory, if master has wireless ports. parameters: - $ref: "#/components/parameters/masterNumber" responses: @@ -1791,7 +1790,7 @@ paths: tags: - masters summary: To start a scan of the specified Wireless-Master. - description: To start a scan of the specified Wireless-Master. This endpoint is mandatory, if wireless feature is supported. + description: To start a scan of the specified Wireless-Master. This endpoint is mandatory, if master has wireless ports. parameters: - $ref: "#/components/parameters/masterNumber" requestBody: @@ -2240,10 +2239,10 @@ paths: Empty Data Storage: value: header: - vendorId: 26 - deviceId: 65253 + vendorId: 0 + deviceId: 0 iolinkRevision: "1.1" - parameterChecksum: 123456 + parameterChecksum: 0 content: >- '' "401": diff --git a/schemas.yaml b/schemas.yaml index ecd7f7c..ed27de9 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1801,9 +1801,13 @@ schemas: - iolinkRevision properties: vendorId: - $ref: "#/schemas/vendorId" + type: integer + minimum: 0 + maximum: 65535 deviceId: - $ref: "#/schemas/deviceId" + type: integer + minimum: 0 + maximum: 16777215 iolinkRevision: $ref: "#/schemas/iolinkRevision" parameterChecksum: From d692b8dc7806133c4a6aa658e5566bce9fc140ac Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 25 Nov 2024 10:03:13 +0100 Subject: [PATCH 146/279] Remove not applicable examples --- JSON_for_IO-Link.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 78c7cde..2494ae7 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1684,8 +1684,6 @@ paths: schema: $ref: "./schemas.yaml#/schemas/mastersConfigurationGetPost" examples: - IO-Link: - $ref: "#/components/examples/exampleMasterConfiguration" IO-Link_Wireless: $ref: "#/components/examples/exampleWirelessMasterConfiguration" responses: From 8cbe8dc04a4b772c705b697e8db03675659b0d90 Mon Sep 17 00:00:00 2001 From: roeseko Date: Mon, 25 Nov 2024 11:39:14 +0100 Subject: [PATCH 147/279] Remove todo comments --- schemas.yaml | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/schemas.yaml b/schemas.yaml index ed27de9..427efd2 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -295,12 +295,20 @@ schemas: masterCapabilitiesGet: required: - numberOfPorts + - maxPowerSupply type: object properties: numberOfPorts: $ref: "#/schemas/portNumber" maxPowerSupply: $ref: "#/schemas/currentObject" + masterCapabilitiesGetWireless: + required: + - numberOfPorts + type: object + properties: + numberOfPorts: + $ref: "#/schemas/portNumber" eventTime: description: >- Timestamp (format defined in DIN ISO 8601). This field can give an @@ -1100,9 +1108,9 @@ schemas: minLength: 26 maxLength: 26 - mastersConfigurationGetPost: # TODO: IOLW + mastersConfigurationGetPost: properties: - wMasterId: #TODO roeseko What masterId is this? Same as in identification object? + wMasterId: description: >- Master identifier for connection with Wireless-Devices. type: integer @@ -1315,7 +1323,7 @@ schemas: $ref: "#/schemas/wirelessBlockList" "2478": $ref: "#/schemas/wirelessBlockList" - mastersPortsPairingPost: # TODO: IOLW + mastersPortsPairingPost: properties: portPairing: type: string @@ -1326,7 +1334,7 @@ schemas: example: WPortPairing: PairingUnique - mastersScanGet: # TODO: IOLW + mastersScanGet: properties: scanStatus: type: string @@ -1369,7 +1377,7 @@ schemas: iolinkRevision: "1.1" lastSeen: "2022-12-01T09:42:23.314Z" - mastersScanPost: # TODO: IOLW + mastersScanPost: properties: txPower: type: integer @@ -1439,7 +1447,7 @@ schemas: items: $ref: "#/schemas/portWirelessObject" - mastersPortsStatusGet: # TODO: IOLW + mastersPortsStatusGet: properties: statusInfo: type: string @@ -1544,7 +1552,7 @@ schemas: minimum: 1 maximum: 63 - mastersTrackstatusGet: # TODO: IOLW + mastersTrackstatusGet: type: array items: type: object @@ -1596,7 +1604,7 @@ schemas: lqiDevice: 100 rssiDevice: -39 - mastersPortsQualityGet: # TODO: IOLW + mastersPortsQualityGet: properties: lqiMaster: type: integer @@ -2338,7 +2346,7 @@ schemas: example: "linkUp" masterConfiguration: properties: - masterId: #TODO roeseko What masterId is this? Same as in identification object? + masterId: type: integer minimum: 1 maximum: 29 @@ -2611,10 +2619,10 @@ schemas: $ref: "#/schemas/wirelessTrackNumber" channelErrors: type: object - # required: # @TODO wireles + # required: # - all properties: - "2402": # TODO roeseko What is mean by this value? Is this the error code for this channel? + "2402": type: integer minimum: 0 maximum: 65535 # 0 to 100, 65535 means no data available From 8bfa95e91bfabc523af43cfc48a097143fd12832 Mon Sep 17 00:00:00 2001 From: Alex Krizsan Date: Mon, 25 Nov 2024 08:31:40 +0100 Subject: [PATCH 148/279] Fixing DELETE /gateway/events status code. --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4e3a082..8aca176 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -582,7 +582,7 @@ paths: - $ref: "#/components/parameters/eventTop" - $ref: "#/components/parameters/eventBottom" responses: - "200": + "204": description: Successful operation "400": description: Bad Request From 5c43ea4364b6c4f0a016f0a4b55a6b674bd4d3d5 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 13 Dec 2024 11:37:53 +0100 Subject: [PATCH 149/279] Adjust master capabilities schema for wireless with --- JSON_for_IO-Link.yaml | 9 +++++++-- schemas.yaml | 37 ++++++++++++++++++++++++------------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 2494ae7..84b8a6d 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1485,7 +1485,9 @@ paths: content: application/json: schema: - $ref: "./schemas.yaml#/schemas/masterCapabilitiesGet" + anyOf: + - $ref: "./schemas.yaml#/schemas/masterCapabilitiesGet" + - $ref: "./schemas.yaml#/schemas/masterCapabilitiesGetWireless" examples: IO-Link: value: @@ -1914,7 +1916,9 @@ paths: content: application/json: schema: - $ref: "./schemas.yaml#/schemas/portCapabilitiesGet" + oneOf: + - $ref: "./schemas.yaml#/schemas/portCapabilitiesGet" + - $ref: "./schemas.yaml#/schemas/portCapabilitiesGetWireless" examples: CLASS_A: value: @@ -1955,6 +1959,7 @@ paths: IO-Link_Wireless: value: portType: WIRELESS_MASTER + slotType: SSLOT "401": $ref: "#/components/responses/HTTP_401" "403": diff --git a/schemas.yaml b/schemas.yaml index 427efd2..a7d8cb6 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -920,21 +920,36 @@ schemas: functionTag: $ref: "#/schemas/tags" example: Check start of belt + portCapabilitiesPorttype: + type: string + enum: + - CLASS_A + - CLASS_B + - CLASS_A_WITH_PORT_POWER_OFF_ON + - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS + - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS + - FAILSAFE_PORT_B + - WIRELESS_MASTER portCapabilitiesGet: type: object required: - portType + - maxPowerSupply properties: portType: - type: string - enum: - - CLASS_A - - CLASS_B - - CLASS_A_WITH_PORT_POWER_OFF_ON - - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - - FAILSAFE_PORT_B - - WIRELESS_MASTER + $ref: "#/schemas/portCapabilitiesPorttype" + maxPowerSupply: + description: >- + maxPowerSupply is not supported in IO-Link Wireless. + $ref: "#/schemas/currentObject" + portCapabilitiesGetWireless: + type: object + required: + - portType + - slotType + properties: + portType: + $ref: "#/schemas/portCapabilitiesPorttype" slotType: description: >- slotType for Wireless Master only @@ -942,10 +957,6 @@ schemas: enum: - SSLOT - DSLOT - maxPowerSupply: - description: >- - maxPowerSupply is not supported in IO-Link Wireless. - $ref: "#/schemas/currentObject" portConfigurationGet: type: object From 33025f1a9b8bb7d49f5dcf7b868d90294ce41de1 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 13 Dec 2024 11:56:26 +0100 Subject: [PATCH 150/279] Adjust port status schema for wireless --- JSON_for_IO-Link.yaml | 10 +- schemas.yaml | 400 ++++++++++++++++++++++-------------------- 2 files changed, 219 insertions(+), 191 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 84b8a6d..4ef1d22 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1852,7 +1852,7 @@ paths: application/json: schema: oneOf: - - $ref: "./schemas.yaml#/schemas/mastersPortsGet" + - $ref: "./schemas.yaml#/schemas/mastersPortsGetWired" - $ref: "./schemas.yaml#/schemas/mastersPortsGetWireless" examples: IO-Link: @@ -1997,7 +1997,9 @@ paths: content: application/json: schema: - $ref: "./schemas.yaml#/schemas/mastersPortsStatusGet" + anyOf: + - $ref: "./schemas.yaml#/schemas/mastersPortsStatusGetWired" + - $ref: "./schemas.yaml#/schemas/mastersPortsStatusGetWireless" examples: IO-Link: value: @@ -2058,7 +2060,9 @@ paths: content: application/json: schema: - $ref: "./schemas.yaml#/schemas/portConfigurationGet" + anyOf: + - $ref: "./schemas.yaml#/schemas/mastersPortsStatusGetWired" + - $ref: "./schemas.yaml#/schemas/mastersPortsStatusGetWireless" examples: IO-Link: value: diff --git a/schemas.yaml b/schemas.yaml index a7d8cb6..b2ba764 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -958,7 +958,7 @@ schemas: - SSLOT - DSLOT - portConfigurationGet: + portConfigurationGetCommon: type: object required: - mode @@ -986,18 +986,6 @@ schemas: - TYPE_COMPATIBLE_DEVICE_V1.1 - TYPE_COMPATIBLE_DEVICE_V1.1_BACKUP_AND_RESTORE - TYPE_COMPATIBLE_DEVICE_V1.1_RESTORE - cycleTime: - description: >- - required if portMode is IOLINK_MANUAL or - IOLINK_AUTOSTART. Default value is 0 ms which means as fast as possible. - Note: If the applied value for cycle time cannot exactly be mapped, - the port shall use the next possible higher value. If the cycle time is greater - than 132.8 ms the error 702 shall be returned. - Note: This value is not used in IO-Link wireless use - wMasterCycleTimeOut and wMasterCycleTimeIn instead. - type: object - allOf: - - $ref: "#/schemas/cycleTime" vendorId: description: >- required if portMode is IOLINK_MANUAL and @@ -1008,116 +996,140 @@ schemas: required if portMode is IOLINK_MANUAL and validationAndBackup is not NO_DEVICE_CHECK. $ref: "#/schemas/deviceId" - iqConfiguration: - description: >- - iqConfiguration is not supported in IO-Link Wireless. - type: string - enum: - - NOT_SUPPORTED - - DIGITAL_INPUT - - DIGITAL_OUTPUT deviceAlias: $ref: "#/schemas/deviceAlias" - slotNumber: - description: >- - slot number of the Wireless-Device (Wireless Master only). - $ref: "#/schemas/wirelessSlotNumber" - trackNumber: - description: >- - track number of the Wireless-Device, maximum depends on the number of - available tracks on the Wireless-Master (Wireless Master only). - $ref: "#/schemas/wirelessTrackNumber" - deviceTxPower: - description: >- - transmission power of the Wireless-Device (Wireless Master only). - type: integer - minimum: 1 - maximum: 31 - maxRetry: - description: >- - Number of Retries for process data (Wireless Master only). - type: integer - minimum: 2 - maximum: 31 - imaTime: - description: >- - I am alive time for the wireless connection (Wireless Master only). - type: object - required: - - base - - multiplier + + portConfigurationGetWired: + allOf: + - $ref: "#/schemas/portConfigurationGetCommon" + - type: object properties: - base: + iqConfiguration: description: >- - IMA timeout base. + iqConfiguration is not supported in IO-Link Wireless. type: string enum: - - "1664us" - - "5ms" - - "1s" - - "1min" - multiplier: + - NOT_SUPPORTED + - DIGITAL_INPUT + - DIGITAL_OUTPUT + cycleTime: description: >- - IMA timeout multiplier. - type: integer - minimum: 1 - maximum: 255 - slotType: - description: >- - Single Slot or Double Slot (Wireless Master only). - type: string - enum: - - "SSLOT" - - "DSLOT" - lowEnergyDevice: - description: >- - to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). - type: boolean - default: false - maxPDSegLength: - description: >- - maximum process data output segment length (Wireless Master only). - type: integer - minimum: 0 - maximum: 32 - wMasterCycleTimeOut: - description: >- - Wireless-Master cycle time output for PD data (Wireless Master only). - type: object - required: - - base + required if portMode is IOLINK_MANUAL or + IOLINK_AUTOSTART. Default value is 0 ms which means as fast as possible. + Note: If the applied value for cycle time cannot exactly be mapped, + the port shall use the next possible higher value. If the cycle time is greater + than 132.8 ms the error 702 shall be returned. + Note: This value is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. + type: object + allOf: + - $ref: "#/schemas/cycleTime" + + portConfigurationGetWireless: + allOf: + - $ref: "#/schemas/portConfigurationGetCommon" + - type: object properties: - base: - type: string - enum: - - "FreeRunning" - - "5ms" - multiplier: + slotNumber: + description: >- + slot number of the Wireless-Device (Wireless Master only). + $ref: "#/schemas/wirelessSlotNumber" + trackNumber: + description: >- + track number of the Wireless-Device, maximum depends on the number of + available tracks on the Wireless-Master (Wireless Master only). + $ref: "#/schemas/wirelessTrackNumber" + deviceTxPower: + description: >- + transmission power of the Wireless-Device (Wireless Master only). type: integer minimum: 1 - maximum: 63 - wMasterCycleTimeIn: - description: >- - Wireless-Master cycle time input for PD data (Wireless Master only). - type: object - required: - - base - properties: - base: + maximum: 31 + maxRetry: + description: >- + Number of Retries for process data (Wireless Master only). + type: integer + minimum: 2 + maximum: 31 + imaTime: + description: >- + I am alive time for the wireless connection (Wireless Master only). + type: object + required: + - base + - multiplier + properties: + base: + description: >- + IMA timeout base. + type: string + enum: + - "1664us" + - "5ms" + - "1s" + - "1min" + multiplier: + description: >- + IMA timeout multiplier. + type: integer + minimum: 1 + maximum: 255 + slotType: + description: >- + Single Slot or Double Slot (Wireless Master only). type: string enum: - - "FreeRunning" - - "5ms" - multiplier: + - "SSLOT" + - "DSLOT" + lowEnergyDevice: + description: >- + to set low energy mode (Wireless Master only and Wireless-Device has to support low energy). + type: boolean + default: false + maxPDSegLength: + description: >- + maximum process data output segment length (Wireless Master only). type: integer - minimum: 1 - maximum: 63 - uniqueId: - description: >- - unique identifier for each Wireless-Device (Wireless Master only). - type: string - minLength: 26 - maxLength: 26 + minimum: 0 + maximum: 32 + wMasterCycleTimeOut: + description: >- + Wireless-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + Wireless-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + uniqueId: + description: >- + unique identifier for each Wireless-Device (Wireless Master only). + type: string + minLength: 26 + maxLength: 26 mastersConfigurationGetPost: properties: @@ -1448,7 +1460,7 @@ schemas: - "SSLOT" - "DSLOT" - mastersPortsGet: + mastersPortsGetWired: type: array items: $ref: "#/schemas/portObject" @@ -1478,90 +1490,102 @@ schemas: Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or OPERATE. $ref: "#/schemas/iolinkRevision" - transmissionRate: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. transmissionRate is not used in IO-Link Wireless. - type: string - enum: - - COM1 - - COM2 - - COM3 - masterCycleTime: - description: >- - Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or - OPERATE. masterCycleTime is not used in IO-Link wireless use - wMasterCycleTimeOut and wMasterCycleTimeIn instead. - type: object - allOf: - - $ref: "#/schemas/cycleTime" - portQualityInfo: - description: >- - status information of the Process Data (Wireless Master only). - type: object - properties: - "pdInValid": - type: boolean - default: false - "pdOutValid": - type: boolean - default: false - inputDataLength: - description: >- - this element contains the input data length as number of octets of the Device provided by the PDIn service (Wireless Master only). - type: integer - minimum: 0 - maximum: 32 - outputDataLength: - description: >- - this element contains the output data length as number of octets of the Device provided by the PDOut service (Wireless Master only). - type: integer - minimum: 0 - maximum: 32 - vendorId: - description: >- - Wireless Master only. - type: integer - minimum: 1 - maximum: 65535 - deviceId: - description: >- - Wireless Master only. - type: integer - minimum: 1 - maximum: 16777215 - wMasterCycleTimeOut: - description: >- - Wireless-Master cycle time output for PD data (Wireless Master only). - type: object - required: - - base + + mastersPortsStatusGetWired: + allOf: + - $ref: "#/schemas/mastersPortsStatusGet" + - type: object properties: - base: + transmissionRate: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. transmissionRate is not used in IO-Link Wireless. type: string enum: - - "FreeRunning" - - "5ms" - multiplier: + - COM1 + - COM2 + - COM3 + masterCycleTime: + description: >- + Mandatory if the portStatusInfo is INCORRECT_DEVICE, PREOPERATE or + OPERATE. masterCycleTime is not used in IO-Link wireless use + wMasterCycleTimeOut and wMasterCycleTimeIn instead. + type: object + allOf: + - $ref: "#/schemas/cycleTime" + + mastersPortsStatusGetWireless: + allOf: + - $ref: "#/schemas/mastersPortsStatusGet" + - type: object + properties: + wMasterCycleTimeOut: + description: >- + Wireless-Master cycle time output for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + wMasterCycleTimeIn: + description: >- + Wireless-Master cycle time input for PD data (Wireless Master only). + type: object + required: + - base + properties: + base: + type: string + enum: + - "FreeRunning" + - "5ms" + multiplier: + type: integer + minimum: 1 + maximum: 63 + portQualityInfo: + description: >- + status information of the Process Data (Wireless Master only). + type: object + properties: + "pdInValid": + type: boolean + default: false + "pdOutValid": + type: boolean + default: false + inputDataLength: + description: >- + this element contains the input data length as number of octets of the Device provided by the PDIn service (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + outputDataLength: + description: >- + this element contains the output data length as number of octets of the Device provided by the PDOut service (Wireless Master only). + type: integer + minimum: 0 + maximum: 32 + vendorId: + description: >- + Wireless Master only. type: integer minimum: 1 - maximum: 63 - wMasterCycleTimeIn: - description: >- - Wireless-Master cycle time input for PD data (Wireless Master only). - type: object - required: - - base - properties: - base: - type: string - enum: - - "FreeRunning" - - "5ms" - multiplier: + maximum: 65535 + deviceId: + description: >- + Wireless Master only. type: integer minimum: 1 - maximum: 63 + maximum: 16777215 mastersTrackstatusGet: type: array From 2b0c5e3760a5b016f3228ba92163e26daaed16d9 Mon Sep 17 00:00:00 2001 From: roeseko Date: Fri, 13 Dec 2024 12:01:16 +0100 Subject: [PATCH 151/279] Adjust port monitor schema for wireless --- JSON_for_IO-Link.yaml | 4 +++- schemas.yaml | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4ef1d22..7495b9a 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2414,7 +2414,9 @@ paths: content: application/json: schema: - $ref: "./schemas.yaml#/schemas/portMonitor" + anyOf: + - $ref: "./schemas.yaml#/schemas/portMonitor" + - $ref: "./schemas.yaml#/schemas/portMonitorWireless" "401": $ref: "#/components/responses/HTTP_401" "403": diff --git a/schemas.yaml b/schemas.yaml index b2ba764..7daceb7 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -585,7 +585,6 @@ schemas: ipAddress: 192.168.1.13 subnetMask: 255.255.255.0 standardGateway: 192.168.1.1 - voltageObject: type: object required: @@ -658,8 +657,15 @@ schemas: $ref: "#/schemas/currentObject" iqCurrent: $ref: "#/schemas/currentObject" - wirelessQuality: - $ref: "#/schemas/wirelessPortQuality" + portMonitorWireless: + allOf: + - $ref: "#/schemas/portMonitor" + - type: object + required: + - wirelessQuality + properties: + wirelessQuality: + $ref: "#/schemas/wirelessPortQuality" mqttConfigurationGetPost: type: object From 752c54440f83c1b19872e6337e1e3b5bf518da45 Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Mon, 16 Dec 2024 13:51:20 +0100 Subject: [PATCH 152/279] Finally fix all the issues with the DS endpoint. --- JSON_for_IO-Link.yaml | 37 +++++++++++------------- schemas.yaml | 67 ++++++++++++++++++++++++++++++++----------- 2 files changed, 67 insertions(+), 37 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index b71e49e..4a24491 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2178,7 +2178,7 @@ paths: - $ref: "./schemas.yaml#/schemas/errorObject_102" "/masters/{masterNumber}/ports/{portNumber}/datastorage": get: - operationId: GetMastersMasterNumberPortsPortNumberDatastorages + operationId: GetMastersMasterNumberPortsPortNumberDatastorage tags: - ports parameters: @@ -2192,26 +2192,26 @@ paths: content: application/json: schema: - $ref: "./schemas.yaml#/schemas/dataStorageGetPost" + $ref: "./schemas.yaml#/schemas/dataStorageGet" examples: Data Storage with valid content: value: header: - vendorId: 15 - deviceId: 65253 - iolinkRevision: "1.1" - parameterChecksum: 123456 + parameterChecksum: 1192298517 + vendorId: 646 + deviceId: 1234 + functionId: 0 content: >- - TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl + RxEIFQKGAAAE0gAAABgAAyoqKgAZAAMqKioAGgADKioq Empty Data Storage: value: header: - vendorId: 26 - deviceId: 65253 - iolinkRevision: "1.1" - parameterChecksum: 123456 + parameterChecksum: 0 + vendorId: 0 + deviceId: 0 + functionId: 0 content: >- - '' + AAAAAAAAAAAAAAAA "401": $ref: "#/components/responses/HTTP_401" "403": @@ -2233,7 +2233,7 @@ paths: - $ref: "./schemas.yaml#/schemas/errorObject_101" - $ref: "./schemas.yaml#/schemas/errorObject_102" post: - operationId: PostMastersMasterNumberPortsPortNumberDatastorages + operationId: PostMastersMasterNumberPortsPortNumberDatastorage tags: - ports parameters: @@ -2246,20 +2246,15 @@ paths: content: application/json: schema: - $ref: "./schemas.yaml#/schemas/dataStorageGetPost" + $ref: "./schemas.yaml#/schemas/dataStoragePost" examples: Data Storage with valid content: value: - header: - vendorId: 15 - deviceId: 65253 - iolinkRevision: "1.1" content: >- - TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGl + RxEIFQKGAAAE0gAAABgAAyoqKgAZAAMqKioAGgADKioq Empty Data Storage: value: - header: {} - content: "" + content: "AAAAAAAAAAAAAAAA" responses: "204": description: Successful operation diff --git a/schemas.yaml b/schemas.yaml index b3156ef..45f704d 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -225,6 +225,11 @@ schemas: wirelessBlockList: type: boolean default: false + dataStorageObject: + description: DataStorageObject (including the header) as described in E.6 DS_Data of the IO-Link Interface and System Specification v1.1.4 as Base64 coded string. + type: string + minLength: 16 # 12 octets encoded in Base64 (empty DS) + maxLength: 2748 # 2048 + 12 octets encoded in Base64 identificationMasters: type: array items: @@ -1759,10 +1764,10 @@ schemas: minLength: 26 maxLength: 26 - dataStorageGetPost: + dataStorageGet: description: >- - In case the Data Storage is empty, the header object is empty and the - content is an empty string. + In case of an empty Data Storage, the header object contains a value of 0 for every property, + and the content contains 12 bytes of 0x00, encoded as a Base64 string. type: object required: - header @@ -1772,29 +1777,59 @@ schemas: oneOf: - type: object required: + - parameterChecksum - vendorId - deviceId - - iolinkRevision + - functionId properties: + parameterChecksum: + type: integer + minimum: 0 + maximum: 4294967295 # UINT32_MAX vendorId: $ref: "#/schemas/vendorId" deviceId: $ref: "#/schemas/deviceId" - iolinkRevision: - $ref: "#/schemas/iolinkRevision" + functionId: + type: integer + enum: + - 0 + - type: object # header for empty DS + required: + - parameterChecksum + - vendorId + - deviceId + - functionId + properties: parameterChecksum: type: integer - - type: object # empty object - additionalProperties: false - minProperties: 0 - maxProperties: 0 + enum: + - 0 + vendorId: + type: integer + enum: + - 0 + deviceId: + type: integer + enum: + - 0 + functionId: + type: integer + enum: + - 0 content: - description: >- - Base64 encoded DataStorageObject. - The contents of the DataStorageObject are described in E.6 of the "IO-Link Interface and System Specification 1.1.3", - it consists of the "Associated header information for stored DS data objects" as described in Table G.2, - followed by the "stored DS data object" as described in Table G.1. - type: string + $ref: "#/schemas/dataStorageObject" + + dataStoragePost: + description: >- + In case of an empty Data Storage, the content contains 12 bytes of 0x00, encoded as a Base64 string. + type: object + required: + - content + properties: + content: + $ref: "#/schemas/dataStorageObject" + processDataValue: type: object properties: From 2711343947f6e91c8582b2e222abbc032c654af9 Mon Sep 17 00:00:00 2001 From: alexkrizsan Date: Thu, 9 Jan 2025 09:02:31 +0100 Subject: [PATCH 153/279] Adding endpoint description GET /gateway/diagnosis --- JSON_for_IO-Link.yaml | 107 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index b71e49e..00d8eeb 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -602,6 +602,113 @@ paths: application/json: schema: $ref: "./schemas.yaml#/schemas/errorObject_101" + + "/gateway/diagnosis": + get: + operationId: GetGatewayDiagnosis + tags: + - gateway + summary: Get the currently pending events. + description: >- + Each event with a *mode* of "APPEARS" is considered as an pending event until the occurence of a corresponding with *mode* of "DISAPPEARS". + Pending events must be provided regardless of the Event Log content. + + Hint: *mode* is optional property under *message*. An event cannot qualify as a pending event if this property is not specified. + parameters: + - $ref: "#/components/parameters/eventOrigin" + - $ref: "#/components/parameters/eventMasterNumber" + - $ref: "#/components/parameters/eventPortNumber" + - $ref: "#/components/parameters/eventdeviceAlias" + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "./schemas.yaml#/schemas/gatewayEventsGet" + examples: + origin=ALL: + value: + - time: "2018-05-18T07:32:42.023Z" + severity: ERROR + origin: + masterNumber: 1 + portNumber: 1 + message: + code: 6163 + mode: APPEARS + text: Overcurrent at C/Q (if digital output) - check load + - time: "2018-05-18T07:31:54.123Z" + severity: WARNING + origin: + masterNumber: 1 + portNumber: 1 + deviceAlias: Temp_sensor_1 + message: + code: 16912 + mode: APPEARS + text: Device temperature over-run – Clear source of heat + - time: "2018-05-18T08:31:54.123Z" + severity: ERROR + origin: + masterNumber: 1 + portNumber: 3 + deviceAlias: Distance_Laser_3 + message: + code: 20480 + mode: APPEARS + text: Device hardware fault – Device exchange + origin=PORTS: + value: + - time: "2018-05-18T07:32:42.023Z" + severity: ERROR + origin: + masterNumber: 1 + port: 1 + message: + code: 6163 + mode: APPEARS + text: Overcurrent at C/Q (if digital output) - check load + origin=DEVICES: + value: + - time: "2018-05-18T07:31:54.123Z" + severity: WARNING + origin: + masterNumber: 1 + portNumber: 1 + deviceAlias: Temp_sensor_1 + message: + code: 16912 + mode: APPEARS + text: Device temperature over-run – Clear source of heat + - time: "2018-05-18T08:31:54.123Z" + severity: ERROR + origin: + masterNumber: 1 + portNumber: 3 + deviceAlias: Distance_Laser_3 + message: + code: 20480 + mode: APPEARS + text: Device hardware fault – Device exchange + "400": + description: Bad Request + content: + application/json: + schema: + oneOf: + - $ref: "./schemas.yaml#/schemas/errorObject_305" + - $ref: "./schemas.yaml#/schemas/errorObject_306" + "401": + $ref: "#/components/responses/HTTP_401" + "403": + $ref: "#/components/responses/HTTP_403" + "500": + description: Internal Server Error + content: + application/json: + schema: + $ref: "./schemas.yaml#/schemas/errorObject_101" "/gateway/monitor": get: operationId: GetGatewayMonitor From bbb65edd00d6e00dbcdd9f0a2e4953417b650493 Mon Sep 17 00:00:00 2001 From: alexkrizsan Date: Thu, 9 Jan 2025 13:01:14 +0100 Subject: [PATCH 154/279] Adding instance property to the eventOriginObject, updating examples. --- JSON_for_IO-Link.yaml | 7 +++++++ schemas.yaml | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index b71e49e..8cce973 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -477,6 +477,7 @@ paths: origin: masterNumber: 1 portNumber: 1 + instance: "APPLICATION" message: code: 6163 mode: APPEARS @@ -487,6 +488,7 @@ paths: masterNumber: 1 portNumber: 1 deviceAlias: Temp_sensor_1 + instance: "APPLICATION" message: code: 16912 mode: APPEARS @@ -506,6 +508,7 @@ paths: origin: masterNumber: 1 port: 1 + instance: "APPLICATION" message: code: 6163 mode: APPEARS @@ -515,6 +518,7 @@ paths: origin: masterNumber: 1 portNumber: 1 + instance: "APPLICATION" message: code: 6163 mode: DISAPPEARS @@ -524,6 +528,7 @@ paths: origin: masterNumber: 1 portNumber: 2 + instance: "SYSTEM" message: code: 65313 mode: SINGLESHOT @@ -536,6 +541,7 @@ paths: masterNumber: 1 portNumber: 1 deviceAlias: Temp_sensor_1 + instance: "APPLICATION" message: code: 16912 mode: APPEARS @@ -546,6 +552,7 @@ paths: masterNumber: 1 portNumber: 3 deviceAlias: Distance_Laser_3 + instance: "APPLICATION" message: code: 20480 mode: APPEARS diff --git a/schemas.yaml b/schemas.yaml index e316380..780aa25 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -314,6 +314,15 @@ schemas: - NOTICE - INFO - DEBUG + eventInstance: + description: >- + Indicate the particular source (instance) of an Events. The IO-Link Instance + Unknown maps to UNKNOWN, Reserved to UNKNOWN, Application to APPLICATION, and System to SYSTEM. + type: string + enum: + - UNKNOWN + - APPLICATION + - SYSTEM eventOriginObject: type: object properties: @@ -332,6 +341,11 @@ schemas: $ref: "#/schemas/portNumber" deviceAlias: $ref: "#/schemas/deviceAlias" + instance: + description: >- + This property is mandatory for IO-Link Port Events and IO-Link + Device Events. Should not be used for other log entries. + $ref: "#/schemas/eventInstance" eventObject: type: object properties: @@ -461,6 +475,7 @@ schemas: - master - port - deviceAlias + - instance allOf: - $ref: "#/schemas/eventOriginObject" message: @@ -476,6 +491,7 @@ schemas: master: 1 port: 1 deviceAlias: Temperature_sensor_1 + instance: "APPLICATION" message: code: 16912 mode: APPEARS From 0a46e4c56c5de03f273cc89b3a6939f96eaccf87 Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Wed, 15 Jan 2025 09:26:49 +0100 Subject: [PATCH 155/279] Add double quotes around the datastorage example content values. --- JSON_for_IO-Link.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 4a24491..f4984f7 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2202,7 +2202,7 @@ paths: deviceId: 1234 functionId: 0 content: >- - RxEIFQKGAAAE0gAAABgAAyoqKgAZAAMqKioAGgADKioq + "RxEIFQKGAAAE0gAAABgAAyoqKgAZAAMqKioAGgADKioq" Empty Data Storage: value: header: @@ -2211,7 +2211,7 @@ paths: deviceId: 0 functionId: 0 content: >- - AAAAAAAAAAAAAAAA + "AAAAAAAAAAAAAAAA" "401": $ref: "#/components/responses/HTTP_401" "403": @@ -2251,7 +2251,7 @@ paths: Data Storage with valid content: value: content: >- - RxEIFQKGAAAE0gAAABgAAyoqKgAZAAMqKioAGgADKioq + "RxEIFQKGAAAE0gAAABgAAyoqKgAZAAMqKioAGgADKioq" Empty Data Storage: value: content: "AAAAAAAAAAAAAAAA" From 5617fc6224d50b1c2026c35972a30e217f6f6fbc Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Wed, 15 Jan 2025 09:39:14 +0100 Subject: [PATCH 156/279] Update the CODEOWNERS list (-@mrentsch65, +@alexkrizsan). The default reviewers for a pull request are added to a PR based on this list, so we have to keep it up to date. --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 35ec011..96b8a44 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -6,4 +6,4 @@ # review when someone opens a pull request. -- @fm-sick @vervoortb @haliCR1 @BaRu-ifm @julian-st @lorandmolnar @mrentsch65 @roesekoSICKAG @OlafWestrik @wolfram-ladurner +- @fm-sick @vervoortb @haliCR1 @BaRu-ifm @julian-st @lorandmolnar @roesekoSICKAG @OlafWestrik @wolfram-ladurner @alexkrizsan From c84ad52d36f03e2475a5dea265d2f1f09d577933 Mon Sep 17 00:00:00 2001 From: alexkrizsan <108268604+alexkrizsan@users.noreply.github.com> Date: Wed, 15 Jan 2025 12:22:30 +0100 Subject: [PATCH 157/279] Update schemas.yaml Fixing grammar. --- schemas.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schemas.yaml b/schemas.yaml index 780aa25..5305c8a 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -316,7 +316,7 @@ schemas: - DEBUG eventInstance: description: >- - Indicate the particular source (instance) of an Events. The IO-Link Instance + Indicate the particular source (instance) of an Event. The IO-Link Instance Unknown maps to UNKNOWN, Reserved to UNKNOWN, Application to APPLICATION, and System to SYSTEM. type: string enum: From 958077509aa25180be83debdd5c7fe2400400c53 Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Mon, 10 Feb 2025 13:40:44 +0100 Subject: [PATCH 158/279] Extend the examples for GET/POST mqtt/configuration by the originatorId. --- JSON_for_IO-Link.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index b71e49e..5e13b80 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -660,6 +660,7 @@ paths: qos: 0_ONLY_ONCE retain: true keepAliveTime: 10 + originatorId: "master001" Inactive client: value: clientMode: "INACTIVE" @@ -712,6 +713,7 @@ paths: qos: 0_ONLY_ONCE retain: true keepAliveTime: 10 + originatorId: "master001" Inactive Client: value: clientMode: INACTIVE From f9534b25670cb16de48a1de0d6184c4f88619096 Mon Sep 17 00:00:00 2001 From: alexkrizsan <108268604+alexkrizsan@users.noreply.github.com> Date: Mon, 3 Mar 2025 12:19:26 +0100 Subject: [PATCH 159/279] Updating the examples of the /gateway/diagnosis endpoint. --- JSON_for_IO-Link.yaml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 5ab404b..cced768 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -641,6 +641,7 @@ paths: origin: masterNumber: 1 portNumber: 1 + instance: "APPLICATION" message: code: 6163 mode: APPEARS @@ -651,6 +652,7 @@ paths: masterNumber: 1 portNumber: 1 deviceAlias: Temp_sensor_1 + instance: "APPLICATION" message: code: 16912 mode: APPEARS @@ -661,10 +663,21 @@ paths: masterNumber: 1 portNumber: 3 deviceAlias: Distance_Laser_3 + instance: "APPLICATION" message: code: 20480 mode: APPEARS text: Device hardware fault – Device exchange + - time: "2018-05-18T07:35:54.123Z" + severity: NOTICE + origin: + masterNumber: 1 + portNumber: 2 + instance: "SYSTEM" + message: + code: 65313 + mode: SINGLESHOT + text: New slave origin=PORTS: value: - time: "2018-05-18T07:32:42.023Z" @@ -672,10 +685,21 @@ paths: origin: masterNumber: 1 port: 1 + instance: "APPLICATION" message: code: 6163 mode: APPEARS text: Overcurrent at C/Q (if digital output) - check load + - time: "2018-05-18T07:35:54.123Z" + severity: NOTICE + origin: + masterNumber: 1 + portNumber: 2 + instance: "SYSTEM" + message: + code: 65313 + mode: SINGLESHOT + text: New slave origin=DEVICES: value: - time: "2018-05-18T07:31:54.123Z" @@ -684,6 +708,7 @@ paths: masterNumber: 1 portNumber: 1 deviceAlias: Temp_sensor_1 + instance: "APPLICATION" message: code: 16912 mode: APPEARS @@ -694,6 +719,7 @@ paths: masterNumber: 1 portNumber: 3 deviceAlias: Distance_Laser_3 + instance: "APPLICATION" message: code: 20480 mode: APPEARS From c60855daababf411d6f257f52d879c351cdb8317 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 24 Mar 2025 11:00:54 +0100 Subject: [PATCH 160/279] Fixing wireless related port capabilities schema. --- schemas.yaml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/schemas.yaml b/schemas.yaml index 5305c8a..44c664e 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -932,14 +932,7 @@ schemas: - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - FAILSAFE_PORT_B - - WIRELESS_MASTER - slotType: - description: >- - slotType for Wireless Master only - type: string - enum: - - SSLOT - - DSLOT + - WIRELESS_PORT maxPowerSupply: description: >- maxPowerSupply is not supported in IO-Link Wireless. From 58f7c47a2e53f9236c2b832243facfc0dea7d489 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 24 Mar 2025 12:37:07 +0100 Subject: [PATCH 161/279] Separating wired and wireless port monitor schema. --- schemas.yaml | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/schemas.yaml b/schemas.yaml index 5305c8a..2685d7a 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -631,11 +631,18 @@ schemas: $ref: "#/schemas/currentObject" secondaryCurrent: $ref: "#/schemas/currentObject" - portMonitor: + portMonitorWired: type: object + required: + - voltage + - current properties: voltage: type: object + required: + - primaryVoltage + - cqVoltage + - iqVoltage properties: primaryVoltage: $ref: "#/schemas/voltageObject" @@ -647,6 +654,10 @@ schemas: $ref: "#/schemas/voltageObject" current: type: object + required: + - primaryCurrent + - cqCurrent + - iqCurrent properties: primaryCurrent: $ref: "#/schemas/currentObject" @@ -656,9 +667,17 @@ schemas: $ref: "#/schemas/currentObject" iqCurrent: $ref: "#/schemas/currentObject" + portMonitorWireless: + type: object + required: + - wirelessQuality + properties: wirelessQuality: $ref: "#/schemas/wirelessPortQuality" - + portMonitor: + oneOf: + - $ref: "#/schemas/portMonitorWired" + - $ref: "#/schemas/portMonitorWireless" mqttConfigurationGetPost: type: object required: From 2a9c3357b15d8bb49178ce23188bccc71e4a843c Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 24 Mar 2025 15:56:40 +0100 Subject: [PATCH 162/279] Removing required property definition, adding minProperties restriction instead. --- schemas.yaml | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/schemas.yaml b/schemas.yaml index 2685d7a..6641ae4 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -633,16 +633,11 @@ schemas: $ref: "#/schemas/currentObject" portMonitorWired: type: object - required: - - voltage - - current + minProperties: 1 properties: voltage: type: object - required: - - primaryVoltage - - cqVoltage - - iqVoltage + minProperties: 1 properties: primaryVoltage: $ref: "#/schemas/voltageObject" @@ -654,10 +649,7 @@ schemas: $ref: "#/schemas/voltageObject" current: type: object - required: - - primaryCurrent - - cqCurrent - - iqCurrent + minProperties: 1 properties: primaryCurrent: $ref: "#/schemas/currentObject" From bb6d13b475a3abf85c52cd24d29400f482115fbf Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 25 Mar 2025 10:30:13 +0100 Subject: [PATCH 163/279] Extending monitor endpoints description. --- JSON_for_IO-Link.yaml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index cced768..fd33e95 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -747,8 +747,12 @@ paths: operationId: GetGatewayMonitor tags: - gateway - summary: Read current and voltage values of the Gateway. - description: Read current and voltage values of the primary and secondary rail of the Gateway. + summary: Read current and voltage values of the Gateway. Optional. + description: >- + Read current and voltage values of the primary and secondary rail of the Gateway. + + This endpoint should only be available if the gateway is located within the same physical device as the Master(s). + Primary and secondary rails are commonly denoted by US and UA. responses: "200": description: Successful operation @@ -2502,8 +2506,12 @@ paths: operationId: GetMastersMasterNumberPortsPortNumberMonitor tags: - ports - summary: Read the actual current, voltage and wireless information from a port. - description: Read the actual current, voltage and wireless information from a port. The response object can vary depending on the port configuration or port type. + summary: Read the actual current, voltage and wireless information from a port. Optional. + description: >- + Read the actual current, voltage and wireless information from a port. + The response object can vary depending on the port configuration or port type. + + The "secondaryVoltage" and "secondaryCurrent" only relevant for Wired, Class B ports and should reflect the Power 2 power supply. See 5.4.2 in IO-Link Interface and System Specification V1.1.4 June 2024 for more details. parameters: - $ref: "#/components/parameters/masterNumber" - $ref: "#/components/parameters/portNumber" From 15996c7ccaf9be85039f16eabedc6427f6ad9f2d Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 25 Mar 2025 10:31:04 +0100 Subject: [PATCH 164/279] Fixing example --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index cced768..b811295 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -2063,7 +2063,7 @@ paths: portType: FAILSAFE_PORT_B IO-Link_Wireless: value: - portType: WIRELESS_MASTER + portType: WIRELESS_PORT "401": $ref: "#/components/responses/HTTP_401" "403": From 3a98e8a14747b0e2eb4d47522556396065a2079d Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 25 Mar 2025 12:15:15 +0100 Subject: [PATCH 165/279] Creating single definition for deviceAlias description. --- JSON_for_IO-Link.yaml | 17 +++++------------ schemas.yaml | 18 +++++++++++------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index cced768..50d91b5 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3894,18 +3894,11 @@ components: minimum: 1 required: true deviceAlias: - name: deviceAlias - in: path - description: >- - Device name configured with the port/configuration URL. Default device - name is 'masterNportM' where 'N' means the masterNumber and 'M' means - the portNumber. Even if a new device alias has been assigned, the device - can always be addressed via the default name. - schema: - type: string - minLength: 1 - maxLength: 32 - required: true + allOf: + - $ref: "./schemas.yaml#/schemas/deviceAlias" + - name: deviceAlias + in: path + required: true eventOrigin: name: origin in: query diff --git a/schemas.yaml b/schemas.yaml index 5305c8a..66ad6b3 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -1,15 +1,19 @@ schemas: transactionId: description: Unique identifier for the transaction in for example as UUIDv4. + deviceAliasBase: + description: Unique deviceAlias. Default device name is 'masterNportM' where 'N' means the masterNumber and 'M' means + the portNumber. Even if a new device alias has been assigned, the device can always be addressed via the default name. deviceAlias: - type: string - description: Unique deviceAlias. - minLength: 1 - maxLength: 32 - pattern: "^[a-zA-Z0-9_]{1,32}$" - example: master1port1 + allOf: + - $ref: "#/schemas/deviceAliasBase" + - type: string + minLength: 1 + maxLength: 32 + pattern: "^[a-zA-Z0-9_]{1,32}$" + example: master1port1 deviceAliasMqtt: # path parameter shall not contain a type according to async api spec - description: Unique deviceAlias. + $ref: "#/schemas/deviceAliasBase" portNumberMqtt: # path parameter shall not contain a type according to async api spec description: Port number. masterNumberMqtt: # path parameter shall not contain a type according to async api spec From 0f45c589e6fb6f162da6a8df2ac911b545102ccb Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 25 Mar 2025 12:33:18 +0100 Subject: [PATCH 166/279] Removing the try to refernce to the description, looks like it is not possible. --- JSON_for_IO-Link.yaml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 50d91b5..907daf9 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -3894,11 +3894,17 @@ components: minimum: 1 required: true deviceAlias: - allOf: - - $ref: "./schemas.yaml#/schemas/deviceAlias" - - name: deviceAlias - in: path - required: true + name: deviceAlias + in: path + description: >- + Device name configured with the port/configuration URL. Default device + name is 'masterNportM' where 'N' means the masterNumber and 'M' means + the portNumber. Even if a new device alias has been assigned, the device + can always be addressed via the default name. + required: true + schema: + $ref: "./schemas.yaml#/schemas/deviceAlias" + eventOrigin: name: origin in: query From 1fd9938ce0191a3cadae07dba4ef6697c9284347 Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Mon, 14 Apr 2025 09:55:26 +0200 Subject: [PATCH 167/279] Issue #162: Increase the base path to iolink/v2 --- JSON_for_IO-Link.yaml | 12 ++++++------ MQTT_for_IO-Link.yaml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index b71e49e..6cc4efb 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -1,6 +1,6 @@ openapi: 3.0.3 info: - version: 1.1.0 + version: 2.0.0 title: JSON for IO-Link Specification description: >- @@ -10,7 +10,7 @@ info: You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) - * Draft for version 1.1.0 + * Draft for version 2.0.0 * The major versioning of endpoints in case of incompatibility changes is done in the path (e.g. V1, V2, etc.) individually. Request /apiversion in order to get the full version or check the info:version: section of this specification. * **Security:** The defined security schemas are just examples and can be replaced by vendor specifics. The way of restricting requests is as well in the responsibility of the vendor. It is recommended to limit access to writable endpoint. This should prevent misconfiguration and breaking running systems. @@ -58,7 +58,7 @@ servers: host: default: "iolmaster.io-link.com" basePath: - default: iolink/v1 + default: iolink/v2 scheme: description: "The IO-Link gateway can expose the API over https and/or http" enum: @@ -122,7 +122,7 @@ paths: This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description - * Draft for version 1.x + * Draft for version 2.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. @@ -131,7 +131,7 @@ paths: >IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com. - version: 1.1.0 + version: 2.0.0 title: Swagger IO-Link Master contact: email: info@io-link.com @@ -147,7 +147,7 @@ paths: "openapi": "3.0.3", "info": null, "description": "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 1.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", - "version": "1.1.0", + "version": "2.0.0", "title": "Swagger IO-Link Master", "contact": { "email": "info@io-link.com" }, "license": diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index 65b3920..edb0d80 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -1,7 +1,7 @@ asyncapi: 3.0.0 info: title: MQTT for IO-Link Gateways - version: 0.1.0 + version: 2.0.0 description: This is the recommended specification for IO-Link gateway MQTT communication by the IO-Link consortium. termsOfService: "https://www.io-link.com" contact: From 46f08e2da6ff2827e280b4bf88d924b3f35500d7 Mon Sep 17 00:00:00 2001 From: Wolfram Ladurner Date: Mon, 14 Apr 2025 14:30:18 +0200 Subject: [PATCH 168/279] One additional place to increment the version info was missing in the last commit. --- JSON_for_IO-Link.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 6cc4efb..7129d51 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -146,7 +146,7 @@ paths: { "openapi": "3.0.3", "info": null, - "description": "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 1.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", + "description": "This is a sample IO-Link Master server. You can find out more about IO-Link at [http://www.io-link.com](http://www.io-link.com) # Description * Draft for version 2.x ## Disclaimer: >The attention of adopters is directed to the possibility that compliance with or adoption of IO-Link Community specifications may require use of an invention covered by patent rights. The IO-Link Community shall not be responsible for identifying patents for which a license may be required by any IO-Link Community specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. IO-Link Community specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. >The information contained in this document is subject to change without notice. The material in this document details an IO-Link Community specification in accordance with the license and notices set forth on this page. This document does not represent a commitment to implement any portion of this specification in any company's products. >WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE, THE IO-LINK COMMUNITY MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR PARTICULAR PURPOSE OR USE. >In no event shall the IO-Link Community be liable for errors contained herein or for indirect, incidental, special, consequential, reliance or cover damages, including loss of profits, revenue, data or use, incurred by any user or any third party. Compliance with this specification does not absolve manufacturers of IO-Link equipment, from the requirements of safety and regulatory agencies (TÜV, BIA, UL, CSA, etc.). \n\n>IO-Link is a registered trademark. It may be used only by the members of the IO-Link Community and non-members who had acquired the corresponding license. For more detailed information on its use, refer to the rules of the IO-Link Community at www.io-link.com.", "version": "2.0.0", "title": "Swagger IO-Link Master", "contact": { "email": "info@io-link.com" }, From 251ca630984976b0a7dacd97eefeb18ba89c0a43 Mon Sep 17 00:00:00 2001 From: Kolja Roese Date: Mon, 2 Jun 2025 10:15:29 +0200 Subject: [PATCH 169/279] Fix spectral errors and warnings --- MQTT_for_IO-Link.yaml | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/MQTT_for_IO-Link.yaml b/MQTT_for_IO-Link.yaml index edb0d80..e4e2dff 100644 --- a/MQTT_for_IO-Link.yaml +++ b/MQTT_for_IO-Link.yaml @@ -11,6 +11,7 @@ info: license: name: Apache 2.0 url: "http://www.apache.org/licenses/LICENSE-2.0.html" + tags: [{ "name": "IO-Link IoT" }] defaultContentType: application/json servers: iol-master: @@ -32,7 +33,8 @@ channels: address: "{originatorId}/gateway/identification" description: Publishes gateway nameplate information, send at connection startup/on change parameters: - $ref: "./schemas.yaml#/schemas/originatorId" + originatorId: + $ref: "./schemas.yaml#/schemas/originatorId" messages: publish.message: name: gatewayIdentificationMessage @@ -43,7 +45,8 @@ channels: address: "{originatorId}/gateway/events" description: Publishes list of occured gateway events, send on change parameters: - $ref: "./schemas.yaml#/schemas/originatorId" + originatorId: + $ref: "./schemas.yaml#/schemas/originatorId" messages: publish.message: name: gatewayEventsMessage @@ -138,8 +141,8 @@ channels: payload: $ref: "./schemas.yaml#/schemas/deviceParameterValueGetPost" - ? "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}/value" - : address: "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}/value" + "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}/value": + address: "{originatorId}/devices/{deviceAlias}/parameter/{parameterIdent}/{subParameterIdent}/value" description: Publishes device sub-parameter data, depending on the configuration via REST (POST /mqtt/topics), cyclically or on change parameters: originatorId: @@ -190,19 +193,23 @@ channels: operations: "{originatorId}/gateway/identification.publish": + description: Publishes the gateway identification data action: send channel: $ref: "#/channels/{originatorId}~1gateway~1identification" messages: - $ref: >- #/channels/{originatorId}~1gateway~1identification/messages/publish.message + "{originatorId}/gateway/events.publish": + description: Publishes the gateway events action: send channel: $ref: "#/channels/{originatorId}~1gateway~1events" messages: - $ref: "#/channels/{originatorId}~1gateway~1events/messages/publish.message" "{originatorId}/masters/{masterNumber}/identification.publish": + description: Publishes the master identification data action: send channel: $ref: "#/channels/{originatorId}~1masters~1{masterNumber}~1identification" @@ -211,13 +218,16 @@ operations: #/channels/{originatorId}~1masters~1{masterNumber}~1identification/messages/publish.message "{originatorId}/masters/{masterNumber}/ports/{portNumber}/status.publish": + description: Publishes the port status action: send channel: $ref: "#/channels/{originatorId}~1masters~1{masterNumber}~1ports~1{portNumber}~1status" messages: - $ref: >- #/channels/{originatorId}~1masters~1{masterNumber}~1ports~1{portNumber}~1status/messages/publish.message + "{originatorId}/devices/{deviceAlias}/identification.publish": + description: Publishes the device identification data action: send channel: $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1identification" @@ -228,36 +238,46 @@ operations: messages: - $ref: >- #/channels/{originatorId}~1devices~1{deviceAlias}~1identification/messages/publish.message + "{originatorId}/{deviceAlias}/event.publish": + description: Publishes the device events action: send channel: $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1events" messages: - $ref: >- #/channels/{originatorId}~1devices~1{deviceAlias}~1events/messages/publish.message + "{originatorId}/{deviceAlias}/processData.publish": + description: Publishes the device process data action: send channel: $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1processdata~1value" messages: - $ref: >- #/channels/{originatorId}~1devices~1{deviceAlias}~1processdata~1value/messages/publish.message + "{originatorId}/{deviceAlias}/parameter/parameterIdent.publish": + description: Publishes the device parameter data action: send channel: $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}~1value" messages: - $ref: >- #/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}~1value/messages/publish.message - ? "{originatorId}/devices/{deviceAlias}/parameter/parameterIdent/subParameterIdent.publish" - : action: send + + "{originatorId}/devices/{deviceAlias}/parameter/parameterIdent/subParameterIdent.publish": + description: Publishes the device sub-parameter data + action: send channel: $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}~1{subParameterIdent}~1value" messages: - $ref: >- #/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1{parameterIdent}~1value/messages/publish.message - ? "{originatorId}/devices/{deviceAlias}/parameter/request/{transactionId}.subscribe" - : action: receive + + "{originatorId}/devices/{deviceAlias}/parameter/request/{transactionId}.subscribe": + description: Subscribes to device parameter requests + action: receive channel: $ref: "#/channels/{originatorId}~1devices~1{deviceAlias}~1parameter~1request~1{transactionId}" reply: From 8523ad86a2808e99d3eb509c0efc1af4b1d93e0b Mon Sep 17 00:00:00 2001 From: Kolja Roese Date: Mon, 2 Jun 2025 14:11:07 +0200 Subject: [PATCH 170/279] Fix spectral errors --- JSON_for_IO-Link.yaml | 39 ++++++++++++++++++--------------------- schemas.yaml | 25 +++++++++++++------------ 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/JSON_for_IO-Link.yaml b/JSON_for_IO-Link.yaml index 35b97f9..abca663 100644 --- a/JSON_for_IO-Link.yaml +++ b/JSON_for_IO-Link.yaml @@ -760,11 +760,11 @@ paths: tags: - gateway summary: Read current and voltage values of the Gateway. Optional. - description: >- + description: >- Read current and voltage values of the primary and secondary rail of the Gateway. This endpoint should only be available if the gateway is located within the same physical device as the Master(s). - Primary and secondary rails are commonly denoted by US and UA. + Primary and secondary rails are commonly denoted by US and UA. responses: "200": description: Successful operation @@ -2062,7 +2062,7 @@ paths: content: application/json: schema: - oneOf: + anyOf: - $ref: "./schemas.yaml#/schemas/portCapabilitiesGet" - $ref: "./schemas.yaml#/schemas/portCapabilitiesGetWireless" examples: @@ -2102,9 +2102,10 @@ paths: value: 2.0 unit: A portType: FAILSAFE_PORT_B - IO-Link_Wireless: + WIRELESS_PORT: value: portType: WIRELESS_PORT + slotType: SSLOT "401": $ref: "#/components/responses/HTTP_401" "403": @@ -2544,7 +2545,7 @@ paths: tags: - ports summary: Read the actual current, voltage and wireless information from a port. Optional. - description: >- + description: >- Read the actual current, voltage and wireless information from a port. The response object can vary depending on the port configuration or port type. @@ -2779,8 +2780,8 @@ paths: schema: $ref: "./schemas.yaml#/schemas/deviceProcessDataValueGet" examples: - ? "Format=byteArray, CQ in IO-Link (only input), IQ in digital output" - : value: + "Format=byteArray, CQ in IO-Link (only input), IQ in digital output": + value: getData: iolink: valid: true @@ -2790,8 +2791,8 @@ paths: - 216 setData: iqValue: true - ? "Format=iodd, CQ in IO-Link (input and output), IQ in digital input" - : value: + "Format=iodd, CQ in IO-Link (input and output), IQ in digital input": + value: getData: iolink: valid: true @@ -2859,8 +2860,8 @@ paths: schema: $ref: "./schemas.yaml#/schemas/deviceProcessDataValuePost" examples: - ? "format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output" - : value: + "format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital output": + value: iolink: valid: true value: @@ -2952,8 +2953,8 @@ paths: schema: $ref: "./schemas.yaml#/schemas/processDataValue" examples: - ? "Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input" - : value: + "Format=byteArray, CQ (pin4) in IO-Link, IQ (pin2) in digital input": + value: iolink: valid: true value: @@ -3028,8 +3029,8 @@ paths: schema: $ref: "./schemas.yaml#/schemas/processDataValue" examples: - ? "Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input" - : value: + "Format=byteArray, CQ (pin4) in digital output, IQ (pin2) in digital input": + value: cqValue: false "Format=iodd, CQ (pin4) in IO-Link, IQ (pin2) in digital input": value: @@ -3355,8 +3356,8 @@ paths: schema: $ref: "./schemas.yaml#/schemas/errorObject_105" - ? "/devices/{deviceAlias}/parameters/{parameterIdent}/subindices/{subParameterIdent}/value" - : get: + "/devices/{deviceAlias}/parameters/{parameterIdent}/subindices/{subParameterIdent}/value": + get: operationId: GetDevicesDeviceAliasParametersSubindicesValue tags: - devices @@ -4035,10 +4036,6 @@ components: $ref: "./schemas.yaml#/schemas/errorObject_150" examples: # reusable examples - exampleMasterConfiguration: - summary: IO-Link Master - value: - exampleWirelessMasterConfiguration: summary: Wireless IO-Link Master value: diff --git a/schemas.yaml b/schemas.yaml index b31768b..226db60 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -2,8 +2,9 @@ schemas: transactionId: description: Unique identifier for the transaction in for example as UUIDv4. deviceAliasBase: - description: Unique deviceAlias. Default device name is 'masterNportM' where 'N' means the masterNumber and 'M' means - the portNumber. Even if a new device alias has been assigned, the device can always be addressed via the default name. + description: + Unique deviceAlias. Default device name is 'masterNportM' where 'N' means the masterNumber and 'M' means + the portNumber. Even if a new device alias has been assigned, the device can always be addressed via the default name. deviceAlias: allOf: - $ref: "#/schemas/deviceAliasBase" @@ -230,10 +231,10 @@ schemas: type: boolean default: false dataStorageObject: - description: DataStorageObject (including the header) as described in E.6 DS_Data of the IO-Link Interface and System Specification v1.1.4 as Base64 coded string. - type: string - minLength: 16 # 12 octets encoded in Base64 (empty DS) - maxLength: 2748 # 2048 + 12 octets encoded in Base64 + description: DataStorageObject (including the header) as described in E.6 DS_Data of the IO-Link Interface and System Specification v1.1.4 as Base64 coded string. + type: string + minLength: 16 # 12 octets encoded in Base64 (empty DS) + maxLength: 2748 # 2048 + 12 octets encoded in Base64 identificationMasters: type: array items: @@ -345,7 +346,7 @@ schemas: - INFO - DEBUG eventInstance: - description: >- + description: >- Indicate the particular source (instance) of an Event. The IO-Link Instance Unknown maps to UNKNOWN, Reserved to UNKNOWN, Application to APPLICATION, and System to SYSTEM. type: string @@ -968,7 +969,6 @@ schemas: - FAILSAFE_PORT_A_WITHOUT_SAFETY_DIGITAL_INPUTS - FAILSAFE_PORT_A_WITH_SAFETY_DIGITAL_INPUTS - FAILSAFE_PORT_B - - WIRELESS_PORT portCapabilitiesGet: type: object required: @@ -988,7 +988,9 @@ schemas: - slotType properties: portType: - $ref: "#/schemas/portCapabilitiesPorttype" + description: Type of the wireless port (must be WIRELESS_PORT). + type: string + enum: [WIRELESS_PORT] slotType: description: >- slotType for Wireless Master only @@ -996,7 +998,6 @@ schemas: enum: - SSLOT - DSLOT - portConfigurationGetCommon: type: object required: @@ -1886,7 +1887,7 @@ schemas: parameterChecksum: type: integer minimum: 0 - maximum: 4294967295 # UINT32_MAX + maximum: 4294967295 # UINT32_MAX vendorId: type: integer minimum: 0 @@ -1897,7 +1898,7 @@ schemas: type: integer enum: - 0 - - type: object # header for empty DS + - type: object # header for empty DS required: - parameterChecksum - vendorId From 2832eea7d7e78d55b9fa219fddbeea295e2a05d2 Mon Sep 17 00:00:00 2001 From: roesekoSICKAG <95340986+roesekoSICKAG@users.noreply.github.com> Date: Mon, 2 Jun 2025 14:38:02 +0200 Subject: [PATCH 171/279] Update linting.yml and fix spectral version --- .github/workflows/linting.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 1d94606..cd66d94 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v2 # Run Spectral - - uses: stoplightio/spectral-action@latest + - uses: stoplightio/spectral-action@v1.0.0 with: file_glob: "JSON_for_IO-Link.yaml" spectral_ruleset: .spectral.yaml From 9d3c51f8d38d8e949709bbf4a9c041df459d7769 Mon Sep 17 00:00:00 2001 From: roesekoSICKAG <95340986+roesekoSICKAG@users.noreply.github.com> Date: Mon, 2 Jun 2025 15:04:56 +0200 Subject: [PATCH 172/279] Update linting.yml --- .github/workflows/linting.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index cd66d94..bc34d86 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v2 # Run Spectral - - uses: stoplightio/spectral-action@v1.0.0 + - uses: stoplightio/spectral-action@v0.8.11 with: file_glob: "JSON_for_IO-Link.yaml" spectral_ruleset: .spectral.yaml From 3c506ec75ef1e3ecd668d722e7087be9a16bea30 Mon Sep 17 00:00:00 2001 From: roesekoSICKAG <95340986+roesekoSICKAG@users.noreply.github.com> Date: Mon, 2 Jun 2025 15:08:31 +0200 Subject: [PATCH 173/279] Update linting.yml --- .github/workflows/linting.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index bc34d86..ed61bfb 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: # Check out the repository - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # Run Spectral - uses: stoplightio/spectral-action@v0.8.11 From 36af24dea4fc778e7c4319dfd94dc0d678b63571 Mon Sep 17 00:00:00 2001 From: roesekoSICKAG <95340986+roesekoSICKAG@users.noreply.github.com> Date: Mon, 2 Jun 2025 15:33:33 +0200 Subject: [PATCH 174/279] Create pipe.yml --- .github/workflows/pipe.yml | 49 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .github/workflows/pipe.yml diff --git a/.github/workflows/pipe.yml b/.github/workflows/pipe.yml new file mode 100644 index 0000000..4b653b7 --- /dev/null +++ b/.github/workflows/pipe.yml @@ -0,0 +1,49 @@ +name: CI Pipeline + +on: + - push + - pull_request + +jobs: + merge: + name: Run swagger-merger API specifications + runs-on: ubuntu-latest + steps: + # Check out the repository + - uses: actions/checkout@v4 + + # install swagger-merger + - name: install swagger-merger + run: npm install -g swagger-merger + + # Run swagger-merger + - name: Run swagger-merger + run: | + swagger-merger -i MQTT_for_IO-Link.yaml schemas.yaml examples.yaml -o MQTT_for_IO-Link_merged.yaml + swagger-merger -i JSON_for_IO-Link.yaml schemas.yaml examples.yaml -o JSON_for_IO-Link_merged.yaml + + - name: Run Spectral on Async API Spec + uses: stoplightio/spectral-action@v0.8.11 + # Run Spectral + with: + file_glob: "MQTT_for_IO-Link_merged.yaml" + spectral_ruleset: .spectral.yaml + + - name: Upload merged MQTT_for_IO-Link YAML file as artifact + uses: actions/upload-artifact@v4 + with: + name: mqtt-yaml + path: MQTT_for_IO-Link_merged.yaml + + - name: Run Spectral on OpenAPI Spec + uses: stoplightio/spectral-action@v0.8.11 + # Run Spectral + with: + file_glob: "JSON_for_IO-Link_merged.yaml" + spectral_ruleset: .spectral.yaml + + - name: Upload merged JSON_for_IO-Link YAML file as artifact + uses: actions/upload-artifact@v4 + with: + name: json-yaml + path: JSON_for_IO-Link_merged.yaml From 8bfb5b047a53107f1d8f16dfc8a1e70a465eac27 Mon Sep 17 00:00:00 2001 From: Kolja Roese Date: Tue, 3 Jun 2025 07:43:33 +0000 Subject: [PATCH 175/279] Change linter to vacuum and remove other actions --- .github/workflows/linting.yml | 37 +++++++++++++++++------- .github/workflows/pipe.yml | 49 -------------------------------- .github/workflows/spec-merge.yml | 35 ----------------------- 3 files changed, 27 insertions(+), 94 deletions(-) delete mode 100644 .github/workflows/pipe.yml delete mode 100644 .github/workflows/spec-merge.yml diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index ed61bfb..d6aea58 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -1,19 +1,36 @@ -name: Lint RestAPI with Spectral +# .github/workflows/lint.yml +name: Lint on: - - push - - pull_request + pull_request: {} + push: + branches: [main] + paths-ignore: + - 'README.md' + - 'src/**' jobs: build: - name: Run Spectral + name: API Linting runs-on: ubuntu-latest + + permissions: + statuses: write + checks: write + steps: - # Check out the repository - - uses: actions/checkout@v3 + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: npm ci + + - name: Lint API + run: npm exec vacuum report -- --junit openapi.yaml lint-results - # Run Spectral - - uses: stoplightio/spectral-action@v0.8.11 + - name: Publish Lint Results + if: success() || failure() + uses: mikepenz/action-junit-report@v5 with: - file_glob: "JSON_for_IO-Link.yaml" - spectral_ruleset: .spectral.yaml + check_name: API Lint Results + report_paths: lint-results-*.xml \ No newline at end of file diff --git a/.github/workflows/pipe.yml b/.github/workflows/pipe.yml deleted file mode 100644 index 4b653b7..0000000 --- a/.github/workflows/pipe.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: CI Pipeline - -on: - - push - - pull_request - -jobs: - merge: - name: Run swagger-merger API specifications - runs-on: ubuntu-latest - steps: - # Check out the repository - - uses: actions/checkout@v4 - - # install swagger-merger - - name: install swagger-merger - run: npm install -g swagger-merger - - # Run swagger-merger - - name: Run swagger-merger - run: | - swagger-merger -i MQTT_for_IO-Link.yaml schemas.yaml examples.yaml -o MQTT_for_IO-Link_merged.yaml - swagger-merger -i JSON_for_IO-Link.yaml schemas.yaml examples.yaml -o JSON_for_IO-Link_merged.yaml - - - name: Run Spectral on Async API Spec - uses: stoplightio/spectral-action@v0.8.11 - # Run Spectral - with: - file_glob: "MQTT_for_IO-Link_merged.yaml" - spectral_ruleset: .spectral.yaml - - - name: Upload merged MQTT_for_IO-Link YAML file as artifact - uses: actions/upload-artifact@v4 - with: - name: mqtt-yaml - path: MQTT_for_IO-Link_merged.yaml - - - name: Run Spectral on OpenAPI Spec - uses: stoplightio/spectral-action@v0.8.11 - # Run Spectral - with: - file_glob: "JSON_for_IO-Link_merged.yaml" - spectral_ruleset: .spectral.yaml - - - name: Upload merged JSON_for_IO-Link YAML file as artifact - uses: actions/upload-artifact@v4 - with: - name: json-yaml - path: JSON_for_IO-Link_merged.yaml diff --git a/.github/workflows/spec-merge.yml b/.github/workflows/spec-merge.yml deleted file mode 100644 index dffbc30..0000000 --- a/.github/workflows/spec-merge.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Merge async api specification - -on: - - push - - pull_request - -jobs: - build: - name: Run swagger-merger - runs-on: ubuntu-latest - steps: - # Check out the repository - - uses: actions/checkout@v4 - - # install swagger-merger - - name: install swagger-merger - run: npm install -g swagger-merger - - # Run swagger-merger - - name: Run swagger-merger - run: | - swagger-merger -i MQTT_for_IO-Link.yaml schemas.yaml examples.yaml -o MQTT_for_IO-Link_merged.yaml - swagger-merger -i JSON_for_IO-Link.yaml schemas.yaml examples.yaml -o JSON_for_IO-Link_merged.yaml - - - name: Upload merged MQTT_for_IO-Link YAML file as artifact - uses: actions/upload-artifact@v4 - with: - name: mqtt-yaml - path: MQTT_for_IO-Link_merged.yaml - - - name: Upload merged JSON_for_IO-Link YAML file as artifact - uses: actions/upload-artifact@v4 - with: - name: json-yaml - path: JSON_for_IO-Link_merged.yaml From dca1be288cb705c575d7beec231e9eccc83f8bc7 Mon Sep 17 00:00:00 2001 From: Kolja Roese Date: Tue, 3 Jun 2025 07:48:14 +0000 Subject: [PATCH 176/279] Fix action --- .github/workflows/linting.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index d6aea58..60d1989 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -23,10 +23,10 @@ jobs: uses: actions/checkout@v4 - name: Install dependencies - run: npm ci + run: npm install -g @quobix/vacuum - name: Lint API - run: npm exec vacuum report -- --junit openapi.yaml lint-results + run: vacuum report -- --junit JSON_for_IO-Link.yaml lint-results - name: Publish Lint Results if: success() || failure() From 1c69a97559d44249110fed6cef5441d8b9c4c653 Mon Sep 17 00:00:00 2001 From: Kolja Roese Date: Tue, 3 Jun 2025 07:50:46 +0000 Subject: [PATCH 177/279] Correct command --- .github/workflows/linting.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 60d1989..1fd9139 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -26,7 +26,7 @@ jobs: run: npm install -g @quobix/vacuum - name: Lint API - run: vacuum report -- --junit JSON_for_IO-Link.yaml lint-results + run: vacuum report --junit JSON_for_IO-Link.yaml lint-results - name: Publish Lint Results if: success() || failure() From aa1898ee99f8d86c6ee3cd4ad522064367a6a92d Mon Sep 17 00:00:00 2001 From: Kolja Roese Date: Tue, 3 Jun 2025 08:42:42 +0000 Subject: [PATCH 178/279] Adjust linting ruleset. Fix descriptions --- .github/workflows/linting.yml | 2 +- .ruleset.yaml | 847 ++++++++++++++++++++++++++++++++++ JSON_for_IO-Link.yaml | 17 + 3 files changed, 865 insertions(+), 1 deletion(-) create mode 100644 .ruleset.yaml diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 1fd9139..1b24267 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -26,7 +26,7 @@ jobs: run: npm install -g @quobix/vacuum - name: Lint API - run: vacuum report --junit JSON_for_IO-Link.yaml lint-results + run: vacuum report -r .ruleset.yaml --junit JSON_for_IO-Link.yaml lint-results - name: Publish Lint Results if: success() || failure() diff --git a/.ruleset.yaml b/.ruleset.yaml new file mode 100644 index 0000000..0404356 --- /dev/null +++ b/.ruleset.yaml @@ -0,0 +1,847 @@ +description: Recommended rules for a high quality specification. +documentationUrl: https://quobix.com/vacuum/rulesets/recommended +rules: + component-description: + category: + description: Documentation is really important, in OpenAPI, just about everything can and should have a description. This set of rules checks for absent descriptions, poor quality descriptions (copy/paste), or short descriptions. + id: descriptions + name: Descriptions + description: Component description check + formats: + - oas3 + - oas3_1 + given: $ + howToFix: Components are the inputs and outputs of a specification. A user needs to be able to understand each component and what id does. Descriptions are critical to understanding components. Add a description! + id: component-description + recommended: true + resolved: true + severity: warn + then: + function: oasComponentDescriptions + type: validation + duplicated-entry-in-enum: + category: + description: Schemas are how request bodies and response payloads are defined. They define the data going in and the data flowing out of an operation. These rules check for structural validity, checking types, checking required fields and validating correct use of structures. + id: schemas + name: Schemas + description: Enum values must not have duplicate entry + formats: + - oas3 + - oas3_1 + - oas2 + given: $ + howToFix: Enums need to be unique, you can't duplicate them in the same definition. Please remove the duplicate value. + id: duplicated-entry-in-enum + recommended: true + severity: error + then: + function: duplicatedEnum + type: validation + info-description: + category: + description: The info object contains licencing, contact, authorship details and more. Checks to confirm required details have been completed. + id: information + name: Contract Information + description: Info section is missing a description + formats: + - oas3 + - oas3_1 + - oas2 + given: $ + howToFix: The 'info' section is missing a description, surely you want people to know what this spec is all about, right? + id: info-description + recommended: true + resolved: true + severity: error + then: + function: infoDescription + type: validation + info-license-spdx: + category: + description: The info object contains licencing, contact, authorship details and more. Checks to confirm required details have been completed. + id: information + name: Contract Information + description: License section cannot contain both an identifier and a URL, they are mutually exclusive. + formats: + - oas3 + - oas3_1 + - oas2 + given: $ + howToFix: A license can contain either a URL or an SPDX identifier, but not both, They are mutually exclusive and cannot both be present. Choose one or the other + id: info-license-spdx + recommended: true + resolved: true + severity: error + then: + function: infoLicenseURLSPDX + type: validation + no-$ref-siblings: + category: + description: Schemas are how request bodies and response payloads are defined. They define the data going in and the data flowing out of an operation. These rules check for structural validity, checking types, checking required fields and validating correct use of structures. + id: schemas + name: Schemas + description: $ref values cannot be placed next to other properties (like a description) + formats: + - oas2 + - oas3 + given: $ + howToFix: $ref values must not be placed next to sibling nodes, There should only be a single node when using $ref. A common mistake is adding 'description' next to a $ref. This is wrong. remove all siblings! + id: no-$ref-siblings + recommended: true + severity: error + then: + function: refSiblings + type: validation + no-ambiguous-paths: + category: + description: Operations are the core of the contract, they define paths and HTTP methods. These rules check operations have been well constructed, looks for operationId, parameter, schema and return types in depth. + id: operations + name: Operations + description: Paths need to resolve unambiguously from one another + formats: + - oas3 + - oas3_1 + - oas2 + given: $ + howToFix: Paths must all resolve unambiguously, they can't be confused with one another (/{id}/ambiguous and /ambiguous/{id} are the same thing. Make sure every path and the variables used are unique and do conflict with one another. Check the ordering of variables and the naming of path segments. + id: no-ambiguous-paths + recommended: true + resolved: true + severity: error + then: + function: noAmbiguousPaths + type: validation + no-eval-in-markdown: + category: + description: Validation rules make sure that certain characters or patterns have not been used that may cause issues when rendering in different types of applications. + id: validation + name: Validation + description: Markdown descriptions must not have `eval()` statements' + formats: + - oas3 + - oas3_1 + - oas2 + given: $ + howToFix: Remove all references to 'eval()' in the description. These can be used by malicious actors to embed code in contracts that is then executed when read by a browser. + id: no-eval-in-markdown + recommended: true + resolved: true + severity: error + then: + function: noEvalDescription + functionOptions: + pattern: eval\( + type: validation + no-http-verbs-in-path: + category: + description: Operations are the core of the contract, they define paths and HTTP methods. These rules check operations have been well constructed, looks for operationId, parameter, schema and return types in depth. + id: operations + name: Operations + description: Path segments must not contain an HTTP verb + formats: + - oas3 + - oas3_1 + - oas2 + given: $ + howToFix: When HTTP verbs (get/post/put etc) are used in path segments, it muddies the semantics of REST and creates a confusing and inconsistent experience. It's highly recommended that verbs are not used in path segments. Replace those HTTP verbs with more meaningful nouns. + id: no-http-verbs-in-path + recommended: true + severity: warn + then: + function: noVerbsInPath + type: style + no-request-body: + category: + description: Operations are the core of the contract, they define paths and HTTP methods. These rules check operations have been well constructed, looks for operationId, parameter, schema and return types in depth. + id: operations + name: Operations + description: HTTP GET and DELETE should not accept request bodies + formats: + - oas3 + - oas3_1 + given: $ + howToFix: Remove 'requestBody' from HTTP GET and DELETE methods + id: no-request-body + recommended: true + severity: warn + then: + function: noRequestBody + type: style + no-script-tags-in-markdown: + category: + description: Validation rules make sure that certain characters or patterns have not been used that may cause issues when rendering in different types of applications. + id: validation + name: Validation + description: Markdown descriptions must not have `