Amazon HealthLake · Arazzo Workflow

Amazon HealthLake Start FHIR Import Job, Poll, and List

Version 1.0.0

Start a FHIR import job, poll it until COMPLETED, then list all import jobs.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub FHIRHealth DataHealthcareHIPAACloud ComputingArazzoWorkflows

Provider

amazon-healthlake

Workflows

start-import-poll-and-list
Start a FHIR import job, wait for COMPLETED, then list import jobs.
Calls StartFHIRImportJob, repeatedly describes the resulting import job until its status is COMPLETED, and then lists import jobs for the data store.
3 steps inputs: ClientToken, DataAccessRoleArn, DatastoreId, InputS3Uri, JobName, MaxResults, OutputKmsKeyId, OutputS3Uri outputs: importJobPropertiesList, jobId, jobStatus
1
startImportJob
Begin the FHIR import job. The response returns the AWS-generated job id, job status, and the data store id.
2
pollImportJob
Describe the import job and inspect its status. While the status is SUBMITTED or IN_PROGRESS the step loops back to itself; once the status is COMPLETED the flow proceeds to list import jobs.
3
listImportJobs
List all FHIR import jobs for the data store so the completed job can be confirmed in the catalog.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Amazon HealthLake Start FHIR Import Job, Poll, and List
  summary: Start a FHIR import job, poll it until COMPLETED, then list all import jobs.
  description: >-
    Begins an Amazon HealthLake FHIR import job that ingests FHIR data from an
    S3 location into a data store, polls the import job until it reports
    COMPLETED, and then lists all import jobs for the data store so the finished
    job can be confirmed in the catalog. The start call returns the
    AWS-generated job id, the describe call loops while the job is SUBMITTED or
    IN_PROGRESS, and the list call enumerates the data store's import jobs.
    Each step inlines its AWS JSON request body and the X-Amz-Target header that
    selects the HealthLake operation.
  version: 1.0.0
sourceDescriptions:
- name: xAmzTargetHealthlakeDescribefhirimportjobApi
  url: ../openapi/amazon-healthlake-x-amz-target-healthlake-describefhirimportjob-api-openapi.yml
  type: openapi
- name: xAmzTargetHealthlakeListfhirimportjobsApi
  url: ../openapi/amazon-healthlake-x-amz-target-healthlake-listfhirimportjobs-api-openapi.yml
  type: openapi
- name: xAmzTargetHealthlakeStartfhirimportjobApi
  url: ../openapi/amazon-healthlake-x-amz-target-healthlake-startfhirimportjob-api-openapi.yml
  type: openapi
workflows:
- workflowId: start-import-poll-and-list
  summary: Start a FHIR import job, wait for COMPLETED, then list import jobs.
  description: >-
    Calls StartFHIRImportJob, repeatedly describes the resulting import job
    until its status is COMPLETED, and then lists import jobs for the data
    store.
  inputs:
    type: object
    required:
    - DatastoreId
    - InputS3Uri
    - OutputS3Uri
    - OutputKmsKeyId
    - DataAccessRoleArn
    - ClientToken
    properties:
      DatastoreId:
        type: string
        description: The AWS-generated data store ID to import data into.
      InputS3Uri:
        type: string
        description: The S3 location of the FHIR data to be imported.
      OutputS3Uri:
        type: string
        description: The S3 location used for the import job output.
      OutputKmsKeyId:
        type: string
        description: The KMS key ID used to access the output S3 bucket.
      DataAccessRoleArn:
        type: string
        description: The IAM role ARN that gives AWS HealthLake access to your input data.
      ClientToken:
        type: string
        description: User provided token used for ensuring idempotency.
      JobName:
        type: string
        description: The user generated name for the import job.
      MaxResults:
        type: string
        description: Pagination limit for the list of import jobs.
  steps:
  - stepId: startImportJob
    description: >-
      Begin the FHIR import job. The response returns the AWS-generated job id,
      job status, and the data store id.
    operationId: StartFHIRImportJob
    parameters:
    - name: X-Amz-Target
      in: header
      value: HealthLake.StartFHIRImportJob
    requestBody:
      contentType: application/json
      payload:
        JobName: $inputs.JobName
        InputDataConfig:
          S3Uri: $inputs.InputS3Uri
        JobOutputDataConfig:
          S3Configuration:
            S3Uri: $inputs.OutputS3Uri
            KmsKeyId: $inputs.OutputKmsKeyId
        DatastoreId: $inputs.DatastoreId
        DataAccessRoleArn: $inputs.DataAccessRoleArn
        ClientToken: $inputs.ClientToken
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      jobId: $response.body#/JobId
      jobStatus: $response.body#/JobStatus
      datastoreId: $response.body#/DatastoreId
  - stepId: pollImportJob
    description: >-
      Describe the import job and inspect its status. While the status is
      SUBMITTED or IN_PROGRESS the step loops back to itself; once the status is
      COMPLETED the flow proceeds to list import jobs.
    operationId: DescribeFHIRImportJob
    parameters:
    - name: X-Amz-Target
      in: header
      value: HealthLake.DescribeFHIRImportJob
    requestBody:
      contentType: application/json
      payload:
        DatastoreId: $inputs.DatastoreId
        JobId: $steps.startImportJob.outputs.jobId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      jobStatus: $response.body#/ImportJobProperties/JobStatus
      importJobProperties: $response.body#/ImportJobProperties
    onSuccess:
    - name: importCompleted
      type: goto
      stepId: listImportJobs
      criteria:
      - context: $response.body
        condition: $.ImportJobProperties.JobStatus == "COMPLETED"
        type: jsonpath
    - name: importStillSubmitted
      type: goto
      stepId: pollImportJob
      criteria:
      - context: $response.body
        condition: $.ImportJobProperties.JobStatus == "SUBMITTED"
        type: jsonpath
    - name: importStillRunning
      type: goto
      stepId: pollImportJob
      criteria:
      - context: $response.body
        condition: $.ImportJobProperties.JobStatus == "IN_PROGRESS"
        type: jsonpath
  - stepId: listImportJobs
    description: >-
      List all FHIR import jobs for the data store so the completed job can be
      confirmed in the catalog.
    operationId: ListFHIRImportJobs
    parameters:
    - name: X-Amz-Target
      in: header
      value: HealthLake.ListFHIRImportJobs
    - name: MaxResults
      in: query
      value: $inputs.MaxResults
    requestBody:
      contentType: application/json
      payload:
        DatastoreId: $inputs.DatastoreId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      importJobPropertiesList: $response.body#/ImportJobPropertiesList
      nextToken: $response.body#/NextToken
  outputs:
    jobId: $steps.startImportJob.outputs.jobId
    jobStatus: $steps.pollImportJob.outputs.jobStatus
    importJobPropertiesList: $steps.listImportJobs.outputs.importJobPropertiesList

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/amazon-healthlake-start-import-poll-and-list-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.