Rigetti Computing · Arazzo Workflow

Rigetti Book QPU Reservation

Version 1.0.0

Find an available reservation slot on a quantum processor, book it, and confirm the booking.

1 workflow 1 source API 1 provider
View Spec View on GitHub Quantum ComputingSuperconducting QubitsQuantum Cloud ServicesQCSQPUQuilpyQuilNISQFault-Tolerant Quantum ComputingQuantum-Classical HybridPublic CompanyArazzoWorkflows

Provider

rigetti

Workflows

book-qpu-reservation
Find and book a dedicated reservation slot on a quantum processor.
Searches for available reservation windows on a processor, books the first available slot, and confirms the created reservation. Ends early when no slot is available.
3 steps inputs: duration, notes, quantumProcessorId, startTimeFrom, token outputs: endTime, price, reservationId, startTime
1
findAvailable
FindAvailableReservations
List currently available reservation windows on the requested processor that start at or after the requested time and match the duration.
2
createReservation
CreateReservation
Create a reservation for the discovered slot's exact start and end times on the requested processor.
3
confirmReservation
GetReservation
Read the newly created reservation back by id to confirm it was persisted with the expected processor, times, and price.

Source API Descriptions

Arazzo Workflow Specification

rigetti-book-qpu-reservation-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Rigetti Book QPU Reservation
  summary: Find an available reservation slot on a quantum processor, book it, and confirm the booking.
  description: >-
    Reserving dedicated time on a Rigetti quantum processor is a three-act flow:
    discover an open slot that satisfies a requested start window and duration,
    create a reservation for the slot's exact start and end times, and then read
    the reservation back to confirm it was persisted and priced. The workflow
    branches when no slot is available so callers can react without a failed
    booking attempt. 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: qcsApi
  url: ../openapi/rigetti-qcs-api-openapi.yml
  type: openapi
workflows:
- workflowId: book-qpu-reservation
  summary: Find and book a dedicated reservation slot on a quantum processor.
  description: >-
    Searches for available reservation windows on a processor, books the first
    available slot, and confirms the created reservation. Ends early when no
    slot is available.
  inputs:
    type: object
    required:
    - token
    - quantumProcessorId
    - startTimeFrom
    - duration
    properties:
      token:
        type: string
        description: A QCS JWT bearer token used to authenticate API requests.
      quantumProcessorId:
        type: string
        description: The processor to reserve time on (e.g. Aspen-M-3).
      startTimeFrom:
        type: string
        description: RFC3339 timestamp; the earliest acceptable reservation start.
      duration:
        type: string
        description: >-
          Desired reservation length as a Go duration string (e.g. "15m",
          "1h").
      notes:
        type: string
        description: Optional free-text notes to attach to the reservation.
  steps:
  - stepId: findAvailable
    description: >-
      List currently available reservation windows on the requested processor
      that start at or after the requested time and match the duration.
    operationId: FindAvailableReservations
    parameters:
    - name: quantumProcessorId
      in: query
      value: $inputs.quantumProcessorId
    - name: startTimeFrom
      in: query
      value: $inputs.startTimeFrom
    - name: duration
      in: query
      value: $inputs.duration
    - name: Authorization
      in: header
      value: Bearer $inputs.token
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      slotStartTime: $response.body#/availableReservations/0/startTime
      slotEndTime: $response.body#/availableReservations/0/endTime
      slotPrice: $response.body#/availableReservations/0/price
    onSuccess:
    - name: slotFound
      type: goto
      stepId: createReservation
      criteria:
      - context: $response.body
        condition: $.availableReservations.length > 0
        type: jsonpath
    - name: noSlot
      type: end
      criteria:
      - context: $response.body
        condition: $.availableReservations.length == 0
        type: jsonpath
  - stepId: createReservation
    description: >-
      Create a reservation for the discovered slot's exact start and end times
      on the requested processor.
    operationId: CreateReservation
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.token
    requestBody:
      contentType: application/json
      payload:
        quantumProcessorId: $inputs.quantumProcessorId
        startTime: $steps.findAvailable.outputs.slotStartTime
        endTime: $steps.findAvailable.outputs.slotEndTime
        notes: $inputs.notes
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      reservationId: $response.body#/id
      price: $response.body#/price
  - stepId: confirmReservation
    description: >-
      Read the newly created reservation back by id to confirm it was persisted
      with the expected processor, times, and price.
    operationId: GetReservation
    parameters:
    - name: reservationId
      in: path
      value: $steps.createReservation.outputs.reservationId
    - name: Authorization
      in: header
      value: Bearer $inputs.token
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      reservationId: $response.body#/id
      startTime: $response.body#/startTime
      endTime: $response.body#/endTime
      cancelled: $response.body#/cancelled
  outputs:
    reservationId: $steps.confirmReservation.outputs.reservationId
    startTime: $steps.confirmReservation.outputs.startTime
    endTime: $steps.confirmReservation.outputs.endTime
    price: $steps.createReservation.outputs.price