Amazon API Gateway · Arazzo Workflow

AWS API Gateway Build an HTTP API

Version 1.0.0

Create an HTTP API, attach a backend integration, wire a route to it, and publish a stage.

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

Provider

aws-api-gateway

Workflows

build-http-api
Stand up an HTTP API with an integration, a route, and a stage.
Creates an HTTP API, an integration, a route bound to the integration, and a stage to publish it.
4 steps inputs: description, integrationType, integrationUri, name, payloadFormatVersion, routeKey, stageName outputs: apiEndpoint, apiId, integrationId, routeId, stageName
1
createApi
$sourceDescriptions.apiGatewayV2.createApi
Create the HTTP API container.
2
createIntegration
createIntegration
Create the backend integration the route will forward requests to.
3
createRoute
createRoute
Create the route, targeting the integration via the integrations/ target reference.
4
createStage
createStage
Create a stage to publish the API.

Source API Descriptions

Arazzo Workflow Specification

aws-api-gateway-build-http-api-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: AWS API Gateway Build an HTTP API
  summary: Create an HTTP API, attach a backend integration, wire a route to it, and publish a stage.
  description: >-
    The canonical Amazon API Gateway V2 build flow for an HTTP API. The workflow
    creates an API, creates a backend integration, creates a route whose target
    references that integration, and finally creates a stage to publish the API.
    Because createApi, createStage, and related operations collide with the V1
    description, they are 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: build-http-api
  summary: Stand up an HTTP API with an integration, a route, and a stage.
  description: >-
    Creates an HTTP API, an integration, a route bound to the integration, and a
    stage to publish it.
  inputs:
    type: object
    required:
    - name
    - integrationUri
    - routeKey
    - stageName
    properties:
      name:
        type: string
        description: Name of the HTTP API.
      description:
        type: string
        description: Optional description for the API.
      integrationType:
        type: string
        description: Type of integration (AWS, AWS_PROXY, HTTP, HTTP_PROXY, MOCK).
      integrationUri:
        type: string
        description: Integration target URI (e.g. a Lambda or HTTP backend).
      payloadFormatVersion:
        type: string
        description: Payload format version for the integration.
      routeKey:
        type: string
        description: Route key for the route (e.g. "GET /items").
      stageName:
        type: string
        description: Name of the stage to publish.
  steps:
  - stepId: createApi
    description: Create the HTTP API container.
    operationId: $sourceDescriptions.apiGatewayV2.createApi
    requestBody:
      contentType: application/json
      payload:
        Name: $inputs.name
        ProtocolType: HTTP
        Description: $inputs.description
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      apiId: $response.body#/ApiId
      apiEndpoint: $response.body#/ApiEndpoint
  - stepId: createIntegration
    description: Create the backend integration the route will forward requests to.
    operationId: createIntegration
    parameters:
    - name: api_id
      in: path
      value: $steps.createApi.outputs.apiId
    requestBody:
      contentType: application/json
      payload:
        IntegrationType: $inputs.integrationType
        IntegrationUri: $inputs.integrationUri
        PayloadFormatVersion: $inputs.payloadFormatVersion
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      integrationId: $response.body#/IntegrationId
  - stepId: createRoute
    description: >-
      Create the route, targeting the integration via the integrations/<id>
      target reference.
    operationId: createRoute
    parameters:
    - name: api_id
      in: path
      value: $steps.createApi.outputs.apiId
    requestBody:
      contentType: application/json
      payload:
        RouteKey: $inputs.routeKey
        Target: integrations/$steps.createIntegration.outputs.integrationId
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      routeId: $response.body#/RouteId
  - stepId: createStage
    description: Create a stage to publish the API.
    operationId: createStage
    parameters:
    - name: api_id
      in: path
      value: $steps.createApi.outputs.apiId
    requestBody:
      contentType: application/json
      payload:
        StageName: $inputs.stageName
        AutoDeploy: true
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      stageName: $response.body#/StageName
  outputs:
    apiId: $steps.createApi.outputs.apiId
    apiEndpoint: $steps.createApi.outputs.apiEndpoint
    integrationId: $steps.createIntegration.outputs.integrationId
    routeId: $steps.createRoute.outputs.routeId
    stageName: $steps.createStage.outputs.stageName