--- openapi: "3.0.1" info: title: "hawkBit REST APIs" description: "Eclipse hawkBit™ is a domain-independent back-end framework for rolling\ \ out software updates to constrained edge devices as well as more powerful controllers\ \ and gateways connected to IP based networking infrastructure.\n" version: "v1" servers: - url: "http://localhost:44067" description: "Generated server url" tags: - name: "DDI Root Controller" description: "REST resource handling for root controller CRUD operations" paths: /{tenant}/controller/v1/{controllerId}/configData: put: tags: - "DDI Root Controller" summary: "Feedback channel for the config data action" description: "The usual behaviour is that when a new device registers at the\ \ server it is requested to provide the meta information that will allow the\ \ server to identify the device on a hardware level (e.g. hardware revision,\ \ mac address, serial number etc.).\n" operationId: "putConfigData" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" requestBody: content: application/json: schema: $ref: "#/components/schemas/DdiConfigData" application/cbor: schema: $ref: "#/components/schemas/DdiConfigData" required: true responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "409": description: "E.g. in case an entity is created or modified by another user\ \ in another request at the same time. You may retry your modification\ \ request." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "415": description: "The request was attempt with a media-type which is not supported\ \ by the server for this resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" /{tenant}/controller/v1/{controllerId}/deploymentBase/{actionId}/feedback: post: tags: - "DDI Root Controller" summary: "Feedback channel for the DeploymentBase action" description: "Feedback channel. It is up to the device how much intermediate\ \ feedback is provided.\nHowever, the action will be kept open until the controller\ \ on the device reports a finished (either successful or error).\n" operationId: "postBasedeploymentActionFeedback" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" - name: "actionId" in: "path" required: true schema: type: "integer" format: "int64" requestBody: content: application/json: schema: $ref: "#/components/schemas/DdiActionFeedback" application/cbor: schema: $ref: "#/components/schemas/DdiActionFeedback" required: true responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "409": description: "E.g. in case an entity is created or modified by another user\ \ in another request at the same time. You may retry your modification\ \ request." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "415": description: "The request was attempt with a media-type which is not supported\ \ by the server for this resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "410": description: "Action is not active anymore." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" "404": description: "Target not found" content: application/json: {} /{tenant}/controller/v1/{controllerId}/confirmationBase/{actionId}/feedback: post: tags: - "DDI Root Controller" summary: "Feedback channel for actions waiting for confirmation" description: "The device will use this resource to either confirm or deny an\ \ action which is waiting for confirmation. The action will be transferred\ \ into the RUNNING state in case the device is confirming it. Afterwards it\ \ will be exposed by the deploymentBase.\n" operationId: "postConfirmationActionFeedback" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" - name: "actionId" in: "path" required: true schema: type: "integer" format: "int64" requestBody: content: application/json: schema: $ref: "#/components/schemas/DdiConfirmationFeedback" application/cbor: schema: $ref: "#/components/schemas/DdiConfirmationFeedback" required: true responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "409": description: "E.g. in case an entity is created or modified by another user\ \ in another request at the same time. You may retry your modification\ \ request." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "415": description: "The request was attempt with a media-type which is not supported\ \ by the server for this resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "410": description: "Action is not active anymore." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" "404": description: "Target or Action not found" content: application/json: {} /{tenant}/controller/v1/{controllerId}/confirmationBase/deactivateAutoConfirm: post: tags: - "DDI Root Controller" summary: "Interface to deactivate auto-confirmation for a specific controller" description: "The device can use this resource to deactivate auto-confirmation.\ \ All active actions will remain unchanged while all future actions need to\ \ be confirmed, before processing with the deployment.\n" operationId: "deactivateAutoConfirmation" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "409": description: "E.g. in case an entity is created or modified by another user\ \ in another request at the same time. You may retry your modification\ \ request." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "415": description: "The request was attempt with a media-type which is not supported\ \ by the server for this resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" "404": description: "Target not found" content: application/json: {} /{tenant}/controller/v1/{controllerId}/confirmationBase/activateAutoConfirm: post: tags: - "DDI Root Controller" summary: "Interface to activate auto-confirmation for a specific device" description: "The device can use this resource to activate auto-confirmation.\ \ As a result all current active as well as future actions will automatically\ \ be confirmed by mentioning the initiator as triggered person. Actions will\ \ be automatically confirmed, as long as auto-confirmation is active.\n" operationId: "activateAutoConfirmation" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" requestBody: content: application/json: schema: $ref: "#/components/schemas/DdiActivateAutoConfirmation" application/cbor: schema: $ref: "#/components/schemas/DdiActivateAutoConfirmation" responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "409": description: "E.g. in case an entity is created or modified by another user\ \ in another request at the same time. You may retry your modification\ \ request." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "415": description: "The request was attempt with a media-type which is not supported\ \ by the server for this resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" "404": description: "Target not found" content: application/json: {} /{tenant}/controller/v1/{controllerId}/cancelAction/{actionId}/feedback: post: tags: - "DDI Root Controller" summary: "Feedback channel for cancel actions" description: "It is up to the device how much intermediate feedback is provided.\ \ However, the action will be kept open until the controller on the device\ \ reports a finished (either successful or error) or rejects the action, e.g.\ \ the canceled actions have been started already.\n" operationId: "postCancelActionFeedback" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" - name: "actionId" in: "path" required: true schema: type: "integer" format: "int64" requestBody: content: application/json: schema: $ref: "#/components/schemas/DdiActionFeedback" application/cbor: schema: $ref: "#/components/schemas/DdiActionFeedback" required: true responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "409": description: "E.g. in case an entity is created or modified by another user\ \ in another request at the same time. You may retry your modification\ \ request." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "415": description: "The request was attempt with a media-type which is not supported\ \ by the server for this resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" /{tenant}/controller/v1/{controllerId}: get: tags: - "DDI Root Controller" summary: "Root resource for an individual Target" description: "This base resource can be regularly polled by the controller on\ \ the provisioning target or device in order to retrieve actions that need\ \ to be executed. Those are provided as a list of links to give more detailed\ \ information about the action. Links are only available for initial configuration,\ \ open actions, or the latest installed action, respectively. The resource\ \ supports Etag based modification checks in order to save traffic.\n\nNote:\ \ deployments have to be confirmed in order to move on to the next action.\ \ Cancellations have to be confirmed or rejected.\n" operationId: "getControllerBase" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" responses: "200": description: "In this case the (optional) query for the last 10 messages,\ \ previously provided by the device, are included. Useful if the devices\ \ provide state information previously on the feedback channel and won’\ t store it locally." content: application/hal+json: schema: $ref: "#/components/schemas/DdiControllerBase" application/json: schema: $ref: "#/components/schemas/DdiControllerBase" application/cbor: schema: $ref: "#/components/schemas/DdiControllerBase" "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} /{tenant}/controller/v1/{controllerId}/softwaremodules/{softwareModuleId}/artifacts: get: tags: - "DDI Root Controller" summary: "Return all artifacts of a given software module and target" description: "Returns all artifacts that are assigned to the software module" operationId: "getSoftwareModulesArtifacts" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" - name: "softwareModuleId" in: "path" required: true schema: type: "integer" format: "int64" responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" content: application/hal+json: schema: type: "array" items: $ref: "#/components/schemas/DdiArtifact" application/json: schema: type: "array" items: $ref: "#/components/schemas/DdiArtifact" application/cbor: schema: type: "array" items: $ref: "#/components/schemas/DdiArtifact" /{tenant}/controller/v1/{controllerId}/softwaremodules/{softwareModuleId}/artifacts/{fileName}: get: tags: - "DDI Root Controller" summary: "Artifact download" description: "Handles GET DdiArtifact download request. This could be full or\ \ partial (as specified by RFC7233 (Range Requests)) download request." operationId: "downloadArtifact" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" - name: "softwareModuleId" in: "path" required: true schema: type: "integer" format: "int64" - name: "fileName" in: "path" required: true schema: type: "string" responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "404": description: "Target or Module not found" content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" content: '*/*': schema: type: "object" /{tenant}/controller/v1/{controllerId}/softwaremodules/{softwareModuleId}/artifacts/{fileName}.MD5SUM: get: tags: - "DDI Root Controller" summary: "MD5 checksum download" description: "Handles GET {@link DdiArtifact} MD5 checksum file download request." operationId: "downloadArtifactMd5" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" - name: "softwareModuleId" in: "path" required: true schema: type: "integer" format: "int64" - name: "fileName" in: "path" required: true schema: type: "string" responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "404": description: "Target or Module not found" content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" /{tenant}/controller/v1/{controllerId}/installedBase/{actionId}: get: tags: - "DDI Root Controller" summary: "Previously installed action" description: "Resource to receive information of the previous installation.\ \ Can be used to re-retrieve artifacts of the already finished action, for\ \ example in case a re-installation is necessary. The response will be of\ \ the same format as the deploymentBase operation, providing the previous\ \ action that has been finished successfully. As the action is already finished,\ \ no further feedback is expected.\n\nKeep in mind that the provided download\ \ links for the artifacts are generated dynamically by the update server.\ \ Host, port and path are not guaranteed to be similar to the provided examples\ \ below but will be defined at runtime.\n" operationId: "getControllerInstalledAction" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" - name: "actionId" in: "path" required: true schema: type: "integer" format: "int64" - name: "actionHistory" in: "query" required: false schema: type: "integer" format: "int32" default: 0 responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "200": description: "The response body includes the detailed operation for the\ \ already finished action in the same format as for the deploymentBase\ \ operation.\n\nIn this case the (optional) query for the last 10 messages,\ \ previously provided by the device, are included." content: application/hal+json: schema: $ref: "#/components/schemas/DdiDeploymentBase" application/json: schema: $ref: "#/components/schemas/DdiDeploymentBase" application/cbor: schema: $ref: "#/components/schemas/DdiDeploymentBase" "405": description: "The http request method is not allowed on the resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} /{tenant}/controller/v1/{controllerId}/deploymentBase/{actionId}: get: tags: - "DDI Root Controller" summary: "Resource for software module (Deployment Base)" description: "Core resource for deployment operations. Contains all information\ \ necessary in order to execute the operation.\n\nKeep in mind that the provided\ \ download links for the artifacts are generated dynamically by the update\ \ server. Host, port and path and not guaranteed to be similar to the provided\ \ examples below but will be defined at runtime.\n" operationId: "getControllerBasedeploymentAction" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" - name: "actionId" in: "path" required: true schema: type: "integer" format: "int64" - name: "c" in: "query" required: false schema: type: "integer" format: "int32" default: -1 - name: "actionHistory" in: "query" required: false schema: type: "integer" format: "int32" default: 0 responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" content: application/hal+json: schema: $ref: "#/components/schemas/DdiDeploymentBase" application/json: schema: $ref: "#/components/schemas/DdiDeploymentBase" application/cbor: schema: $ref: "#/components/schemas/DdiDeploymentBase" /{tenant}/controller/v1/{controllerId}/confirmationBase: get: tags: - "DDI Root Controller" summary: "Resource to request confirmation specific information for the controller" description: "Core resource for confirmation related operations. While active\ \ actions awaiting confirmation will be referenced, the current auto-confirmation\ \ status will be shown. In case auto-confirmation is active, details like\ \ the initiator, remark and date of activation (as unix timestamp) will be\ \ provided.\nReference links to switch the auto-confirmation state are exposed\ \ as well.\n" operationId: "getConfirmationBase" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" responses: "200": description: "The response body in case auto-confirmation is active is richer\ \ - it contains additional information\nsuch as initiator, remark and\ \ when the auto-confirmation had been activated.\n" content: application/hal+json: schema: $ref: "#/components/schemas/DdiConfirmationBase" application/json: schema: $ref: "#/components/schemas/DdiConfirmationBase" application/cbor: schema: $ref: "#/components/schemas/DdiConfirmationBase" "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} /{tenant}/controller/v1/{controllerId}/confirmationBase/{actionId}: get: tags: - "DDI Root Controller" summary: "Confirmation status of an action" description: "Resource to receive information about a pending confirmation.\ \ The response will be of the same format as the deploymentBase operation.\ \ The controller should provide feedback about the confirmation first, before\ \ processing the deployment.\n\nKeep in mind that the provided download links\ \ for the artifacts are generated dynamically by the update server. Host,\ \ port and path are not guaranteed to be similar to the provided examples\ \ below but will be defined at runtime.\n" operationId: "getConfirmationBaseAction" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" - name: "actionId" in: "path" required: true schema: type: "integer" format: "int64" - name: "c" in: "query" required: false schema: type: "integer" format: "int32" default: -1 - name: "actionHistory" in: "query" required: false schema: type: "integer" format: "int32" default: 0 responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "The response body includes the detailed information about\ \ the action awaiting confirmation in the same format as for the deploymentBase\ \ operation." content: application/hal+json: schema: $ref: "#/components/schemas/DdiConfirmationBaseAction" application/json: schema: $ref: "#/components/schemas/DdiConfirmationBaseAction" application/cbor: schema: $ref: "#/components/schemas/DdiConfirmationBaseAction" "404": description: "Target not found" content: application/json: {} /{tenant}/controller/v1/{controllerId}/cancelAction/{actionId}: get: tags: - "DDI Root Controller" summary: "Cancel an action" description: "The Hawkbit server might cancel an operation, e.g. an unfinished\ \ update has a successor. It is up to the provisioning target to decide to\ \ accept the cancelation or reject it.\n" operationId: "getControllerCancelAction" parameters: - name: "tenant" in: "path" required: true schema: type: "string" - name: "controllerId" in: "path" required: true schema: type: "string" - name: "actionId" in: "path" required: true schema: type: "integer" format: "int64" responses: "406": description: "In case accept header is specified and not application/json." content: application/json: {} "429": description: "Too many requests. The server will refuse further attempts\ \ and the client has to wait another second." content: application/json: {} "405": description: "The http request method is not allowed on the resource." content: application/json: {} "400": description: "Bad Request - e.g. invalid parameters" content: application/json: schema: $ref: "#/components/schemas/ExceptionInfo" "403": description: "Insufficient permissions, entity is not allowed to be changed\ \ (i.e. read-only) or data volume restriction applies." content: application/json: {} "401": description: "The request requires user authentication." content: application/json: {} "200": description: "Successfully retrieved" content: application/hal+json: schema: $ref: "#/components/schemas/DdiCancel" application/json: schema: $ref: "#/components/schemas/DdiCancel" application/cbor: schema: $ref: "#/components/schemas/DdiCancel" components: schemas: DdiConfigData: required: - "data" type: "object" properties: data: type: "object" additionalProperties: type: "string" mode: type: "string" example: "merge" enum: - "merge" - "replace" - "remove" ExceptionInfo: type: "object" properties: exceptionClass: type: "string" errorCode: type: "string" message: type: "string" parameters: type: "array" items: type: "string" Link: type: "object" properties: rel: type: "string" href: type: "string" hreflang: type: "string" media: type: "string" title: type: "string" type: type: "string" deprecation: type: "string" profile: type: "string" name: type: "string" DdiActionFeedback: required: - "status" type: "object" properties: time: type: "string" example: "2023-08-03T12:31:41.890992967Z" status: $ref: "#/components/schemas/DdiStatus" DdiProgress: required: - "cnt" type: "object" properties: cnt: type: "integer" format: "int32" example: 2 of: type: "integer" format: "int32" example: 5 DdiResult: required: - "finished" type: "object" properties: finished: type: "string" enum: - "success" - "failure" - "none" progress: $ref: "#/components/schemas/DdiProgress" DdiStatus: required: - "execution" - "result" type: "object" properties: execution: type: "string" enum: - "closed" - "proceeding" - "canceled" - "scheduled" - "rejected" - "resumed" - "downloaded" - "download" result: $ref: "#/components/schemas/DdiResult" code: type: "integer" format: "int32" example: 200 details: type: "array" items: type: "string" DdiConfirmationFeedback: required: - "confirmation" type: "object" properties: confirmation: type: "string" enum: - "confirmed" - "denied" code: type: "integer" format: "int32" example: 200 details: type: "array" items: type: "string" DdiActivateAutoConfirmation: type: "object" properties: initiator: type: "string" example: "exampleUser" remark: type: "string" example: "exampleRemark" DdiConfig: type: "object" properties: polling: $ref: "#/components/schemas/DdiPolling" DdiControllerBase: type: "object" properties: config: $ref: "#/components/schemas/DdiConfig" links: type: "array" items: $ref: "#/components/schemas/Link" DdiPolling: type: "object" properties: sleep: type: "string" example: "12:00:00" DdiArtifact: required: - "filename" type: "object" properties: filename: type: "string" example: "binary.tgz" hashes: $ref: "#/components/schemas/DdiArtifactHash" size: type: "integer" format: "int64" example: 3 links: type: "array" items: $ref: "#/components/schemas/Link" DdiArtifactHash: type: "object" properties: sha1: type: "string" example: "2d86c2a659e364e9abba49ea6ffcd53dd5559f05" md5: type: "string" example: "0d1b08c34858921bc7c662b228acb7ba" sha256: type: "string" example: "a03b221c6c6eae7122ca51695d456d5222e524889136394944b2f9763b483615" DdiActionHistory: type: "object" properties: status: type: "string" example: "RUNNING" messages: type: "array" items: type: "string" DdiChunk: required: - "name" - "part" - "version" type: "object" properties: part: type: "string" example: "bApp" version: type: "string" example: "1.2.0" name: type: "string" example: "oneApp" encrypted: type: "boolean" artifacts: type: "array" items: $ref: "#/components/schemas/DdiArtifact" metadata: type: "array" items: $ref: "#/components/schemas/DdiMetadata" DdiDeployment: required: - "chunks" type: "object" properties: download: type: "string" enum: - "skip" - "attempt" - "forced" update: type: "string" enum: - "skip" - "attempt" - "forced" maintenanceWindow: type: "string" enum: - "available" - "unavailable" chunks: type: "array" items: $ref: "#/components/schemas/DdiChunk" DdiDeploymentBase: required: - "deployment" - "id" type: "object" properties: id: type: "string" example: "8" deployment: $ref: "#/components/schemas/DdiDeployment" actionHistory: $ref: "#/components/schemas/DdiActionHistory" links: type: "array" items: $ref: "#/components/schemas/Link" DdiMetadata: required: - "key" - "value" type: "object" properties: key: type: "string" example: "aMetadataKey" value: type: "string" example: "Metadata value as defined in software module" DdiAutoConfirmationState: required: - "active" type: "object" properties: active: type: "boolean" example: true initiator: type: "string" example: "exampleUserId" remark: type: "string" example: "exampleRemark" activatedAt: type: "integer" format: "int64" example: 1691065895439 links: type: "array" items: $ref: "#/components/schemas/Link" DdiConfirmationBase: required: - "autoConfirm" type: "object" properties: autoConfirm: $ref: "#/components/schemas/DdiAutoConfirmationState" links: type: "array" items: $ref: "#/components/schemas/Link" DdiConfirmationBaseAction: required: - "confirmation" - "id" type: "object" properties: id: type: "string" example: "6" confirmation: $ref: "#/components/schemas/DdiDeployment" actionHistory: $ref: "#/components/schemas/DdiActionHistory" links: type: "array" items: $ref: "#/components/schemas/Link" DdiCancel: required: - "cancelAction" type: "object" properties: id: type: "string" example: "11" cancelAction: $ref: "#/components/schemas/DdiCancelActionToStop" DdiCancelActionToStop: required: - "stopId" type: "object" properties: stopId: type: "string" example: "11"