Amazon Connect · Arazzo Workflow

Amazon Connect Provision Queue with Hours of Operation

Version 1.0.0

Create an hours-of-operation schedule, build a queue that uses it, and verify the queue.

1 workflow 1 source API 1 provider
View Spec View on GitHub ChatContact CenterCustomer ServiceVoiceAIOmnichannelArazzoWorkflows

Provider

amazon-connect

Workflows

provision-queue-with-hours
Create hours of operation and a queue bound to them.
Creates an hours-of-operation schedule, then a queue that references it, and confirms the queue carries the new schedule.
3 steps inputs: hoursDescription, hoursName, instanceId, maxContacts, queueDescription, queueName, timeZone outputs: boundHoursOfOperationId, hoursOfOperationId, queueId
1
createHours
createHoursOfOperation
Create an hours-of-operation schedule covering a standard Monday window.
2
createQueue
createQueue
Create a queue that uses the hours-of-operation schedule created in the previous step.
3
confirmQueue
describeQueue
Describe the queue and confirm it references the hours-of-operation schedule that was just created.

Source API Descriptions

Arazzo Workflow Specification

amazon-connect-provision-queue-with-hours-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Amazon Connect Provision Queue with Hours of Operation
  summary: Create an hours-of-operation schedule, build a queue that uses it, and verify the queue.
  description: >-
    Provisions a contact queue together with its operating schedule. The
    workflow first creates an hours-of-operation record with a weekday config,
    then creates a queue that references that schedule, and finally describes the
    queue to confirm it was created and bound to the new hours of operation.
    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: amazonConnectApi
  url: ../openapi/amazon-connect-openapi.yml
  type: openapi
workflows:
- workflowId: provision-queue-with-hours
  summary: Create hours of operation and a queue bound to them.
  description: >-
    Creates an hours-of-operation schedule, then a queue that references it, and
    confirms the queue carries the new schedule.
  inputs:
    type: object
    required:
    - instanceId
    - hoursName
    - timeZone
    - queueName
    properties:
      instanceId:
        type: string
        description: The identifier of the Amazon Connect instance.
      hoursName:
        type: string
        description: The name of the hours-of-operation schedule.
      hoursDescription:
        type: string
        description: A description for the hours-of-operation schedule.
      timeZone:
        type: string
        description: The time zone for the hours of operation (e.g. America/New_York).
      queueName:
        type: string
        description: The name of the queue to create.
      queueDescription:
        type: string
        description: A description for the queue.
      maxContacts:
        type: integer
        description: The maximum number of contacts allowed in the queue.
  steps:
  - stepId: createHours
    description: >-
      Create an hours-of-operation schedule covering a standard Monday window.
    operationId: createHoursOfOperation
    parameters:
    - name: InstanceId
      in: path
      value: $inputs.instanceId
    requestBody:
      contentType: application/json
      payload:
        Name: $inputs.hoursName
        Description: $inputs.hoursDescription
        TimeZone: $inputs.timeZone
        Config:
        - Day: MONDAY
          StartTime:
            Hours: 9
            Minutes: 0
          EndTime:
            Hours: 17
            Minutes: 0
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      hoursOfOperationId: $response.body#/HoursOfOperationId
      hoursOfOperationArn: $response.body#/HoursOfOperationArn
  - stepId: createQueue
    description: >-
      Create a queue that uses the hours-of-operation schedule created in the
      previous step.
    operationId: createQueue
    parameters:
    - name: InstanceId
      in: path
      value: $inputs.instanceId
    requestBody:
      contentType: application/json
      payload:
        Name: $inputs.queueName
        Description: $inputs.queueDescription
        HoursOfOperationId: $steps.createHours.outputs.hoursOfOperationId
        MaxContacts: $inputs.maxContacts
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      queueId: $response.body#/QueueId
      queueArn: $response.body#/QueueArn
  - stepId: confirmQueue
    description: >-
      Describe the queue and confirm it references the hours-of-operation
      schedule that was just created.
    operationId: describeQueue
    parameters:
    - name: InstanceId
      in: path
      value: $inputs.instanceId
    - name: QueueId
      in: path
      value: $steps.createQueue.outputs.queueId
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.Queue.HoursOfOperationId == $steps.createHours.outputs.hoursOfOperationId
      type: jsonpath
    outputs:
      queueRecord: $response.body#/Queue
      boundHoursOfOperationId: $response.body#/Queue/HoursOfOperationId
  outputs:
    hoursOfOperationId: $steps.createHours.outputs.hoursOfOperationId
    queueId: $steps.createQueue.outputs.queueId
    boundHoursOfOperationId: $steps.confirmQueue.outputs.boundHoursOfOperationId