openapi: 3.0.2
info:
  title: ParallelCluster
  version: 3.14.0
  description: ParallelCluster API
paths:
  /v3/clusters:
    get:
      description: Retrieve the list of existing clusters.
      operationId: ListClusters
      parameters:
        - name: region
          in: query
          description: List clusters deployed to a given AWS Region.
          schema:
            type: string
            description: List clusters deployed to a given AWS Region.
        - name: nextToken
          in: query
          description: Token to use for paginated requests.
          schema:
            type: string
            description: Token to use for paginated requests.
        - name: clusterStatus
          in: query
          description: Filter by cluster status. (Defaults to all clusters.)
          style: form
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ClusterStatusFilteringOption'
            uniqueItems: true
            description: Filter by cluster status. (Defaults to all clusters.)
          explode: true
      responses:
        "200":
          description: ListClusters 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListClustersResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster Operations
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
    post:
      description: Create a managed cluster in a given region.
      operationId: CreateCluster
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateClusterRequestContent'
        required: true
      parameters:
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
        - name: suppressValidators
          in: query
          description: 'Identifies one or more config validators to suppress. Format: (ALL|type:[A-Za-z0-9]+)'
          style: form
          schema:
            type: array
            items:
              type: string
              pattern: ^(ALL|type:[A-Za-z0-9]+)$
            uniqueItems: true
            description: 'Identifies one or more config validators to suppress. Format: (ALL|type:[A-Za-z0-9]+)'
          explode: true
        - name: validationFailureLevel
          in: query
          description: Min validation level that will cause the creation to fail. (Defaults to 'ERROR'.)
          schema:
            $ref: '#/components/schemas/ValidationLevel'
        - name: dryrun
          in: query
          description: Only perform request validation without creating any resource. May be used to validate the cluster configuration. (Defaults to 'false'.)
          schema:
            type: boolean
            description: Only perform request validation without creating any resource. May be used to validate the cluster configuration. (Defaults to 'false'.)
        - name: rollbackOnFailure
          in: query
          description: When set it automatically initiates a cluster stack rollback on failures. (Defaults to 'true'.)
          schema:
            type: boolean
            description: When set it automatically initiates a cluster stack rollback on failures. (Defaults to 'true'.)
      responses:
        "202":
          description: CreateCluster 202 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateClusterResponseContent'
        "400":
          description: CreateClusterBadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateClusterBadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "409":
          description: ConflictException 409 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictExceptionResponseContent'
        "412":
          description: DryrunOperationException 412 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DryrunOperationExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster Operations
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/clusters/{clusterName}:
    delete:
      description: Initiate the deletion of a cluster.
      operationId: DeleteCluster
      parameters:
        - name: clusterName
          in: path
          description: Name of the cluster
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Name of the cluster
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
      responses:
        "202":
          description: DeleteCluster 202 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteClusterResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster Operations
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
    get:
      description: Get detailed information about an existing cluster.
      operationId: DescribeCluster
      parameters:
        - name: clusterName
          in: path
          description: Name of the cluster
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Name of the cluster
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
      responses:
        "200":
          description: DescribeCluster 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DescribeClusterResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster Operations
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
    put:
      description: Update a cluster managed in a given region.
      operationId: UpdateCluster
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateClusterRequestContent'
        required: true
      parameters:
        - name: clusterName
          in: path
          description: Name of the cluster
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Name of the cluster
          required: true
        - name: suppressValidators
          in: query
          description: 'Identifies one or more config validators to suppress. Format: (ALL|type:[A-Za-z0-9]+)'
          style: form
          schema:
            type: array
            items:
              type: string
              pattern: ^(ALL|type:[A-Za-z0-9]+)$
            uniqueItems: true
            description: 'Identifies one or more config validators to suppress. Format: (ALL|type:[A-Za-z0-9]+)'
          explode: true
        - name: validationFailureLevel
          in: query
          description: Min validation level that will cause the update to fail. (Defaults to 'ERROR'.)
          schema:
            $ref: '#/components/schemas/ValidationLevel'
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
        - name: dryrun
          in: query
          description: Only perform request validation without creating any resource. May be used to validate the cluster configuration and update requirements. (Defaults to 'false'.)
          schema:
            type: boolean
            description: Only perform request validation without creating any resource. May be used to validate the cluster configuration and update requirements. (Defaults to 'false'.)
        - name: forceUpdate
          in: query
          description: Force update by ignoring the update validation errors. (Defaults to 'false'.)
          schema:
            type: boolean
            description: Force update by ignoring the update validation errors. (Defaults to 'false'.)
      responses:
        "202":
          description: UpdateCluster 202 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateClusterResponseContent'
        "400":
          description: UpdateClusterBadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateClusterBadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "409":
          description: ConflictException 409 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictExceptionResponseContent'
        "412":
          description: DryrunOperationException 412 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DryrunOperationExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster Operations
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/clusters/{clusterName}/computefleet:
    get:
      description: Describe the status of the compute fleet.
      operationId: DescribeComputeFleet
      parameters:
        - name: clusterName
          in: path
          description: Name of the cluster
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Name of the cluster
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
      responses:
        "200":
          description: DescribeComputeFleet 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DescribeComputeFleetResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster ComputeFleet
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
    patch:
      description: Update the status of the cluster compute fleet.
      operationId: UpdateComputeFleet
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateComputeFleetRequestContent'
        required: true
      parameters:
        - name: clusterName
          in: path
          description: Name of the cluster
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Name of the cluster
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
      responses:
        "204":
          description: UpdateComputeFleet 204 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateComputeFleetResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster ComputeFleet
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/clusters/{clusterName}/instances:
    delete:
      description: Initiate the forced termination of all cluster compute nodes. Does not work with AWS Batch clusters.
      operationId: DeleteClusterInstances
      parameters:
        - name: clusterName
          in: path
          description: Name of the cluster
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Name of the cluster
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
        - name: force
          in: query
          description: Force the deletion also when the cluster with the given name is not found. (Defaults to 'false'.)
          schema:
            type: boolean
            description: Force the deletion also when the cluster with the given name is not found. (Defaults to 'false'.)
      responses:
        "202":
          description: DeleteClusterInstances 202 response
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster Instances
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
    get:
      description: Describe the instances belonging to a given cluster.
      operationId: DescribeClusterInstances
      parameters:
        - name: clusterName
          in: path
          description: Name of the cluster
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Name of the cluster
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
        - name: nextToken
          in: query
          description: Token to use for paginated requests.
          schema:
            type: string
            description: Token to use for paginated requests.
        - name: nodeType
          in: query
          description: Filter the instances by node type.
          schema:
            $ref: '#/components/schemas/NodeType'
        - name: queueName
          in: query
          description: Filter the instances by queue name.
          schema:
            type: string
            description: Filter the instances by queue name.
      responses:
        "200":
          description: DescribeClusterInstances 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DescribeClusterInstancesResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster Instances
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/clusters/{clusterName}/logstreams:
    get:
      description: Retrieve the list of log streams associated with a cluster.
      operationId: ListClusterLogStreams
      parameters:
        - name: clusterName
          in: path
          description: Name of the cluster
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Name of the cluster
          required: true
        - name: region
          in: query
          description: Region that the given cluster belongs to.
          schema:
            type: string
            description: Region that the given cluster belongs to.
        - name: filters
          in: query
          description: |-
            Filter the log streams. Format: 'Name=a,Values=1 Name=b,Values=2,3'.
            Accepted filters are:
            private-dns-name - The short form of the private DNS name of the instance (e.g. ip-10-0-0-101).
            node-type - The node type, the only accepted value for this filter is HeadNode.
          style: spaceDelimited
          schema:
            type: array
            items:
              type: string
            uniqueItems: true
            description: |-
              Filter the log streams. Format: 'Name=a,Values=1 Name=b,Values=2,3'.
              Accepted filters are:
              private-dns-name - The short form of the private DNS name of the instance (e.g. ip-10-0-0-101).
              node-type - The node type, the only accepted value for this filter is HeadNode.
          explode: true
        - name: nextToken
          in: query
          description: Token to use for paginated requests.
          schema:
            type: string
            description: Token to use for paginated requests.
      responses:
        "200":
          description: ListClusterLogStreams 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListClusterLogStreamsResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster Logs
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/clusters/{clusterName}/logstreams/{logStreamName}:
    get:
      description: Retrieve the events associated with a log stream.
      operationId: GetClusterLogEvents
      parameters:
        - name: clusterName
          in: path
          description: Name of the cluster
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Name of the cluster
          required: true
        - name: logStreamName
          in: path
          description: Name of the log stream.
          schema:
            type: string
            description: Name of the log stream.
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
        - name: nextToken
          in: query
          description: Token to use for paginated requests.
          schema:
            type: string
            description: Token to use for paginated requests.
        - name: startFromHead
          in: query
          description: If the value is true, the earliest log events are returned first. If the value is false, the latest log events are returned first. (Defaults to 'false'.)
          schema:
            type: boolean
            description: If the value is true, the earliest log events are returned first. If the value is false, the latest log events are returned first. (Defaults to 'false'.)
        - name: limit
          in: query
          description: The maximum number of log events returned. If you don't specify a value, the maximum is as many log events as can fit in a response size of 1 MB, up to 10,000 log events.
          schema:
            type: integer
            description: The maximum number of log events returned. If you don't specify a value, the maximum is as many log events as can fit in a response size of 1 MB, up to 10,000 log events.
            format: int32
        - name: startTime
          in: query
          description: The start of the time range, expressed in ISO 8601 format (e.g. '2021-01-01T20:00:00Z'). Events with a timestamp equal to this time or later than this time are included.
          schema:
            type: string
            description: The start of the time range, expressed in ISO 8601 format (e.g. '2021-01-01T20:00:00Z'). Events with a timestamp equal to this time or later than this time are included.
            format: date-time
        - name: endTime
          in: query
          description: The end of the time range, expressed in ISO 8601 format (e.g. '2021-01-01T20:00:00Z'). Events with a timestamp equal to or later than this time are not included.
          schema:
            type: string
            description: The end of the time range, expressed in ISO 8601 format (e.g. '2021-01-01T20:00:00Z'). Events with a timestamp equal to or later than this time are not included.
            format: date-time
      responses:
        "200":
          description: GetClusterLogEvents 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetClusterLogEventsResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster Logs
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/clusters/{clusterName}/stackevents:
    get:
      description: Retrieve the events associated with the stack for a given cluster.
      operationId: GetClusterStackEvents
      parameters:
        - name: clusterName
          in: path
          description: Name of the cluster
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Name of the cluster
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
        - name: nextToken
          in: query
          description: Token to use for paginated requests.
          schema:
            type: string
            description: Token to use for paginated requests.
      responses:
        "200":
          description: GetClusterStackEvents 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetClusterStackEventsResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Cluster Logs
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/images/custom:
    get:
      description: Retrieve the list of existing custom images.
      operationId: ListImages
      parameters:
        - name: region
          in: query
          description: List images built in a given AWS Region.
          schema:
            type: string
            description: List images built in a given AWS Region.
        - name: nextToken
          in: query
          description: Token to use for paginated requests.
          schema:
            type: string
            description: Token to use for paginated requests.
        - name: imageStatus
          in: query
          description: Filter images by the status provided.
          schema:
            $ref: '#/components/schemas/ImageStatusFilteringOption'
          required: true
      responses:
        "200":
          description: ListImages 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListImagesResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Image Operations
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
    post:
      description: Create a custom ParallelCluster image in a given region.
      operationId: BuildImage
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BuildImageRequestContent'
        required: true
      parameters:
        - name: suppressValidators
          in: query
          description: 'Identifies one or more config validators to suppress. Format: (ALL|type:[A-Za-z0-9]+)'
          style: form
          schema:
            type: array
            items:
              type: string
              pattern: ^(ALL|type:[A-Za-z0-9]+)$
            uniqueItems: true
            description: 'Identifies one or more config validators to suppress. Format: (ALL|type:[A-Za-z0-9]+)'
          explode: true
        - name: validationFailureLevel
          in: query
          description: Min validation level that will cause the creation to fail. (Defaults to 'ERROR'.)
          schema:
            $ref: '#/components/schemas/ValidationLevel'
        - name: dryrun
          in: query
          description: Only perform request validation without creating any resource. It can be used to validate the image configuration. (Defaults to 'false'.)
          schema:
            type: boolean
            description: Only perform request validation without creating any resource. It can be used to validate the image configuration. (Defaults to 'false'.)
        - name: rollbackOnFailure
          in: query
          description: When set, will automatically initiate an image stack rollback on failure. (Defaults to 'false'.)
          schema:
            type: boolean
            description: When set, will automatically initiate an image stack rollback on failure. (Defaults to 'false'.)
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
      responses:
        "202":
          description: BuildImage 202 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuildImageResponseContent'
        "400":
          description: BuildImageBadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuildImageBadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "409":
          description: ConflictException 409 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictExceptionResponseContent'
        "412":
          description: DryrunOperationException 412 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DryrunOperationExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Image Operations
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/images/custom/{imageId}:
    delete:
      description: Initiate the deletion of the custom ParallelCluster image.
      operationId: DeleteImage
      parameters:
        - name: imageId
          in: path
          description: Id of the image.
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Id of the image.
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
        - name: force
          in: query
          description: Force deletion in case there are instances using the AMI or in case the AMI is shared. (Defaults to 'false'.)
          schema:
            type: boolean
            description: Force deletion in case there are instances using the AMI or in case the AMI is shared. (Defaults to 'false'.)
      responses:
        "202":
          description: DeleteImage 202 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteImageResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Image Operations
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
    get:
      description: Get detailed information about an existing image.
      operationId: DescribeImage
      parameters:
        - name: imageId
          in: path
          description: Id of the image.
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Id of the image.
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
      responses:
        "200":
          description: DescribeImage 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DescribeImageResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Image Operations
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/images/custom/{imageId}/logstreams:
    get:
      description: Retrieve the list of log streams associated with an image.
      operationId: ListImageLogStreams
      parameters:
        - name: imageId
          in: path
          description: Id of the image.
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Id of the image.
          required: true
        - name: region
          in: query
          description: Region that the given image belongs to.
          schema:
            type: string
            description: Region that the given image belongs to.
        - name: nextToken
          in: query
          description: Token to use for paginated requests.
          schema:
            type: string
            description: Token to use for paginated requests.
      responses:
        "200":
          description: ListImageLogStreams 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListImageLogStreamsResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Image Logs
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/images/custom/{imageId}/logstreams/{logStreamName}:
    get:
      description: Retrieve the events associated with an image build.
      operationId: GetImageLogEvents
      parameters:
        - name: imageId
          in: path
          description: Id of the image.
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Id of the image.
          required: true
        - name: logStreamName
          in: path
          description: Name of the log stream.
          schema:
            type: string
            description: Name of the log stream.
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
        - name: nextToken
          in: query
          description: Token to use for paginated requests.
          schema:
            type: string
            description: Token to use for paginated requests.
        - name: startFromHead
          in: query
          description: If the value is true, the earliest log events are returned first. If the value is false, the latest log events are returned first. (Defaults to 'false'.)
          schema:
            type: boolean
            description: If the value is true, the earliest log events are returned first. If the value is false, the latest log events are returned first. (Defaults to 'false'.)
        - name: limit
          in: query
          description: The maximum number of log events returned. If you don't specify a value, the maximum is as many log events as can fit in a response size of 1 MB, up to 10,000 log events.
          schema:
            type: integer
            description: The maximum number of log events returned. If you don't specify a value, the maximum is as many log events as can fit in a response size of 1 MB, up to 10,000 log events.
            format: int32
        - name: startTime
          in: query
          description: The start of the time range, expressed in ISO 8601 format (e.g. '2021-01-01T20:00:00Z'). Events with a timestamp equal to this time or later than this time are included.
          schema:
            type: string
            description: The start of the time range, expressed in ISO 8601 format (e.g. '2021-01-01T20:00:00Z'). Events with a timestamp equal to this time or later than this time are included.
            format: date-time
        - name: endTime
          in: query
          description: The end of the time range, expressed in ISO 8601 format (e.g. '2021-01-01T20:00:00Z'). Events with a timestamp equal to or later than this time are not included.
          schema:
            type: string
            description: The end of the time range, expressed in ISO 8601 format (e.g. '2021-01-01T20:00:00Z'). Events with a timestamp equal to or later than this time are not included.
            format: date-time
      responses:
        "200":
          description: GetImageLogEvents 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetImageLogEventsResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Image Logs
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/images/custom/{imageId}/stackevents:
    get:
      description: Retrieve the events associated with the stack for a given image build.
      operationId: GetImageStackEvents
      parameters:
        - name: imageId
          in: path
          description: Id of the image.
          schema:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
            description: Id of the image.
          required: true
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
        - name: nextToken
          in: query
          description: Token to use for paginated requests.
          schema:
            type: string
            description: Token to use for paginated requests.
      responses:
        "200":
          description: GetImageStackEvents 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetImageStackEventsResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "404":
          description: NotFoundException 404 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundExceptionResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Image Logs
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
  /v3/images/official:
    get:
      description: List Official ParallelCluster AMIs.
      operationId: ListOfficialImages
      parameters:
        - name: region
          in: query
          description: AWS Region that the operation corresponds to.
          schema:
            type: string
            description: AWS Region that the operation corresponds to.
        - name: os
          in: query
          description: Filter by OS distribution (Default is to not filter.)
          schema:
            type: string
            description: Filter by OS distribution (Default is to not filter.)
        - name: architecture
          in: query
          description: Filter by architecture (Default is to not filter.)
          schema:
            type: string
            description: Filter by architecture (Default is to not filter.)
      responses:
        "200":
          description: ListOfficialImages 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOfficialImagesResponseContent'
        "400":
          description: BadRequestException 400 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionResponseContent'
        "401":
          description: UnauthorizedClientError 401 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedClientErrorResponseContent'
        "429":
          description: LimitExceededException 429 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitExceededExceptionResponseContent'
        "500":
          description: InternalServiceException 500 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServiceExceptionResponseContent'
      tags:
        - Image Operations
      x-amazon-apigateway-integration:
        type: aws_proxy
        httpMethod: POST
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ParallelClusterFunction.Arn}/invocations
        credentials:
          Fn::Sub: ${APIGatewayExecutionRole.Arn}
        payloadFormatVersion: "2.0"
components:
  schemas:
    AmiInfo:
      type: object
      properties:
        architecture:
          type: string
        amiId:
          type: string
        name:
          type: string
        os:
          type: string
        version:
          type: string
      required:
        - amiId
        - architecture
        - name
        - os
        - version
    BadRequestExceptionResponseContent:
      type: object
      description: This exception is thrown when a client calls an API with wrong parameters.
      properties:
        message:
          type: string
    BuildImageBadRequestExceptionResponseContent:
      type: object
      description: This exception is thrown when a client calls the BuildImage API with an invalid request. This includes an error due to invalid image configuration.
      properties:
        message:
          type: string
        configurationValidationErrors:
          type: array
          items:
            $ref: '#/components/schemas/ConfigValidationMessage'
    BuildImageRequestContent:
      type: object
      properties:
        imageConfiguration:
          type: string
          description: Image configuration as a YAML document.
        imageId:
          type: string
          pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
          description: Id of the Image that will be built.
      required:
        - imageConfiguration
        - imageId
    BuildImageResponseContent:
      type: object
      properties:
        image:
          $ref: '#/components/schemas/ImageInfoSummary'
        validationMessages:
          type: array
          items:
            $ref: '#/components/schemas/ConfigValidationMessage'
          description: List of messages collected during image config validation whose level is lower than the 'validationFailureLevel' set by the user.
      required:
        - image
    Change:
      type: object
      properties:
        parameter:
          type: string
        currentValue:
          type: string
        requestedValue:
          type: string
    CloudFormationResourceStatus:
      type: string
      enum:
        - CREATE_IN_PROGRESS
        - CREATE_FAILED
        - CREATE_COMPLETE
        - DELETE_IN_PROGRESS
        - DELETE_FAILED
        - DELETE_COMPLETE
        - DELETE_SKIPPED
        - UPDATE_IN_PROGRESS
        - UPDATE_FAILED
        - UPDATE_COMPLETE
        - IMPORT_FAILED
        - IMPORT_COMPLETE
        - IMPORT_IN_PROGRESS
        - IMPORT_ROLLBACK_IN_PROGRESS
        - IMPORT_ROLLBACK_FAILED
        - IMPORT_ROLLBACK_COMPLETE
    CloudFormationStackStatus:
      type: string
      enum:
        - CREATE_IN_PROGRESS
        - CREATE_FAILED
        - CREATE_COMPLETE
        - IMPORT_IN_PROGRESS
        - IMPORT_COMPLETE
        - IMPORT_ROLLBACK_IN_PROGRESS
        - IMPORT_ROLLBACK_FAILED
        - IMPORT_ROLLBACK_COMPLETE
        - ROLLBACK_IN_PROGRESS
        - ROLLBACK_FAILED
        - ROLLBACK_COMPLETE
        - DELETE_IN_PROGRESS
        - DELETE_FAILED
        - DELETE_COMPLETE
        - REVIEW_IN_PROGRESS
        - UPDATE_IN_PROGRESS
        - UPDATE_COMPLETE_CLEANUP_IN_PROGRESS
        - UPDATE_COMPLETE
        - UPDATE_FAILED
        - UPDATE_ROLLBACK_IN_PROGRESS
        - UPDATE_ROLLBACK_FAILED
        - UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS
        - UPDATE_ROLLBACK_COMPLETE
    ClusterConfigurationStructure:
      type: object
      properties:
        url:
          type: string
          description: URL of the cluster configuration file.
    ClusterInfoSummary:
      type: object
      properties:
        clusterName:
          type: string
          pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
          description: Name of the cluster.
        region:
          type: string
          description: AWS region where the cluster is created.
        version:
          type: string
          description: ParallelCluster version used to create the cluster.
        cloudformationStackArn:
          type: string
          description: ARN of the main CloudFormation stack.
        cloudformationStackStatus:
          $ref: '#/components/schemas/CloudFormationStackStatus'
        clusterStatus:
          $ref: '#/components/schemas/ClusterStatus'
        scheduler:
          $ref: '#/components/schemas/Scheduler'
      required:
        - cloudformationStackArn
        - cloudformationStackStatus
        - clusterName
        - clusterStatus
        - region
        - version
    ClusterInstance:
      type: object
      properties:
        instanceId:
          type: string
        instanceType:
          type: string
        launchTime:
          type: string
          format: date-time
        privateIpAddress:
          type: string
        publicIpAddress:
          type: string
        state:
          $ref: '#/components/schemas/InstanceState'
        nodeType:
          $ref: '#/components/schemas/NodeType'
        queueName:
          type: string
        poolName:
          type: string
      required:
        - instanceId
        - instanceType
        - launchTime
        - nodeType
        - privateIpAddress
        - state
    ClusterStatus:
      type: string
      enum:
        - CREATE_IN_PROGRESS
        - CREATE_FAILED
        - CREATE_COMPLETE
        - DELETE_IN_PROGRESS
        - DELETE_FAILED
        - DELETE_COMPLETE
        - UPDATE_IN_PROGRESS
        - UPDATE_COMPLETE
        - UPDATE_FAILED
    ClusterStatusFilteringOption:
      type: string
      enum:
        - CREATE_IN_PROGRESS
        - CREATE_FAILED
        - CREATE_COMPLETE
        - DELETE_IN_PROGRESS
        - DELETE_FAILED
        - UPDATE_IN_PROGRESS
        - UPDATE_COMPLETE
        - UPDATE_FAILED
    ComputeFleetStatus:
      type: string
      enum:
        - START_REQUESTED
        - STARTING
        - RUNNING
        - PROTECTED
        - STOP_REQUESTED
        - STOPPING
        - STOPPED
        - UNKNOWN
        - ENABLED
        - DISABLED
    ConfigValidationMessage:
      type: object
      properties:
        id:
          type: string
          description: Id of the validator.
        type:
          type: string
          description: Type of the validator.
        level:
          $ref: '#/components/schemas/ValidationLevel'
        message:
          type: string
          description: Validation message
    ConflictExceptionResponseContent:
      type: object
      description: This exception is thrown when a client request to create/modify content would result in a conflict.
      properties:
        message:
          type: string
    CreateClusterBadRequestExceptionResponseContent:
      type: object
      description: This exception is thrown when a client calls the CreateCluster API with an invalid request. This includes an error due to invalid cluster configuration.
      properties:
        message:
          type: string
        configurationValidationErrors:
          type: array
          items:
            $ref: '#/components/schemas/ConfigValidationMessage'
    CreateClusterRequestContent:
      type: object
      properties:
        clusterName:
          type: string
          pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
          description: Name of the cluster that will be created.
        clusterConfiguration:
          type: string
          description: Cluster configuration as a YAML document.
      required:
        - clusterConfiguration
        - clusterName
    CreateClusterResponseContent:
      type: object
      properties:
        cluster:
          $ref: '#/components/schemas/ClusterInfoSummary'
        validationMessages:
          type: array
          items:
            $ref: '#/components/schemas/ConfigValidationMessage'
          description: List of messages collected during cluster config validation whose level is lower than the 'validationFailureLevel' set by the user.
      required:
        - cluster
    DeleteClusterResponseContent:
      type: object
      properties:
        cluster:
          $ref: '#/components/schemas/ClusterInfoSummary'
      required:
        - cluster
    DeleteImageResponseContent:
      type: object
      properties:
        image:
          $ref: '#/components/schemas/ImageInfoSummary'
      required:
        - image
    DescribeClusterInstancesResponseContent:
      type: object
      properties:
        nextToken:
          type: string
          description: Token to use for paginated requests.
        instances:
          type: array
          items:
            $ref: '#/components/schemas/ClusterInstance'
      required:
        - instances
    DescribeClusterResponseContent:
      type: object
      properties:
        clusterName:
          type: string
          pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
          description: Name of the cluster.
        region:
          type: string
          description: AWS region where the cluster is created.
        version:
          type: string
          description: ParallelCluster version used to create the cluster.
        cloudFormationStackStatus:
          $ref: '#/components/schemas/CloudFormationStackStatus'
        clusterStatus:
          $ref: '#/components/schemas/ClusterStatus'
        scheduler:
          $ref: '#/components/schemas/Scheduler'
        cloudformationStackArn:
          type: string
          description: ARN of the main CloudFormation stack.
        creationTime:
          type: string
          description: Timestamp representing the cluster creation time.
          format: date-time
        lastUpdatedTime:
          type: string
          description: Timestamp representing the last cluster update time.
          format: date-time
        clusterConfiguration:
          $ref: '#/components/schemas/ClusterConfigurationStructure'
        computeFleetStatus:
          $ref: '#/components/schemas/ComputeFleetStatus'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
          description: Tags associated with the cluster.
        headNode:
          $ref: '#/components/schemas/EC2Instance'
        loginNodes:
          type: array
          items:
            $ref: '#/components/schemas/LoginNodesPool'
        failures:
          type: array
          items:
            $ref: '#/components/schemas/Failure'
          description: Failures array containing failures reason and code when the stack is in CREATE_FAILED status.
      required:
        - cloudFormationStackStatus
        - cloudformationStackArn
        - clusterConfiguration
        - clusterName
        - clusterStatus
        - computeFleetStatus
        - creationTime
        - lastUpdatedTime
        - region
        - tags
        - version
    DescribeComputeFleetResponseContent:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ComputeFleetStatus'
        lastStatusUpdatedTime:
          type: string
          description: Timestamp representing the last status update time.
          format: date-time
      required:
        - status
    DescribeImageResponseContent:
      type: object
      properties:
        imageId:
          type: string
          description: Id of the Image to retrieve detailed information for.
        region:
          type: string
          description: AWS region where the image is created.
        version:
          type: string
          description: ParallelCluster version used to build the image.
        imageBuildStatus:
          $ref: '#/components/schemas/ImageBuildStatus'
        imageBuildLogsArn:
          type: string
          description: ARN of the logs for the image build process.
        cloudformationStackStatus:
          $ref: '#/components/schemas/CloudFormationStackStatus'
        cloudformationStackStatusReason:
          type: string
          description: Reason for the CloudFormation stack status.
        cloudformationStackArn:
          type: string
          description: ARN of the main CloudFormation stack.
        creationTime:
          type: string
          description: Timestamp representing the image creation time.
          format: date-time
        cloudformationStackCreationTime:
          type: string
          description: Timestamp representing the CloudFormation stack creation time.
          format: date-time
        cloudformationStackTags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
          description: Tags for the CloudFormation stack.
        imageConfiguration:
          $ref: '#/components/schemas/ImageConfigurationStructure'
        imagebuilderImageStatus:
          $ref: '#/components/schemas/ImageBuilderImageStatus'
        imagebuilderImageStatusReason:
          type: string
          description: Reason for the ImageBuilder Image status.
        ec2AmiInfo:
          $ref: '#/components/schemas/Ec2AmiInfo'
      required:
        - imageBuildStatus
        - imageConfiguration
        - imageId
        - region
        - version
    DryrunOperationExceptionResponseContent:
      type: object
      description: Communicates that the operation would have succeeded without the dryrun flag.
      properties:
        message:
          type: string
        changeSet:
          type: array
          items:
            $ref: '#/components/schemas/Change'
          description: List of configuration changes requested by the operation.
        validationMessages:
          type: array
          items:
            $ref: '#/components/schemas/ConfigValidationMessage'
          description: List of messages collected during cluster config validation whose level is lower than the 'validationFailureLevel' set by the user.
    EC2Instance:
      type: object
      properties:
        instanceId:
          type: string
        instanceType:
          type: string
        launchTime:
          type: string
          format: date-time
        privateIpAddress:
          type: string
        publicIpAddress:
          type: string
        state:
          $ref: '#/components/schemas/InstanceState'
      required:
        - instanceId
        - instanceType
        - launchTime
        - privateIpAddress
        - state
    Ec2AmiInfo:
      type: object
      properties:
        amiId:
          type: string
          description: EC2 AMI id
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
          description: EC2 AMI Tags
        amiName:
          type: string
          description: EC2 AMI name
        architecture:
          type: string
          description: EC2 AMI architecture
        state:
          $ref: '#/components/schemas/Ec2AmiState'
        description:
          type: string
          description: EC2 AMI description
      required:
        - amiId
    Ec2AmiInfoSummary:
      type: object
      properties:
        amiId:
          type: string
          description: EC2 AMI id
      required:
        - amiId
    Ec2AmiState:
      type: string
      enum:
        - PENDING
        - AVAILABLE
        - INVALID
        - DEREGISTERED
        - TRANSIENT
        - FAILED
        - ERROR
    Failure:
      type: object
      properties:
        failureCode:
          type: string
          description: Failure code when the cluster stack is in CREATE_FAILED status.
        failureReason:
          type: string
          description: Failure reason when the cluster stack is in CREATE_FAILED status.
    GetClusterLogEventsResponseContent:
      type: object
      properties:
        nextToken:
          type: string
          description: Token to use for paginated requests.
        prevToken:
          type: string
          description: Token to use for paginated requests.
        events:
          type: array
          items:
            $ref: '#/components/schemas/LogEvent'
    GetClusterStackEventsResponseContent:
      type: object
      properties:
        nextToken:
          type: string
          description: Token to use for paginated requests.
        events:
          type: array
          items:
            $ref: '#/components/schemas/StackEvent'
    GetImageLogEventsResponseContent:
      type: object
      properties:
        nextToken:
          type: string
          description: Token to use for paginated requests.
        prevToken:
          type: string
          description: Token to use for paginated requests.
        events:
          type: array
          items:
            $ref: '#/components/schemas/LogEvent'
    GetImageStackEventsResponseContent:
      type: object
      properties:
        nextToken:
          type: string
          description: Token to use for paginated requests.
        events:
          type: array
          items:
            $ref: '#/components/schemas/StackEvent'
    ImageBuildStatus:
      type: string
      enum:
        - BUILD_IN_PROGRESS
        - BUILD_FAILED
        - BUILD_COMPLETE
        - DELETE_IN_PROGRESS
        - DELETE_FAILED
        - DELETE_COMPLETE
    ImageBuilderImageStatus:
      type: string
      enum:
        - PENDING
        - CREATING
        - BUILDING
        - TESTING
        - DISTRIBUTING
        - INTEGRATING
        - AVAILABLE
        - CANCELLED
        - FAILED
        - DEPRECATED
        - DELETED
    ImageConfigurationStructure:
      type: object
      properties:
        url:
          type: string
          description: URL of the image configuration file.
    ImageInfoSummary:
      type: object
      properties:
        imageId:
          type: string
          pattern: ^[a-zA-Z][a-zA-Z0-9-]+$
          description: Id of the image.
        ec2AmiInfo:
          $ref: '#/components/schemas/Ec2AmiInfoSummary'
        region:
          type: string
          description: AWS region where the image is built.
        version:
          type: string
          description: ParallelCluster version used to build the image.
        cloudformationStackArn:
          type: string
          description: ARN of the main CloudFormation stack.
        imageBuildStatus:
          $ref: '#/components/schemas/ImageBuildStatus'
        cloudformationStackStatus:
          $ref: '#/components/schemas/CloudFormationStackStatus'
      required:
        - imageBuildStatus
        - imageId
        - region
        - version
    ImageStatusFilteringOption:
      type: string
      enum:
        - AVAILABLE
        - PENDING
        - FAILED
    InstanceState:
      type: string
      enum:
        - pending
        - running
        - shutting-down
        - terminated
        - stopping
        - stopped
    InternalServiceExceptionResponseContent:
      type: object
      description: This exception is thrown on an unhandled service error.
      properties:
        message:
          type: string
    LimitExceededExceptionResponseContent:
      type: object
      description: The client is sending more than the allowed number of requests per unit of time.
      properties:
        message:
          type: string
    ListClusterLogStreamsResponseContent:
      type: object
      properties:
        nextToken:
          type: string
          description: Token to use for paginated requests.
        logStreams:
          type: array
          items:
            $ref: '#/components/schemas/LogStream'
      required:
        - logStreams
    ListClustersResponseContent:
      type: object
      properties:
        nextToken:
          type: string
          description: Token to use for paginated requests.
        clusters:
          type: array
          items:
            $ref: '#/components/schemas/ClusterInfoSummary'
      required:
        - clusters
    ListImageLogStreamsResponseContent:
      type: object
      properties:
        nextToken:
          type: string
          description: Token to use for paginated requests.
        logStreams:
          type: array
          items:
            $ref: '#/components/schemas/LogStream'
      required:
        - logStreams
    ListImagesResponseContent:
      type: object
      properties:
        nextToken:
          type: string
          description: Token to use for paginated requests.
        images:
          type: array
          items:
            $ref: '#/components/schemas/ImageInfoSummary'
      required:
        - images
    ListOfficialImagesResponseContent:
      type: object
      properties:
        images:
          type: array
          items:
            $ref: '#/components/schemas/AmiInfo'
      required:
        - images
    LogEvent:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        message:
          type: string
      required:
        - message
        - timestamp
    LogStream:
      type: object
      properties:
        logStreamName:
          type: string
          description: Name of the log stream.
        creationTime:
          type: string
          description: The creation time of the stream.
          format: date-time
        firstEventTimestamp:
          type: string
          description: The time of the first event of the stream.
          format: date-time
        lastEventTimestamp:
          type: string
          description: The time of the last event of the stream. The lastEventTime value updates on an eventual consistency basis. It typically updates in less than an hour from ingestion, but in rare situations might take longer.
          format: date-time
        lastIngestionTime:
          type: string
          description: The last ingestion time.
          format: date-time
        uploadSequenceToken:
          type: string
          description: The sequence token.
        logStreamArn:
          type: string
          description: The Amazon Resource Name (ARN) of the log stream.
      required:
        - creationTime
        - firstEventTimestamp
        - lastEventTimestamp
        - lastIngestionTime
        - logStreamArn
        - logStreamName
        - uploadSequenceToken
    LoginNodesPool:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/LoginNodesState'
        poolName:
          type: string
        address:
          type: string
        scheme:
          type: string
        healthyNodes:
          type: integer
          format: int32
        unhealthyNodes:
          type: integer
          format: int32
      required:
        - status
    LoginNodesState:
      type: string
      enum:
        - pending
        - active
        - failed
    Metadata:
      type: object
      properties:
        name:
          type: string
        version:
          type: string
    NodeType:
      type: string
      enum:
        - HeadNode
        - ComputeNode
        - LoginNode
    NotFoundExceptionResponseContent:
      type: object
      description: This exception is thrown when the requested entity is not found.
      properties:
        message:
          type: string
    RequestedComputeFleetStatus:
      type: string
      enum:
        - START_REQUESTED
        - STOP_REQUESTED
        - ENABLED
        - DISABLED
    Scheduler:
      type: object
      properties:
        type:
          type: string
        metadata:
          $ref: '#/components/schemas/Metadata'
      required:
        - type
    StackEvent:
      type: object
      properties:
        stackId:
          type: string
          description: The unique ID name of the instance of the stack.
        eventId:
          type: string
          description: The unique ID of this event.
        stackName:
          type: string
          description: The name associated with a stack.
        logicalResourceId:
          type: string
          description: The logical name of the resource specified in the template.
        physicalResourceId:
          type: string
          description: The name or unique identifier associated with the physical instance of the resource.
        resourceType:
          type: string
          description: Type of resource.
        timestamp:
          type: string
          description: Time the status was updated.
          format: date-time
        resourceStatus:
          $ref: '#/components/schemas/CloudFormationResourceStatus'
        resourceStatusReason:
          type: string
          description: Success/failure message associated with the resource.
        resourceProperties:
          type: string
          description: BLOB of the properties used to create the resource.
        clientRequestToken:
          type: string
          description: The token passed to the operation that generated this event.
      required:
        - eventId
        - logicalResourceId
        - physicalResourceId
        - resourceStatus
        - resourceType
        - stackId
        - stackName
        - timestamp
    Tag:
      type: object
      properties:
        key:
          type: string
          description: Tag name
        value:
          type: string
          description: Tag value
    UnauthorizedClientErrorResponseContent:
      type: object
      description: This exception is thrown when the client is not authorized to perform an action.
      properties:
        message:
          type: string
    UpdateClusterBadRequestExceptionResponseContent:
      type: object
      description: This exception is thrown when a client calls the UpdateCluster API with an invalid request. This includes an error due to invalid cluster configuration and unsupported update.
      properties:
        message:
          type: string
        configurationValidationErrors:
          type: array
          items:
            $ref: '#/components/schemas/ConfigValidationMessage'
        updateValidationErrors:
          type: array
          items:
            $ref: '#/components/schemas/UpdateError'
        changeSet:
          type: array
          items:
            $ref: '#/components/schemas/Change'
    UpdateClusterRequestContent:
      type: object
      properties:
        clusterConfiguration:
          type: string
          description: Cluster configuration as a YAML document.
      required:
        - clusterConfiguration
    UpdateClusterResponseContent:
      type: object
      properties:
        cluster:
          $ref: '#/components/schemas/ClusterInfoSummary'
        validationMessages:
          type: array
          items:
            $ref: '#/components/schemas/ConfigValidationMessage'
          description: List of messages collected during cluster config validation whose level is lower than the 'validationFailureLevel' set by the user.
        changeSet:
          type: array
          items:
            $ref: '#/components/schemas/Change'
          description: List of configuration changes requested by the update operation.
      required:
        - changeSet
        - cluster
    UpdateComputeFleetRequestContent:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/RequestedComputeFleetStatus'
      required:
        - status
    UpdateComputeFleetResponseContent:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ComputeFleetStatus'
        lastStatusUpdatedTime:
          type: string
          description: Timestamp representing the last status update time.
          format: date-time
      required:
        - status
    UpdateError:
      type: object
      properties:
        parameter:
          type: string
        currentValue:
          type: string
        requestedValue:
          type: string
        message:
          type: string
    ValidationLevel:
      type: string
      enum:
        - INFO
        - WARNING
        - ERROR
  securitySchemes:
    aws.auth.sigv4:
      type: apiKey
      description: AWS Signature Version 4 authentication
      name: Authorization
      in: header
      x-amazon-apigateway-authtype: awsSigv4
security:
  - aws.auth.sigv4: []
