Amazon API Gateway · Arazzo Workflow

AWS API Gateway Decommission an HTTP API

Version 1.0.0

Confirm an HTTP API, check for published stages, and delete the API when it is safe to remove.

1 workflow 1 source API 1 provider
View Spec View on GitHub API GatewayCloudRESTHTTPWebSocketServerlessMCPAgentCoreDeveloper PortalArazzoWorkflows

Provider

aws-api-gateway

Workflows

decommission-http-api
Delete an API only when it has no published stages.
Confirms an API, lists its stages, and branches to delete the API when no stages are present.
3 steps inputs: apiId outputs: apiName, deleteStatus, stages
1
confirmApi
getApi
Confirm the API exists before attempting teardown.
2
listStages
$sourceDescriptions.apiGatewayV2.getStages
List stages to decide whether the API is safe to delete.
3
deleteApi
deleteApi
Delete the API now that no stages remain.

Source API Descriptions

Arazzo Workflow Specification

aws-api-gateway-decommission-http-api-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: AWS API Gateway Decommission an HTTP API
  summary: Confirm an HTTP API, check for published stages, and delete the API when it is safe to remove.
  description: >-
    A guarded teardown of an Amazon API Gateway V2 API. The workflow confirms the
    API exists, lists its stages, and branches: when no stages are published it
    deletes the API, and when stages still exist it stops at the inventory so an
    operator can decide. Because getStages collides with the V1 description it is
    addressed through the V2 source. Every step spells out its request inline so
    the flow can be read and executed without opening the underlying OpenAPI
    description.
  version: 1.0.0
sourceDescriptions:
- name: apiGatewayV2
  url: ../openapi/aws-api-gateway-v2-openapi.yml
  type: openapi
workflows:
- workflowId: decommission-http-api
  summary: Delete an API only when it has no published stages.
  description: >-
    Confirms an API, lists its stages, and branches to delete the API when no
    stages are present.
  inputs:
    type: object
    required:
    - apiId
    properties:
      apiId:
        type: string
        description: Identifier of the API to decommission.
  steps:
  - stepId: confirmApi
    description: Confirm the API exists before attempting teardown.
    operationId: getApi
    parameters:
    - name: api_id
      in: path
      value: $inputs.apiId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      apiName: $response.body#/Name
  - stepId: listStages
    description: List stages to decide whether the API is safe to delete.
    operationId: $sourceDescriptions.apiGatewayV2.getStages
    parameters:
    - name: api_id
      in: path
      value: $inputs.apiId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      stages: $response.body#/Items
    onSuccess:
    - name: noStages
      type: goto
      stepId: deleteApi
      criteria:
      - context: $response.body
        condition: $.Items.length == 0
        type: jsonpath
    - name: stagesExist
      type: end
      criteria:
      - context: $response.body
        condition: $.Items.length > 0
        type: jsonpath
  - stepId: deleteApi
    description: Delete the API now that no stages remain.
    operationId: deleteApi
    parameters:
    - name: api_id
      in: path
      value: $inputs.apiId
    successCriteria:
    - condition: $statusCode == 204
    outputs:
      statusCode: $statusCode
  outputs:
    apiName: $steps.confirmApi.outputs.apiName
    stages: $steps.listStages.outputs.stages
    deleteStatus: $steps.deleteApi.outputs.statusCode