Amazon IoT Device Defender OtaUpdates API

The OtaUpdates API from Amazon IoT Device Defender — 2 operation(s) for otaupdates.

OpenAPI Specification

amazon-iot-device-defender-otaupdates-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 2015-05-28
  x-release: v4
  title: AWS IoT Accept Certificate Transfer OtaUpdates API
  description: '<fullname>IoT</fullname> <p>IoT provides secure, bi-directional communication between Internet-connected devices (such as sensors, actuators, embedded devices, or smart appliances) and the Amazon Web Services cloud. You can discover your custom IoT-Data endpoint to communicate with, configure rules for data processing and integration with other services, organize resources associated with each device (Registry), configure logging, and create and manage policies and credentials to authenticate devices.</p> <p>The service endpoints that expose this API are listed in <a href="https://docs.aws.amazon.com/general/latest/gr/iot-core.html">Amazon Web Services IoT Core Endpoints and Quotas</a>. You must use the endpoint for the region that has the resources you want to access.</p> <p>The service name used by <a href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Amazon Web Services Signature Version 4</a> to sign the request is: <i>execute-api</i>.</p> <p>For more information about how IoT works, see the <a href="https://docs.aws.amazon.com/iot/latest/developerguide/aws-iot-how-it-works.html">Developer Guide</a>.</p> <p>For information about how to use the credentials provider for IoT, see <a href="https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html">Authorizing Direct Calls to Amazon Web Services Services</a>.</p>'
  x-logo:
    url: https://api.apis.guru/v2/cache/logo/https_twitter.com_awscloud_profile_image.png
    backgroundColor: '#FFFFFF'
  termsOfService: https://aws.amazon.com/service-terms/
  contact:
    name: Mike Ralphson
    email: mike.ralphson@gmail.com
    url: https://github.com/mermade/aws2openapi
    x-twitter: PermittedSoc
  license:
    name: Apache 2.0 License
    url: http://www.apache.org/licenses/
  x-providerName: amazonaws.com
  x-serviceName: iot
  x-aws-signingName: iot
  x-origin:
  - contentType: application/json
    url: https://raw.githubusercontent.com/aws/aws-sdk-js/master/apis/iot-2015-05-28.normal.json
    converter:
      url: https://github.com/mermade/aws2openapi
      version: 1.0.0
    x-apisguru-driver: external
  x-apiClientRegistration:
    url: https://portal.aws.amazon.com/gp/aws/developer/registration/index.html?nc2=h_ct
  x-apisguru-categories:
  - cloud
  x-preferred: true
servers:
- url: http://iot.{region}.amazonaws.com
  variables:
    region:
      description: The AWS region
      enum:
      - us-east-1
      - us-east-2
      - us-west-1
      - us-west-2
      - us-gov-west-1
      - us-gov-east-1
      - ca-central-1
      - eu-north-1
      - eu-west-1
      - eu-west-2
      - eu-west-3
      - eu-central-1
      - eu-south-1
      - af-south-1
      - ap-northeast-1
      - ap-northeast-2
      - ap-northeast-3
      - ap-southeast-1
      - ap-southeast-2
      - ap-east-1
      - ap-south-1
      - sa-east-1
      - me-south-1
      default: us-east-1
  description: The AWS IoT multi-region endpoint
- url: https://iot.{region}.amazonaws.com
  variables:
    region:
      description: The AWS region
      enum:
      - us-east-1
      - us-east-2
      - us-west-1
      - us-west-2
      - us-gov-west-1
      - us-gov-east-1
      - ca-central-1
      - eu-north-1
      - eu-west-1
      - eu-west-2
      - eu-west-3
      - eu-central-1
      - eu-south-1
      - af-south-1
      - ap-northeast-1
      - ap-northeast-2
      - ap-northeast-3
      - ap-southeast-1
      - ap-southeast-2
      - ap-east-1
      - ap-south-1
      - sa-east-1
      - me-south-1
      default: us-east-1
  description: The AWS IoT multi-region endpoint
- url: http://iot.{region}.amazonaws.com.cn
  variables:
    region:
      description: The AWS region
      enum:
      - cn-north-1
      - cn-northwest-1
      default: cn-north-1
  description: The AWS IoT endpoint for China (Beijing) and China (Ningxia)
- url: https://iot.{region}.amazonaws.com.cn
  variables:
    region:
      description: The AWS region
      enum:
      - cn-north-1
      - cn-northwest-1
      default: cn-north-1
  description: The AWS IoT endpoint for China (Beijing) and China (Ningxia)
security:
- hmac: []
tags:
- name: OtaUpdates
paths:
  /otaUpdates/{otaUpdateId}:
    parameters:
    - $ref: '#/components/parameters/X-Amz-Content-Sha256'
    - $ref: '#/components/parameters/X-Amz-Date'
    - $ref: '#/components/parameters/X-Amz-Algorithm'
    - $ref: '#/components/parameters/X-Amz-Credential'
    - $ref: '#/components/parameters/X-Amz-Security-Token'
    - $ref: '#/components/parameters/X-Amz-Signature'
    - $ref: '#/components/parameters/X-Amz-SignedHeaders'
    post:
      operationId: CreateOTAUpdate
      description: <p>Creates an IoT OTA update on a target group of things or groups.</p> <p>Requires permission to access the <a href="https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions">CreateOTAUpdate</a> action.</p>
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateOTAUpdateResponse'
        '480':
          description: InvalidRequestException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidRequestException'
        '481':
          description: LimitExceededException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededException'
        '482':
          description: ResourceNotFoundException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceNotFoundException'
        '483':
          description: ResourceAlreadyExistsException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceAlreadyExistsException'
        '484':
          description: ThrottlingException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThrottlingException'
        '485':
          description: UnauthorizedException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedException'
        '486':
          description: InternalFailureException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalFailureException'
        '487':
          description: ServiceUnavailableException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableException'
      parameters:
      - name: otaUpdateId
        in: path
        required: true
        description: The ID of the OTA update to be created.
        schema:
          type: string
          pattern: '[a-zA-Z0-9_-]+'
          minLength: 1
          maxLength: 128
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - targets
              - files
              - roleArn
              properties:
                description:
                  description: The description of the OTA update.
                  type: string
                  pattern: '[^\p{C}]+'
                  maxLength: 2028
                targets:
                  description: The devices targeted to receive OTA updates.
                  type: array
                  items:
                    $ref: '#/components/schemas/Target'
                  minItems: 1
                protocols:
                  description: The protocol used to transfer the OTA update image. Valid values are [HTTP], [MQTT], [HTTP, MQTT]. When both HTTP and MQTT are specified, the target device can choose the protocol.
                  type: array
                  items:
                    $ref: '#/components/schemas/Protocol'
                  minItems: 1
                  maxItems: 2
                targetSelection:
                  description: 'Specifies whether the update will continue to run (CONTINUOUS), or will be complete after all the things specified as targets have completed the update (SNAPSHOT). If continuous, the update may also be run on a thing when a change is detected in a target. For example, an update will run on a thing when the thing is added to a target group, even after the update was completed by all things originally in the group. Valid values: CONTINUOUS | SNAPSHOT.'
                  type: string
                  enum:
                  - CONTINUOUS
                  - SNAPSHOT
                awsJobExecutionsRolloutConfig:
                  description: Configuration for the rollout of OTA updates.
                  type: object
                  properties:
                    maximumPerMinute:
                      allOf:
                      - $ref: '#/components/schemas/MaximumPerMinute'
                      - description: The maximum number of OTA update job executions started per minute.
                    exponentialRate:
                      allOf:
                      - $ref: '#/components/schemas/AwsJobExponentialRolloutRate'
                      - description: The rate of increase for a job rollout. This parameter allows you to define an exponential rate increase for a job rollout.
                awsJobPresignedUrlConfig:
                  description: Configuration information for pre-signed URLs. Valid when <code>protocols</code> contains HTTP.
                  type: object
                  properties:
                    expiresInSec:
                      allOf:
                      - $ref: '#/components/schemas/ExpiresInSeconds'
                      - description: How long (in seconds) pre-signed URLs are valid. Valid values are 60 - 3600, the default value is 1800 seconds. Pre-signed URLs are generated when a request for the job document is received.
                awsJobAbortConfig:
                  description: The criteria that determine when and how a job abort takes place.
                  type: object
                  properties:
                    abortCriteriaList:
                      allOf:
                      - $ref: '#/components/schemas/AwsJobAbortCriteriaList'
                      - description: The list of criteria that determine when and how to abort the job.
                awsJobTimeoutConfig:
                  description: Specifies the amount of time each device has to finish its execution of the job. A timer is started when the job execution status is set to <code>IN_PROGRESS</code>. If the job execution status is not set to another terminal state before the timer expires, it will be automatically set to <code>TIMED_OUT</code>.
                  type: object
                  properties:
                    inProgressTimeoutInMinutes:
                      allOf:
                      - $ref: '#/components/schemas/AwsJobTimeoutInProgressTimeoutInMinutes'
                      - description: Specifies the amount of time, in minutes, this device has to finish execution of this job. The timeout interval can be anywhere between 1 minute and 7 days (1 to 10080 minutes). The in progress timer can't be updated and will apply to all job executions for the job. Whenever a job execution remains in the IN_PROGRESS status for longer than this interval, the job execution will fail and switch to the terminal <code>TIMED_OUT</code> status.
                files:
                  description: The files to be streamed by the OTA update.
                  type: array
                  items:
                    $ref: '#/components/schemas/OTAUpdateFile'
                  minItems: 1
                roleArn:
                  description: The IAM role that grants Amazon Web Services IoT Core access to the Amazon S3, IoT jobs and Amazon Web Services Code Signing resources to create an OTA update job.
                  type: string
                  minLength: 20
                  maxLength: 2048
                additionalParameters:
                  description: A list of additional OTA update parameters which are name-value pairs.
                  type: object
                  additionalProperties:
                    $ref: '#/components/schemas/Value'
                tags:
                  description: Metadata which can be used to manage updates.
                  type: array
                  items:
                    $ref: '#/components/schemas/Tag'
      summary: Amazon IoT Device Defender Create O T a Update
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      tags:
      - OtaUpdates
    delete:
      operationId: DeleteOTAUpdate
      description: <p>Delete an OTA update.</p> <p>Requires permission to access the <a href="https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions">DeleteOTAUpdate</a> action.</p>
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteOTAUpdateResponse'
        '480':
          description: InvalidRequestException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidRequestException'
        '481':
          description: ResourceNotFoundException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceNotFoundException'
        '482':
          description: ThrottlingException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThrottlingException'
        '483':
          description: UnauthorizedException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedException'
        '484':
          description: InternalFailureException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalFailureException'
        '485':
          description: ServiceUnavailableException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableException'
        '486':
          description: VersionConflictException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VersionConflictException'
      parameters:
      - name: otaUpdateId
        in: path
        required: true
        description: The ID of the OTA update to delete.
        schema:
          type: string
          pattern: '[a-zA-Z0-9_-]+'
          minLength: 1
          maxLength: 128
      - name: deleteStream
        in: query
        required: false
        description: When true, the stream created by the OTAUpdate process is deleted when the OTA update is deleted. Ignored if the stream specified in the OTAUpdate is supplied by the user.
        schema:
          type: boolean
      - name: forceDeleteAWSJob
        in: query
        required: false
        description: When true, deletes the IoT job created by the OTAUpdate process even if it is "IN_PROGRESS". Otherwise, if the job is not in a terminal state ("COMPLETED" or "CANCELED") an exception will occur. The default is false.
        schema:
          type: boolean
      summary: Amazon IoT Device Defender Delete O T a Update
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      tags:
      - OtaUpdates
    get:
      operationId: GetOTAUpdate
      description: <p>Gets an OTA update.</p> <p>Requires permission to access the <a href="https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions">GetOTAUpdate</a> action.</p>
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetOTAUpdateResponse'
        '480':
          description: InvalidRequestException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidRequestException'
        '481':
          description: ThrottlingException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThrottlingException'
        '482':
          description: UnauthorizedException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedException'
        '483':
          description: InternalFailureException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalFailureException'
        '484':
          description: ServiceUnavailableException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableException'
        '485':
          description: ResourceNotFoundException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceNotFoundException'
      parameters:
      - name: otaUpdateId
        in: path
        required: true
        description: The OTA update ID.
        schema:
          type: string
          pattern: '[a-zA-Z0-9_-]+'
          minLength: 1
          maxLength: 128
      summary: Amazon IoT Device Defender Get O T a Update
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      tags:
      - OtaUpdates
  /otaUpdates:
    parameters:
    - $ref: '#/components/parameters/X-Amz-Content-Sha256'
    - $ref: '#/components/parameters/X-Amz-Date'
    - $ref: '#/components/parameters/X-Amz-Algorithm'
    - $ref: '#/components/parameters/X-Amz-Credential'
    - $ref: '#/components/parameters/X-Amz-Security-Token'
    - $ref: '#/components/parameters/X-Amz-Signature'
    - $ref: '#/components/parameters/X-Amz-SignedHeaders'
    get:
      operationId: ListOTAUpdates
      description: <p>Lists OTA updates.</p> <p>Requires permission to access the <a href="https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions">ListOTAUpdates</a> action.</p>
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOTAUpdatesResponse'
        '480':
          description: InvalidRequestException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidRequestException'
        '481':
          description: ThrottlingException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThrottlingException'
        '482':
          description: UnauthorizedException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedException'
        '483':
          description: InternalFailureException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalFailureException'
        '484':
          description: ServiceUnavailableException
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableException'
      parameters:
      - name: maxResults
        in: query
        required: false
        description: The maximum number of results to return at one time.
        schema:
          type: integer
          minimum: 1
          maximum: 250
      - name: nextToken
        in: query
        required: false
        description: A token used to retrieve the next set of results.
        schema:
          type: string
      - name: otaUpdateStatus
        in: query
        required: false
        description: The OTA update job status.
        schema:
          type: string
          enum:
          - CREATE_PENDING
          - CREATE_IN_PROGRESS
          - CREATE_COMPLETE
          - CREATE_FAILED
          - DELETE_IN_PROGRESS
          - DELETE_FAILED
      summary: Amazon IoT Device Defender List O T a Updates
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      tags:
      - OtaUpdates
components:
  schemas:
    Platform:
      type: string
    Signature:
      type: string
    InlineDocument:
      type: string
    NextToken:
      type: string
    ServiceUnavailableException: {}
    ErrorInfo:
      type: object
      properties:
        code:
          allOf:
          - $ref: '#/components/schemas/Code'
          - description: The error code.
        message:
          allOf:
          - $ref: '#/components/schemas/OTAUpdateErrorMessage'
          - description: The error message.
      description: Error information.
    OTAUpdateStatus:
      type: string
      enum:
      - CREATE_PENDING
      - CREATE_IN_PROGRESS
      - CREATE_COMPLETE
      - CREATE_FAILED
      - DELETE_IN_PROGRESS
      - DELETE_FAILED
    Tag:
      type: object
      required:
      - Key
      properties:
        Key:
          allOf:
          - $ref: '#/components/schemas/TagKey'
          - description: The tag's key.
        Value:
          allOf:
          - $ref: '#/components/schemas/TagValue'
          - description: The tag's value.
      description: A set of key/value pairs that are used to manage the resource.
    Value:
      type: string
      pattern: '[\s\S]*'
      minLength: 0
      maxLength: 4096
    Prefix:
      type: string
    CodeSigningCertificateChain:
      type: object
      properties:
        certificateName:
          allOf:
          - $ref: '#/components/schemas/CertificateName'
          - description: The name of the certificate.
        inlineDocument:
          allOf:
          - $ref: '#/components/schemas/InlineDocument'
          - description: A base64 encoded binary representation of the code signing certificate chain.
      description: Describes the certificate chain being used when code signing a file.
    InvalidRequestException: {}
    Code:
      type: string
    FileName:
      type: string
    CertificateArn:
      type: string
    Protocol:
      type: string
      enum:
      - MQTT
      - HTTP
    AwsJobAbortCriteriaMinimumNumberOfExecutedThings:
      type: integer
      minimum: 1
    OTAUpdateDescription:
      type: string
      pattern: '[^\p{C}]+'
      maxLength: 2028
    FileType:
      type: integer
      minimum: 0
      maximum: 255
    OTAUpdatesSummary:
      type: array
      items:
        $ref: '#/components/schemas/OTAUpdateSummary'
    CertificatePathOnDevice:
      type: string
    S3Destination:
      type: object
      properties:
        bucket:
          allOf:
          - $ref: '#/components/schemas/S3Bucket'
          - description: The S3 bucket that contains the updated firmware.
        prefix:
          allOf:
          - $ref: '#/components/schemas/Prefix'
          - description: The S3 prefix.
      description: Describes the location of updated firmware in S3.
    Stream:
      type: object
      properties:
        streamId:
          allOf:
          - $ref: '#/components/schemas/StreamId'
          - description: The stream ID.
        fileId:
          allOf:
          - $ref: '#/components/schemas/FileId'
          - description: The ID of a file associated with a stream.
      description: Describes a group of files that can be streamed.
    OTAUpdateFiles:
      type: array
      items:
        $ref: '#/components/schemas/OTAUpdateFile'
      minItems: 1
    GetOTAUpdateResponse:
      type: object
      properties:
        otaUpdateInfo:
          allOf:
          - $ref: '#/components/schemas/OTAUpdateInfo'
          - description: The OTA update info.
    Destination:
      type: object
      properties:
        s3Destination:
          allOf:
          - $ref: '#/components/schemas/S3Destination'
          - description: Describes the location in S3 of the updated firmware.
      description: Describes the location of the updated firmware.
    ListOTAUpdatesResponse:
      type: object
      properties:
        otaUpdates:
          allOf:
          - $ref: '#/components/schemas/OTAUpdatesSummary'
          - description: A list of OTA update jobs.
        nextToken:
          allOf:
          - $ref: '#/components/schemas/NextToken'
          - description: A token to use to get the next set of results.
    AwsIotJobArn:
      type: string
    Target:
      type: string
    AwsIotJobId:
      type: string
    TagValue:
      type: string
      minLength: 0
      maxLength: 256
    Targets:
      type: array
      items:
        $ref: '#/components/schemas/Target'
      minItems: 1
    AwsJobRateIncreaseCriteriaNumberOfThings:
      type: integer
      minimum: 1
    AwsJobAbortCriteriaAbortThresholdPercentage:
      type: number
      format: double
      maximum: 100
    CreateOTAUpdateResponse:
      type: object
      properties:
        otaUpdateId:
          allOf:
          - $ref: '#/components/schemas/OTAUpdateId'
          - description: The OTA update ID.
        awsIotJobId:
          allOf:
          - $ref: '#/components/schemas/AwsIotJobId'
          - description: The IoT job ID associated with the OTA update.
        otaUpdateArn:
          allOf:
          - $ref: '#/components/schemas/OTAUpdateArn'
          - description: The OTA update ARN.
        awsIotJobArn:
          allOf:
          - $ref: '#/components/schemas/AwsIotJobArn'
          - description: The IoT job ARN associated with the OTA update.
        otaUpdateStatus:
          allOf:
          - $ref: '#/components/schemas/OTAUpdateStatus'
          - description: The OTA update status.
    CodeSigningSignature:
      type: object
      properties:
        inlineDocument:
          allOf:
          - $ref: '#/components/schemas/Signature'
          - description: A base64 encoded binary representation of the code signing signature.
      description: Describes the signature for a file.
    SignatureAlgorithm:
      type: string
    AwsJobAbortCriteriaAbortAction:
      type: string
      enum:
      - CANCEL
    SigningProfileParameter:
      type: object
      properties:
        certificateArn:
          allOf:
          - $ref: '#/components/schemas/CertificateArn'
          - description: Certificate ARN.
        platform:
          allOf:
          - $ref: '#/components/schemas/Platform'
          - description: The hardware platform of your device.
        certificatePathOnDevice:
          allOf:
          - $ref: '#/components/schemas/CertificatePathOnDevice'
          - description: The location of the code-signing certificate on your device.
      description: Describes the code-signing profile.
    AwsJobAbortCriteria:
      type: object
      required:
      - failureType
      - action
      - thresholdPercentage
      - minNumberOfExecutedThings
      properties:
        failureType:
          allOf:
          - $ref: '#/components/schemas/AwsJobAbortCriteriaFailureType'
          - description: The type of job execution failures that can initiate a job abort.
        action:
          allOf:
          - $ref: '#/components/schemas/AwsJobAbortCriteriaAbortAction'
          - description: The type of job action to take to initiate the job abort.
        thresholdPercentage:
          allOf:
          - $ref: '#/components/schemas/AwsJobAbortCriteriaAbortThresholdPercentage'
          - description: <p>The minimum percentage of job execution failures that must occur to initiate the job abort.</p> <p>Amazon Web Services IoT Core supports up to two digits after the decimal (for example, 10.9 and 10.99, but not 10.999).</p>
        minNumberOfExecutedThings:
          allOf:
          - $ref: '#/components/schemas/AwsJobAbortCriteriaMinimumNumberOfExecutedThings'
          - description: The minimum number of things which must receive job execution notifications before the job can be aborted.
      description: The criteria that determine when and how a job abort takes place.
    StartSigningJobParameter:
      type: object
      properties:
        signingProfileParameter:
          allOf:
          - $ref: '#/components/schemas/SigningProfileParameter'
          - description: Describes the code-signing profile.
        signingProfileName:
          allOf:
          - $ref: '#/components/schemas/SigningProfileName'
          - description: The code-signing profile name.
        destination:
          allOf:
          - $ref: '#/components/schemas/Destination'
          - description: The location to write the code-signed file.
      description: Information required to start a signing job.
    VersionConflictException: {}
    AwsJobAbortCriteriaList:
      type: array
      items:
        $ref: '#/components/schemas/AwsJobAbortCriteria'
      minItems: 1
    OTAUpdateSummary:
      type: object
      properties:
        otaUpdateId:
          allOf:
          - $ref: '#/components/schemas/OTAUpdateId'
          - description: The OTA update ID.
        otaUpdateArn:
          allOf:
          - $ref: '#/components/schemas/OTAUpdateArn'
          - description: The OTA update ARN.
        creationDate:
          allOf:
          - $ref: '#/components/schemas/DateType'
          - description: The date when the OTA update was created.
      description: An OTA update summary.
    ResourceNotFoundException: {}
    OTAUpdateArn:
      type: string
    DateType:
      type: string
      format: date-time
    InternalFailureException: {}
    AwsJobAbortCriteriaFailureType:
      type: string
      enum:
      - FAILED
      - REJECTED
      - TIMED_OUT
      - ALL
    SigningJobId:
      type: string
    AttributesMap:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/Value'
    ResourceAlreadyExistsException: {}
    UnauthorizedException: {}
    AwsJobRolloutRatePerMinute:
      type: integer
      minimum: 1
      maximum: 1000
    S3Bucket:
      type: string
      minLength: 1
    TagKey:
      type: string
      pattern: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$
      minLength: 1
      maxLength: 128
    FileLocation:
      type: object
      properties:
        stream:
          allOf:
          - $ref: '#/components/schemas/Stream'
          - description: The stream that contains the OTA update.
        s3Location:
          allOf:
          - $ref: '#/components/schemas/S3Location'
          - description: The location of the updated firmware in S3.
      description: The location of the OTA update.
    OTAUpdateErrorMessage:
      type: string
    OTAUpdateId:
      type: string
      pattern: '[a-zA-Z0-9_-]+'
      minLength: 1
      maxLength: 128
    OTAUpdateFile:
      type: object
      properties:
        fileName:
          allOf:
          - $ref: '#/components/schemas/FileName'
          - description: The name of the file.
        fileType:
          allOf:
          - $ref: '#/components/schemas/FileType'
          - description: An integer value you can include in the job document to allow your devices to identify the type of file received from the cloud.
        fileVersion:
          allOf:
          - $ref: '#/components/schemas/OTAUpdateFileVersion'
          - description: The file version.
        fileLocation:
          allOf:
          - $ref: '#/components/schemas/FileLocation'
          - description: The location of the updated firmware.
        codeSigning:
          allOf:
          - $ref: '#/components/schemas/CodeSigning'
          - description: The code signing method of the file.
        attributes:
          allOf:
          - $ref: '#/components/schemas/AttributesMap'
          - description: A list of name/attribute pairs.
      description: Describes a file to be associated with an OTA update.
    AwsJobExecutionsRolloutConfig:
      type: object
      properties:
        maximumPerMinute:
          allOf:
          - $ref: '#/components/schemas/MaximumPerMinute'
          - description: The maximum number of OTA update job executions started per minute.
        expon

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/amazon-iot-device-defender/refs/heads/main/openapi/amazon-iot-device-defender-otaupdates-api-openapi.yml