> ## Documentation Index
> Fetch the complete documentation index at: https://www.ravion.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get DeploymentResource by id



## OpenAPI

````yaml https://api.ravion.com/openapi.yaml get /deployment-resources/{id}
openapi: 3.0.0
info:
  title: Ravion
  version: 0.0.0
servers:
  - url: https://api.ravion.com
security:
  - BearerAuth: []
tags:
  - name: Projects
  - name: Environments
  - name: Pipelines
  - name: PipelineRuns
  - name: TerraformResources
  - name: TerraformExecutionSummaries
  - name: PipelineStepExecutions
  - name: AwsCloudWatch
  - name: PipelineVersions
  - name: Organizations
  - name: Stacks
  - name: StackWorkspaces
  - name: Auth
  - name: OAuth
  - name: User
  - name: Health
  - name: Memberships
  - name: ServiceAccounts
  - name: AwsDefaultNetworks
  - name: AwsAccounts
  - name: ApiKeys
  - name: ExecutionEnvironments
  - name: ModuleDefinitions
  - name: ModuleVersions
  - name: ModuleInstances
  - name: DefaultValueDefinitions
  - name: DefaultValues
  - name: CodeSources
  - name: Github
  - name: Gitlab
  - name: Git
  - name: Values
  - name: Deployments
  - name: DeploymentResources
  - name: InfrastructureEvents
  - name: WebSocket
  - name: Describe
paths:
  /deployment-resources/{id}:
    get:
      tags:
        - DeploymentResources
      summary: Get DeploymentResource by id
      operationId: GetDeploymentResource
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/DeploymentResource.DetailResponse'
                required:
                  - data
                type: object
          description: The request has succeeded.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: You are not authenticated
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: You do not have permission to access this resource.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: The server cannot find the requested resource.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: Server error
components:
  schemas:
    DeploymentResource.DetailResponse:
      additionalProperties: false
      properties:
        data:
          $ref: '#/components/schemas/DeploymentResource.Detail'
      required:
        - data
      type: object
    Errors.UserFacingErrorData:
      additionalProperties: false
      description: |-
        User-facing error presentation data.
        This is what the API returns to the frontend after formatting ErrorData
        using CEL templates from the error registry.

        Used for both:
        - Error fields on domain models (e.g., PipelineRun.error)
        - API error response bodies (HTTP 4xx/5xx responses)
      properties:
        action:
          allOf:
            - $ref: '#/components/schemas/Errors.Action'
          description: Optional action to help resolve the error
        code:
          description: Full error code, e.g., "Ravion:Pipeline:NOT_FOUND"
          type: string
        description:
          description: Additional description with more details
          type: string
        details:
          description: Structured details rendered as user-facing sections.
          items:
            $ref: '#/components/schemas/Errors.UserFacingErrorDetailSection'
          type: array
        isInternal:
          description: >-
            Indicates whether this error is internal (only set when
            ShowInternal=true).

            This allows SUPERADMINs to identify internal errors while viewing
            full details.
          type: boolean
        message:
          description: Main error message (required)
          type: string
        metadata:
          additionalProperties: {}
          description: >-
            Error params/metadata. Stripped for internal errors unless
            superadmin.
          type: object
        requestId:
          description: Request ID for correlating errors with server logs.
          type: string
      required:
        - code
        - message
      type: object
    DeploymentResource.Detail:
      additionalProperties: false
      description: Detail shape with ancillary fields the drawer needs but lists don't.
      properties:
        awsAccountId:
          description: |-
            Database ID of the AWS account that owns the cluster /
            function / distribution.
          type: string
        data:
          $ref: '#/components/schemas/DeploymentResourceData'
        desiredStatus:
          type: string
        ec2Instance:
          allOf:
            - $ref: '#/components/schemas/DeploymentResource.Ec2InstanceDetail'
          description: |-
            Live configuration and health for EC2_INSTANCE. Absent for other
            resource kinds and when the AWS account can no longer be resolved.
        error:
          $ref: '#/components/schemas/Errors.UserFacingErrorData'
        externalId:
          description: |-
            AWS identity for this resource. Task ARN for ECS tasks,
            request ID for Lambda invocations (future), distribution ID
            for CloudFront distributions under a static deploy (future).
          type: string
        firstSeenAt:
          $ref: '#/components/schemas/UtcDateTime'
        id:
          type: string
        lastEventAt:
          $ref: '#/components/schemas/UtcDateTime'
        lastStatus:
          description: >-
            Generic status string. Kind-specific ladders:

            ECS_TASK → PROVISIONING | PENDING | RUNNING | DEPROVISIONING |
            STOPPED

            EC2_INSTANCE → PENDING | IN_SERVICE | TERMINATING | TERMINATED |
            DETACHING | DETACHED | STANDBY

            LAMBDA_INVOCATION (future) → INIT | RUNNING | SUCCESS | ERROR |
            TIMEOUT

            STATIC_CLOUDFRONT_DISTRIBUTION (future) → PENDING_UPDATE |
            IN_PROGRESS | DEPLOYED | FAILED
          type: string
        lifecycleType:
          allOf:
            - $ref: '#/components/schemas/Deployments.DeploymentResourceLifecycleType'
          description: |-
            Lifecycle type within the parent deployment — RUNTIME for the
            long-lived service-managed task, PRE_DEPLOY / POST_DEPLOY for
            the optional hook tasks.
        logStreams:
          description: |-
            Per-container CloudWatch log streams for ECS_TASK. Empty /
            absent for kinds without per-container logs.
          items:
            $ref: '#/components/schemas/DeploymentResource.EcsTaskLogStream'
          type: array
        moduleDeploymentId:
          description: |-
            Parent ModuleDeployment id — the deploy that spawned this
            resource.
          type: string
        moduleInstanceId:
          description: |-
            Optional linkage to the module instance (denormalized from
            the deploy so same-resource-across-deploys queries are cheap).
          type: string
        startedAt:
          $ref: '#/components/schemas/UtcDateTime'
        stoppedAt:
          $ref: '#/components/schemas/UtcDateTime'
        type:
          allOf:
            - $ref: '#/components/schemas/Deployments.DeploymentResourceType'
          description: Runtime kind of the resource — drives the shape of `data`.
      required:
        - id
        - type
        - lifecycleType
        - moduleDeploymentId
        - externalId
        - firstSeenAt
        - lastEventAt
        - data
      type: object
    Errors.Action:
      additionalProperties: false
      description: Action to help user resolve the error
      properties:
        label:
          description: Button/link label text
          type: string
        url:
          description: URL to navigate to for resolution
          type: string
      required:
        - label
        - url
      type: object
    Errors.UserFacingErrorDetailSection:
      additionalProperties: false
      description: Structured user-facing error detail section.
      properties:
        items:
          description: List of detail values for this section.
          items:
            type: string
          type: array
        object:
          additionalProperties: {}
          description: Structured detail payload for object rendering.
          type: object
        render:
          description: Rendering hint for clients. Valid values are list or object.
          type: string
        title:
          description: Detail section title shown in the UI.
          type: string
      required:
        - title
        - render
      type: object
    DeploymentResourceData:
      description: |-
        Discriminated union over `data` payloads for the resource envelope.
        Variants live in `@fc/schemas/deployments/tsp/aws-ecs.tsp`; the union
        here only wires them up with the shared `type` discriminator so
        JSON decodes unambiguously. Adding a new deployment kind adds
        one variant here + one enum value on `Type`.
      discriminator:
        mapping:
          EC2_INSTANCE:
            $ref: '#/components/schemas/Deployments.AwsEc2InstanceData'
          ECS_TASK:
            $ref: '#/components/schemas/Deployments.EcsTaskData'
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/Deployments.EcsTaskData'
        - $ref: '#/components/schemas/Deployments.AwsEc2InstanceData'
      type: object
    DeploymentResource.Ec2InstanceDetail:
      additionalProperties: false
      description: |-
        On-demand AWS projection used by the EC2 instance drawer. The persisted
        DeploymentResource remains the source of truth for membership and
        release state; this payload supplies volatile configuration and health.
      properties:
        architecture:
          type: string
        autoScaling:
          $ref: '#/components/schemas/DeploymentResource.Ec2AutoScalingDetail'
        availabilityZone:
          type: string
        capacity:
          $ref: '#/components/schemas/DeploymentResource.Ec2InstanceTypeDetail'
        iamInstanceProfileArn:
          type: string
        imageId:
          type: string
        instanceType:
          type: string
        launchTime:
          $ref: '#/components/schemas/UtcDateTime'
        listeners:
          items:
            $ref: '#/components/schemas/DeploymentResource.Ec2ListenerDetail'
          type: array
        loadBalancers:
          items:
            $ref: '#/components/schemas/DeploymentResource.Ec2LoadBalancerDetail'
          type: array
        monitoringState:
          type: string
        name:
          type: string
        platformDetails:
          type: string
        privateDnsName:
          type: string
        privateIpAddress:
          type: string
        publicDnsName:
          type: string
        publicIpAddress:
          type: string
        securityGroups:
          items:
            $ref: '#/components/schemas/DeploymentResource.Ec2SecurityGroup'
          type: array
        ssm:
          $ref: '#/components/schemas/DeploymentResource.Ec2SsmDetail'
        state:
          type: string
        stateTransitionReason:
          type: string
        status:
          $ref: '#/components/schemas/DeploymentResource.Ec2StatusDetail'
        subnetId:
          type: string
        tags:
          items:
            $ref: '#/components/schemas/DeploymentResource.Ec2Tag'
          type: array
        targetGroup:
          $ref: '#/components/schemas/DeploymentResource.Ec2TargetGroupDetail'
        targetHealth:
          $ref: '#/components/schemas/DeploymentResource.Ec2TargetHealthDetail'
        unavailableSections:
          description: |-
            AWS sources that could not be read. Other populated sections remain
            valid and render normally.
          items:
            type: string
          type: array
        vpcId:
          type: string
      required:
        - securityGroups
        - tags
        - loadBalancers
        - listeners
        - unavailableSections
      type: object
    UtcDateTime:
      description: UTC RFC3339 timestamp with a required Z suffix
      format: date-time
      pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?Z$
      type: string
      x-go-type: apitypes.UTCDateTime
      x-go-type-import:
        name: apitypes
        path: ravion/api-go/pkg/apitypes
    Deployments.DeploymentResourceLifecycleType:
      description: |-
        Which lifecycle role a DeploymentResource plays within its
        ModuleDeployment. RUNTIME is the long-lived service-managed task;
        PRE_DEPLOY / POST_DEPLOY are the optional hook tasks.
      enum:
        - RUNTIME
        - PRE_DEPLOY
        - POST_DEPLOY
      type: string
    DeploymentResource.EcsTaskLogStream:
      additionalProperties: false
      properties:
        containerName:
          type: string
        logGroupName:
          type: string
        logStreamPrefix:
          type: string
        region:
          type: string
        streamName:
          type: string
      required:
        - containerName
        - logGroupName
        - region
        - logStreamPrefix
        - streamName
      type: object
    Deployments.DeploymentResourceType:
      description: |-
        Which runtime type a DeploymentResource row represents. Drives the
        shape of its `data` JSON column. Mirrors the `type` discriminator on
        the JSON payload variants (EcsTaskData.type = "ECS_TASK", …) so the
        column and the JSON tag carry the same value.
      enum:
        - ECS_TASK
        - EC2_INSTANCE
      type: string
    Deployments.AwsEc2InstanceData:
      additionalProperties: false
      description: Current state for one EC2 instance belonging to the module's ASG.
      properties:
        autoScalingGroupName:
          type: string
        availabilityZone:
          type: string
        awsAccountNumber:
          type: string
        instanceArn:
          description: Full account- and region-qualified EC2 instance ARN.
          type: string
        instanceId:
          description: Human-readable EC2 instance id (`i-…`).
          type: string
        outputTail:
          description: >-
            Tail of the latest SSM command output, bounded by the activity
            before

            persistence. Failed releases use this for diagnostics; successful

            releases expose it in the instance drawer's deploy-output tab.
          type: string
        region:
          type: string
        releaseCommandId:
          description: |-
            SSM command that most recently attempted this release on this
            concrete instance. Catch-up commands for replacement instances have
            their own command id, distinct from the original deployment command.
          type: string
        releaseCompletedAt:
          format: date-time
          type: string
        releaseStartedAt:
          description: |-
            First time the current release entered an active SSM state on this
            instance.
          format: date-time
          type: string
        releaseStatus:
          allOf:
            - $ref: '#/components/schemas/Deployments.AwsEc2InstanceReleaseStatus'
          description: |-
            Release application state for the deployment referenced by the
            DeploymentResource envelope's `moduleDeploymentId`.
        subnetId:
          type: string
        type:
          enum:
            - EC2_INSTANCE
          type: string
      required:
        - type
        - instanceId
        - instanceArn
        - autoScalingGroupName
        - awsAccountNumber
        - region
        - releaseStatus
      type: object
    Deployments.EcsTaskData:
      additionalProperties: false
      description: |-
        Typed payload for DeploymentResource.data when type == ECS_TASK.
        Carries every ECS-specific field the old EcsTask table held as
        typed columns.

        The generic DeploymentResource envelope owns the fields merge
        needs to reason about across types (lastStatus, desiredStatus,
        startedAt, stoppedAt, firstSeenAt, lastEventAt, externalId) as
        real SQL columns. Everything else — ECS-specific descriptors and
        phase timestamps — lives in this JSON.
      properties:
        availabilityZone:
          type: string
        capacityProviderName:
          type: string
        clusterArn:
          type: string
        connectivity:
          type: string
        containerInstanceArn:
          type: string
        deprovisioningAt:
          format: date-time
          type: string
        exitCode:
          description: |-
            Exit code of the essential container that ended the task. Set
            once when the task reaches STOPPED with a non-null `exitCode` on
            any of its containers.
          format: int32
          type: integer
        healthStatus:
          type: string
        launchType:
          type: string
        pendingAt:
          format: date-time
          type: string
        platformVersion:
          type: string
        provisioningAt:
          format: date-time
          type: string
        pullStartedAt:
          format: date-time
          type: string
        pullStoppedAt:
          format: date-time
          type: string
        runTaskOverrides:
          allOf:
            - $ref: '#/components/schemas/Module.EcsRunTaskOverrides'
          description: |-
            Snapshot of the AWS RunTask `TaskOverride` payload the deploy
            step passed when launching this task. Only populated for
            PRE_DEPLOY / POST_DEPLOY hook tasks — the long-lived RUNTIME
            service task inherits the task definition verbatim and never
            carries an override payload.

            Reuses `Module.EcsRunTaskOverrides` directly — the same model
            the user authors in their YAML under `pre_deploy:` /
            `post_deploy:` — so config and runtime snapshot share one type
            with no parallel struct and no drift when AWS adds a new
            override field.
        runningAt:
          format: date-time
          type: string
        startedBy:
          type: string
        stopCode:
          type: string
        stoppedReason:
          type: string
        targetGroupSnapshot:
          allOf:
            - $ref: '#/components/schemas/Deployments.EcsTaskTargetGroupSnapshot'
          description: |-
            Frozen target-group evidence captured at task-stop. The event
            ingester runs the selector once against a fresh AWS fetch,
            picks the single most diagnostic TG, and persists the result
            here. Absent while the task is running, for workers without a
            load balancer, or when the task stopped before any TG
            registration was observed. The read path is a pure unmarshal —
            no runtime selection.
        taskArn:
          type: string
        taskDefinitionArn:
          type: string
        taskDefinitionFamily:
          type: string
        taskDefinitionRevision:
          format: int32
          type: integer
        taskGroup:
          type: string
        taskTargetId:
          description: |-
            Normalized target-group registration key for this task.
            awsvpc: private IPv4 extracted from the ENI attachment snapshot.
            EC2 bridge/host: the containerInstanceArn (ECS registers the
            instance in the target group rather than a per-task IP). Used by
            the drawer to filter target-health rows to exactly this task.
          type: string
        type:
          enum:
            - ECS_TASK
          type: string
      required:
        - type
        - taskArn
        - clusterArn
        - taskDefinitionArn
      type: object
    DeploymentResource.Ec2AutoScalingDetail:
      additionalProperties: false
      description: Auto Scaling's current view of the instance.
      properties:
        healthStatus:
          type: string
        launchTemplateId:
          type: string
        launchTemplateName:
          type: string
        launchTemplateVersion:
          type: string
        lifecycleState:
          type: string
        protectedFromScaleIn:
          type: boolean
      type: object
    DeploymentResource.Ec2InstanceTypeDetail:
      additionalProperties: false
      description: Static capacity characteristics of the concrete EC2 instance type.
      properties:
        architecture:
          type: string
        defaultVcpus:
          format: int32
          type: integer
        memoryMib:
          format: int64
          type: integer
        networkPerformance:
          type: string
      type: object
    DeploymentResource.Ec2ListenerDetail:
      additionalProperties: false
      description: Listener rule that forwards traffic to the selected target group.
      properties:
        hostHeaders:
          items:
            type: string
          type: array
        isDefaultRule:
          type: boolean
        listenerArn:
          type: string
        loadBalancerArn:
          type: string
        loadBalancerDnsName:
          type: string
        pathPatterns:
          items:
            type: string
          type: array
        port:
          format: int32
          type: integer
        protocol:
          type: string
        rulePriority:
          format: int32
          type: integer
      required:
        - listenerArn
        - loadBalancerArn
        - hostHeaders
        - pathPatterns
        - isDefaultRule
      type: object
    DeploymentResource.Ec2LoadBalancerDetail:
      additionalProperties: false
      description: Load balancer attached to the target group.
      properties:
        dnsName:
          type: string
        loadBalancerArn:
          type: string
        loadBalancerName:
          type: string
        scheme:
          type: string
        type:
          type: string
      required:
        - loadBalancerArn
      type: object
    DeploymentResource.Ec2SecurityGroup:
      additionalProperties: false
      description: One security group attached to the instance's primary network path.
      properties:
        groupId:
          type: string
        groupName:
          type: string
      required:
        - groupId
      type: object
    DeploymentResource.Ec2SsmDetail:
      additionalProperties: false
      description: Systems Manager's current view of the managed node.
      properties:
        agentVersion:
          type: string
        associationStatus:
          type: string
        computerName:
          type: string
        isLatestAgentVersion:
          type: boolean
        lastPingAt:
          $ref: '#/components/schemas/UtcDateTime'
        pingStatus:
          type: string
        platformName:
          type: string
        platformType:
          type: string
        platformVersion:
          type: string
      type: object
    DeploymentResource.Ec2StatusDetail:
      additionalProperties: false
      description: EC2 platform status checks and scheduled maintenance.
      properties:
        attachedEbsStatus:
          type: string
        events:
          items:
            $ref: '#/components/schemas/DeploymentResource.Ec2ScheduledEvent'
          type: array
        instanceStatus:
          type: string
        systemStatus:
          type: string
      required:
        - events
      type: object
    DeploymentResource.Ec2Tag:
      additionalProperties: false
      description: |-
        One EC2 tag. Kept as an array so duplicate/empty values preserve the
        exact AWS response and the UI can render stable key/value rows.
      properties:
        key:
          type: string
        value:
          type: string
      required:
        - key
      type: object
    DeploymentResource.Ec2TargetGroupDetail:
      additionalProperties: false
      description: Target-group configuration surrounding the selected instance target.
      properties:
        healthCheckPath:
          type: string
        healthCheckPort:
          type: string
        healthCheckProtocol:
          type: string
        loadBalancerArns:
          items:
            type: string
          type: array
        matcherGrpcCode:
          type: string
        matcherHttpCode:
          type: string
        port:
          format: int32
          type: integer
        protocol:
          type: string
        protocolVersion:
          type: string
        targetGroupArn:
          type: string
        targetGroupName:
          type: string
        targetType:
          type: string
      required:
        - targetGroupArn
        - loadBalancerArns
      type: object
    DeploymentResource.Ec2TargetHealthDetail:
      additionalProperties: false
      description: |-
        Load-balancer target health for this instance, when the module has a
        target group.
      properties:
        description:
          type: string
        healthCheckPort:
          type: string
        port:
          format: int32
          type: integer
        reason:
          type: string
        state:
          type: string
        targetGroupArn:
          type: string
      required:
        - targetGroupArn
      type: object
    Deployments.AwsEc2InstanceReleaseStatus:
      description: Whether the current release has been applied to a live EC2 instance.
      enum:
        - UNKNOWN
        - PENDING
        - IN_PROGRESS
        - SUCCESS
        - FAILED
      type: string
    Module.EcsRunTaskOverrides:
      additionalProperties: false
      description: >-
        Full AWS ECS RunTask request payload — both the `TaskOverride`

        fields and the top-level RunTask parameters that aren't part of

        `TaskOverride` (launchType, networkConfiguration, …). Flattened

        into one model so users can express any RunTask shape in one

        YAML block.


        Used as:


        • the user-authored hook config in the module YAML (under

        `pre_deploy:` / `post_deploy:`),

        • the runtime snapshot persisted onto

        `DeploymentResource.data.runTaskOverrides` so the task drawer

        can show operators exactly what was sent to AWS.


        Deploy-managed RunTask fields (`cluster`, `taskDefinition`,

        `count`, `clientToken`) are intentionally not exposed — the

        deploy step controls them.


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html

        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskOverride.html
      properties:
        capacity_provider_strategy:
          description: |-
            Capacity-provider strategy — overrides `launch_type` when set.
            Inherits from the parent service when omitted.
          items:
            $ref: '#/components/schemas/Module.EcsCapacityProviderStrategyItem'
          type: array
          x-templateable: true
        container_overrides:
          description: |-
            Per-container overrides. Each entry's `name` matches a container
            in the task definition. AWS RunTask supports overriding any
            subset of containers; the array can be empty when only
            task-level overrides are needed.
          items:
            $ref: '#/components/schemas/Module.EcsContainerOverride'
          type: array
          x-templateable: true
        cpu:
          description: |-
            Task-level CPU override (string for AWS compatibility — same
            format as task-definition `cpu`, e.g. `"256"`, `"1024"`).
          type: string
          x-templateable: true
        enable_ecs_managed_tags:
          description: Whether to enable AWS-managed `aws:ecs:` tags on the task.
          type: boolean
          x-templateable: true
        enable_execute_command:
          description: >-
            Whether to enable ECS Exec on the task (for `aws ecs
            execute-command`).
          type: boolean
          x-templateable: true
        ephemeral_storage:
          allOf:
            - $ref: '#/components/schemas/Module.EcsEphemeralStorage'
          description: Fargate ephemeral storage size override (20–200 GiB).
          x-templateable: true
        execution_role_arn:
          description: |-
            IAM execution role ARN override — what ECS uses to pull the
            image, push logs, and read secrets at task launch.
          type: string
          x-templateable: true
        group:
          description: |-
            Logical group name — used for placement constraints
            (`memberOf(group:<group>)`). Defaults to `family:<task-def-family>`
            when AWS picks.
          type: string
          x-templateable: true
        launch_type:
          description: |-
            Launch type: FARGATE, EC2, or EXTERNAL. When omitted the hook
            inherits the parent service's launch type. Mutually exclusive
            with `capacity_provider_strategy` — set one or the other.
          enum:
            - FARGATE
            - EC2
            - EXTERNAL
          type: string
          x-templateable: true
        memory:
          description: Task-level memory override (MiB, string format).
          type: string
          x-templateable: true
        network_configuration:
          allOf:
            - $ref: '#/components/schemas/Module.EcsNetworkConfiguration'
          description: |-
            VPC / subnet / security-group config. Required for `awsvpc`
            network-mode task definitions; inherited from the parent
            service when omitted.
          x-templateable: true
        placement_constraints:
          description: |-
            Placement constraints — limits which container instances can
            run the task. EC2/EXTERNAL launch types only.
          items:
            $ref: '#/components/schemas/Module.EcsPlacementConstraint'
          type: array
          x-templateable: true
        placement_strategy:
          description: |-
            Placement strategy — how tasks get distributed across instances.
            EC2/EXTERNAL launch types only.
          items:
            $ref: '#/components/schemas/Module.EcsPlacementStrategy'
          type: array
          x-templateable: true
        platform_version:
          description: |-
            Fargate platform version (e.g. `"1.4.0"`, `"LATEST"`).
            Inherits from the parent service when omitted.
          type: string
          x-templateable: true
        propagate_tags:
          description: How tags propagate from task definition / service onto the task.
          enum:
            - TASK_DEFINITION
            - SERVICE
            - NONE
          type: string
          x-templateable: true
        reference_id:
          description: |-
            Caller-supplied reference id (UUID-shaped). Echoed back on the
            resulting Task and useful for client-side correlation.
          type: string
          x-templateable: true
        tags:
          description: Metadata tags applied to the task.
          items:
            $ref: '#/components/schemas/Module.EcsTag'
          type: array
          x-templateable: true
        task_role_arn:
          description: |-
            IAM task role ARN override — what the container assumes when
            calling AWS APIs from inside the task.
          type: string
          x-templateable: true
        timeout:
          description: |-
            Wall-clock timeout in seconds before the task is stopped and
            the deployment fails. Only meaningful when used as a pre/post
            deploy hook config — ignored on the runtime snapshot.

            Default: 1800 (30 minutes).
          format: int32
          minimum: 1
          type: integer
          x-templateable: true
        volume_configurations:
          description: |-
            Per-task volume bindings — name must match a volume in the task
            definition. Used for Fargate-managed ephemeral EBS volumes.
          items:
            $ref: '#/components/schemas/Module.EcsTaskVolumeConfiguration'
          type: array
          x-templateable: true
      type: object
    Deployments.EcsTaskTargetGroupSnapshot:
      additionalProperties: false
      description: |-
        Frozen target-group evidence for a single task, computed once at
        task-stop by the selector and persisted on
        `EcsTaskData.targetGroupSnapshot`. Singular — the selector picks
        the single best TG (state tier → source priority → proximity) at
        write time. The read path is a plain unmarshal; no runtime
        ranking. Only persisted when the task's own target was observed
        in the TG; otherwise the drawer collapses the Targets column.
      properties:
        capturedAt:
          format: date-time
          type: string
        evidenceQuality:
          $ref: '#/components/schemas/Deployments.EcsEvidenceQuality'
        healthCheck:
          $ref: '#/components/schemas/Deployments.EcsTargetHealthCheckConfig'
        source:
          $ref: '#/components/schemas/Deployments.EcsTargetHealthSource'
        targetGroupArn:
          type: string
        targetGroupName:
          type: string
        taskTarget:
          allOf:
            - $ref: '#/components/schemas/Deployments.EcsTaskTargetObservation'
          description: |-
            This task's own target in the TG. Always populated — the
            selector only writes a snapshot when the task's target was
            observed.
      required:
        - targetGroupArn
        - taskTarget
        - capturedAt
        - source
        - evidenceQuality
      type: object
    DeploymentResource.Ec2ScheduledEvent:
      additionalProperties: false
      description: Scheduled AWS maintenance affecting the instance.
      properties:
        code:
          type: string
        description:
          type: string
        eventId:
          type: string
        notAfter:
          $ref: '#/components/schemas/UtcDateTime'
        notBefore:
          $ref: '#/components/schemas/UtcDateTime'
        notBeforeDeadline:
          $ref: '#/components/schemas/UtcDateTime'
      type: object
    Module.EcsCapacityProviderStrategyItem:
      additionalProperties: false
      description: >-
        Capacity-provider strategy entry. Mirrors AWS exactly.


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CapacityProviderStrategyItem.html
      properties:
        base:
          description: |-
            Minimum number of tasks placed onto this provider before
            weighting kicks in. At most one entry in the strategy may
            set `base`.
          format: int32
          maximum: 100000
          minimum: 0
          type: integer
          x-templateable: true
        capacity_provider:
          description: |-
            Capacity provider name (e.g. `FARGATE`, `FARGATE_SPOT`, or
            a custom EC2 capacity provider).
          type: string
          x-templateable: true
        weight:
          description: |-
            Relative share of tasks placed onto this provider when the
            strategy has multiple entries.
          format: int32
          maximum: 1000
          minimum: 0
          type: integer
          x-templateable: true
      required:
        - capacity_provider
      type: object
    Module.EcsContainerOverride:
      additionalProperties: false
      description: >-
        Per-container portion of `EcsRunTaskOverrides`. Mirrors the AWS ECS

        RunTask `ContainerOverride` struct field-for-field — every override

        AWS supports for a container is expressible here. The `name` ties

        the override to a container in the task definition.


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html
      properties:
        command:
          description: Replacement command — replaces the container's CMD array.
          items:
            type: string
          type: array
          x-templateable: true
        cpu:
          description: CPU units override for this container.
          format: int32
          type: integer
          x-templateable: true
        environment:
          description: Environment variables merged on top of the task definition's.
          items:
            $ref: '#/components/schemas/Module.EcsEnvironmentVariable'
          type: array
          x-templateable: true
        environment_files:
          description: Environment files (S3 references) layered on top of `environment`.
          items:
            $ref: '#/components/schemas/Module.EcsEnvironmentFile'
          type: array
          x-templateable: true
        memory:
          description: Hard memory limit (MiB) override for this container.
          format: int32
          type: integer
          x-templateable: true
        memory_reservation:
          description: Soft memory reservation (MiB) override for this container.
          format: int32
          type: integer
          x-templateable: true
        name:
          description: Container name from the task definition. Required.
          minLength: 1
          type: string
          x-templateable: true
        resource_requirements:
          description: GPU / InferenceAccelerator requirements override.
          items:
            $ref: '#/components/schemas/Module.EcsResourceRequirement'
          type: array
          x-templateable: true
      required:
        - name
      type: object
    Module.EcsEphemeralStorage:
      additionalProperties: false
      description: ECS ephemeral storage configuration
      properties:
        size_in_gib:
          description: Storage size in GiB (21–200 for Fargate, minimum 20)
          format: int32
          maximum: 200
          minimum: 20
          type: integer
          x-templateable: true
      required:
        - size_in_gib
      type: object
    Module.EcsNetworkConfiguration:
      additionalProperties: false
      description: >-
        AWS ECS network configuration. Only the `awsvpc` shape exists on

        RunTask (host / bridge networking is task-definition-driven).


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_NetworkConfiguration.html
      properties:
        awsvpc_configuration:
          allOf:
            - $ref: '#/components/schemas/Module.EcsAwsVpcConfiguration'
          description: VPC configuration — required when set.
          x-templateable: true
      required:
        - awsvpc_configuration
      type: object
    Module.EcsPlacementConstraint:
      additionalProperties: false
      description: >-
        AWS ECS placement constraint. EC2/EXTERNAL launch types only —

        Fargate ignores these.


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PlacementConstraint.html
      properties:
        expression:
          description: Cluster query expression — required when `type` is `memberOf`.
          type: string
          x-templateable: true
        type:
          description: |-
            Constraint type. `distinctInstance` spreads tasks one-per-host;
            `memberOf` filters by a cluster query expression.
          enum:
            - distinctInstance
            - memberOf
          type: string
          x-templateable: true
      required:
        - type
      type: object
    Module.EcsPlacementStrategy:
      additionalProperties: false
      description: >-
        AWS ECS placement strategy. EC2/EXTERNAL launch types only —

        Fargate ignores these.


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PlacementStrategy.html
      properties:
        field:
          description: |-
            Attribute the strategy operates on (e.g. `instanceId`,
            `attribute:ecs.availability-zone`, `cpu`, `memory`).
          type: string
          x-templateable: true
        type:
          description: |-
            Strategy type. `random` ignores `field`; `spread` and `binpack`
            require `field`.
          enum:
            - random
            - spread
            - binpack
          type: string
          x-templateable: true
      required:
        - type
      type: object
    Module.EcsTag:
      additionalProperties: false
      description: AWS resource tag
      properties:
        key:
          description: Tag key
          type: string
          x-templateable: true
        value:
          description: Tag value
          type: string
          x-templateable: true
      required:
        - key
        - value
      type: object
    Module.EcsTaskVolumeConfiguration:
      additionalProperties: false
      description: >-
        Per-task volume binding for ECS-managed volumes (today: ephemeral

        EBS for Fargate). The `name` must match a volume entry in the

        task definition's `volumes` list.


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskVolumeConfiguration.html
      properties:
        managed_ebs_volume:
          allOf:
            - $ref: '#/components/schemas/Module.EcsTaskManagedEBSVolumeConfiguration'
          description: Managed-EBS volume configuration.
          x-templateable: true
        name:
          description: Volume name — must match a `name` in the task definition.
          type: string
          x-templateable: true
      required:
        - name
      type: object
    Deployments.EcsEvidenceQuality:
      description: |-
        Evidence quality for the task's target-group snapshot. Computed
        once at task-stop by the selector. The snapshot is only persisted
        when the task's own target was observed, so the drawer never needs
        to distinguish "found" from "not found" — this label only
        separates the strong failure/healthy frame from a noisier
        initial/unused one.
      enum:
        - definitive
        - transient
      type: string
    Deployments.EcsTargetHealthCheckConfig:
      additionalProperties: false
      description: |-
        Health-check configuration AWS uses to probe the target group.
        Captured alongside `DescribeTargetHealth` so the drawer's target
        card can answer "what endpoint is AWS hitting?" — which is the
        first question readers ask when chasing an unhealthy target.
      properties:
        healthyThresholdCount:
          format: int32
          type: integer
        intervalSeconds:
          format: int32
          type: integer
        matcherSummary:
          description: |-
            Pre-formatted HTTP matcher summary (e.g. "200", "200-399"). Only
            meaningful for HTTP/HTTPS/GRPC.
          type: string
        path:
          description: Path AWS probes. Omitted for TCP-style health checks.
          type: string
        port:
          description: String because AWS accepts "traffic-port" as a literal.
          type: string
        protocol:
          description: |-
            "HTTP" | "HTTPS" | "TCP" | "TLS" | "GRPC" — the AWS enum
            verbatim.
          type: string
        timeoutSeconds:
          format: int32
          type: integer
        unhealthyThresholdCount:
          format: int32
          type: integer
      required:
        - protocol
        - port
      type: object
    Deployments.EcsTargetHealthSource:
      description: |-
        Which ingestion path wrote the snapshot. Used for debugging and UI
        labeling ("was this captured at task-stop or during the deploy
        poll loop?").
      enum:
        - event-ingest
      type: string
    Deployments.EcsTaskTargetObservation:
      additionalProperties: false
      description: |-
        Projection of one `DescribeTargetHealth.TargetHealthDescriptions`
        entry. Carries the observable fields the drawer renders; omits
        volatile/internal bookkeeping.
      properties:
        description:
          description: AWS free-form failure description.
          type: string
        id:
          description: Display key "ip:port" or "container-instance-arn:port".
          type: string
        port:
          format: int32
          type: integer
        rawId:
          description: |-
            Raw AWS target identity — private IP (awsvpc) or
            container-instance ARN (EC2).
          type: string
        reasonCode:
          description: AWS reason code (e.g., "Target.ResponseCodeMismatch").
          type: string
        state:
          description: |-
            AWS target state: "healthy" | "unhealthy" | "draining" |
            "initial" | "unused" | "unavailable" | "unhealthy.draining".
          type: string
      required:
        - id
        - rawId
        - state
      type: object
    Module.EcsEnvironmentVariable:
      additionalProperties: false
      description: Environment variable as name-value pair
      properties:
        name:
          description: Variable name
          type: string
          x-templateable: true
        value:
          description: Variable value
          type: string
          x-templateable: true
      required:
        - name
        - value
      type: object
    Module.EcsEnvironmentFile:
      additionalProperties: false
      description: Environment file from S3
      properties:
        type:
          description: File type
          enum:
            - s3
          type: string
          x-templateable: true
        value:
          description: S3 ARN of the environment file
          type: string
          x-templateable: true
      required:
        - value
        - type
      type: object
    Module.EcsResourceRequirement:
      additionalProperties: false
      description: GPU or other resource requirement
      properties:
        type:
          description: Resource type — currently only GPU
          enum:
            - GPU
            - InferenceAccelerator
          type: string
          x-templateable: true
        value:
          description: Number of resources
          type: string
          x-templateable: true
      required:
        - type
        - value
      type: object
    Module.EcsAwsVpcConfiguration:
      additionalProperties: false
      description: >-
        AWS VPC configuration for `awsvpc`-mode tasks.


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AwsVpcConfiguration.html
      properties:
        assign_public_ip:
          description: |-
            Whether the task ENI gets a public IP. Required for Fargate
            tasks pulling images from non-VPC-routable registries (e.g.
            public ECR) when there's no NAT.
          enum:
            - ENABLED
            - DISABLED
          type: string
          x-templateable: true
        security_groups:
          description: Security groups attached to the task ENI.
          items:
            type: string
          type: array
          x-templateable: true
        subnets:
          description: Subnet IDs the task ENI is placed into.
          items:
            type: string
          minItems: 1
          type: array
          x-templateable: true
      required:
        - subnets
      type: object
    Module.EcsTaskManagedEBSVolumeConfiguration:
      additionalProperties: false
      description: >-
        AWS-managed Fargate ephemeral EBS volume configuration.


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskManagedEBSVolumeConfiguration.html
      properties:
        encrypted:
          description: Whether the volume is encrypted at rest.
          type: boolean
          x-templateable: true
        filesystem_type:
          description: |-
            Filesystem type to format the volume with (`ext3`, `ext4`,
            `xfs`, `ntfs`). Defaults per OS family.
          type: string
          x-templateable: true
        iops:
          description: Provisioned IOPS — required for `io1`/`io2`, optional for `gp3`.
          format: int32
          type: integer
          x-templateable: true
        kms_key_id:
          description: KMS key id (alias or ARN) for at-rest encryption.
          type: string
          x-templateable: true
        role_arn:
          description: |-
            IAM role ARN AWS uses to provision the EBS volume on the
            customer's behalf. Required.
          type: string
          x-templateable: true
        size_in_gib:
          description: Volume size (GiB). Range depends on `volume_type`.
          format: int32
          type: integer
          x-templateable: true
        snapshot_id:
          description: Snapshot id to restore from.
          type: string
          x-templateable: true
        tag_specifications:
          description: Tag specifications applied to the EBS volume.
          items:
            $ref: '#/components/schemas/Module.EcsEBSTagSpecification'
          type: array
          x-templateable: true
        termination_policy:
          allOf:
            - $ref: >-
                #/components/schemas/Module.EcsTaskManagedEBSVolumeTerminationPolicy
          description: |-
            Termination policy — controls whether the volume is deleted
            when the task stops.
          x-templateable: true
        throughput:
          description: Provisioned throughput (MiB/s) — `gp3` only.
          format: int32
          type: integer
          x-templateable: true
        volume_initialization_rate:
          description: |-
            Initialization rate (MiB/s) for snapshot-restored volumes —
            controls how fast blocks are pre-warmed.
          format: int32
          type: integer
          x-templateable: true
        volume_type:
          description: |-
            EBS volume type (`gp3`, `gp2`, `io2`, `io1`, `sc1`, `st1`,
            `standard`).
          type: string
          x-templateable: true
      required:
        - role_arn
      type: object
    Module.EcsEBSTagSpecification:
      additionalProperties: false
      description: >-
        Tag specification for an ECS-managed EBS volume.


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EBSTagSpecification.html
      properties:
        propagate_tags:
          description: |-
            Where the tags come from — explicit list, propagated from the
            task definition, or none.
          enum:
            - TASK_DEFINITION
            - SERVICE
            - NONE
          type: string
          x-templateable: true
        resource_type:
          description: |-
            Resource type the tags apply to. Currently only `volume`
            is supported.
          enum:
            - volume
          type: string
          x-templateable: true
        tags:
          description: Explicit tags.
          items:
            $ref: '#/components/schemas/Module.EcsTag'
          type: array
          x-templateable: true
      required:
        - resource_type
      type: object
    Module.EcsTaskManagedEBSVolumeTerminationPolicy:
      additionalProperties: false
      description: >-
        Termination policy for an ECS-managed EBS volume.


        https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskManagedEBSVolumeTerminationPolicy.html
      properties:
        delete_on_termination:
          description: Whether to delete the volume when the task stops.
          type: boolean
          x-templateable: true
      required:
        - delete_on_termination
      type: object
  securitySchemes:
    BearerAuth:
      scheme: Bearer
      type: http

````