Microsoft Azure Quantum · Arazzo Workflow

Azure Quantum Quota Capacity Check

Version 1.0.0

List workspace quotas, branch on remaining headroom, and stage storage when capacity exists.

1 workflow 1 source API 1 provider
View Spec View on GitHub QuantumQuantum ComputingAzureMicrosoftQ#QDKResource EstimationIonQQuantinuumPasqalRigettiHybrid QuantumFault ToleranceArazzoWorkflows

Provider

microsoft-quantum

Workflows

quota-capacity-check
Check quota headroom and stage storage only when capacity remains.
Reads the workspace quotas and compares the first quota's utilization and holds against its limit. When headroom exists it requests a container SAS URI and returns it; otherwise it reports the exhausted quota dimension.
3 steps inputs: apiVersion, authToken, containerName, resourceGroupName, subscriptionId, workspaceName outputs: exhaustedDimension, quotas, sasUri
1
listQuotas
Quotas_List
List the workspace quotas with their per-dimension utilization, holds, and limit.
2
stageStorage
Storage_GetSasUri
Capacity remains, so request a container SAS URI ready for a job submission.
3
reportExhausted
Quotas_List
No headroom remains; re-read quotas to surface the exhausted dimension and its provider for the caller.

Source API Descriptions

Arazzo Workflow Specification

microsoft-quantum-quota-capacity-check-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Azure Quantum Quota Capacity Check
  summary: List workspace quotas, branch on remaining headroom, and stage storage when capacity exists.
  description: >-
    Before submitting expensive quantum work, callers want to confirm there is
    quota headroom. This workflow lists the workspace quotas with Quotas_List,
    branches on whether the first quota's utilization plus holds is still below
    its limit, and when capacity remains it requests a storage SAS URI so a job
    can be staged. Each step spells out its request inline, including the inline
    Authorization bearer token and the required api-version query parameter.
  version: 1.0.0
sourceDescriptions:
- name: dataPlaneApi
  url: ../openapi/azure-quantum-data-plane-openapi.json
  type: openapi
workflows:
- workflowId: quota-capacity-check
  summary: Check quota headroom and stage storage only when capacity remains.
  description: >-
    Reads the workspace quotas and compares the first quota's utilization and
    holds against its limit. When headroom exists it requests a container SAS
    URI and returns it; otherwise it reports the exhausted quota dimension.
  inputs:
    type: object
    required:
    - subscriptionId
    - resourceGroupName
    - workspaceName
    - apiVersion
    - authToken
    - containerName
    properties:
      subscriptionId:
        type: string
        description: The Azure subscription identifier that owns the workspace.
      resourceGroupName:
        type: string
        description: The resource group containing the Quantum workspace.
      workspaceName:
        type: string
        description: The name of the Azure Quantum workspace.
      apiVersion:
        type: string
        description: The data-plane api-version, e.g. 2026-01-15-preview.
      authToken:
        type: string
        description: The Azure AD bearer token (without the "Bearer " prefix).
      containerName:
        type: string
        description: The storage container name to stage job data into when capacity exists.
  steps:
  - stepId: listQuotas
    description: >-
      List the workspace quotas with their per-dimension utilization, holds, and
      limit.
    operationId: Quotas_List
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.authToken"
    - name: api-version
      in: query
      value: $inputs.apiVersion
    - name: subscriptionId
      in: path
      value: $inputs.subscriptionId
    - name: resourceGroupName
      in: path
      value: $inputs.resourceGroupName
    - name: workspaceName
      in: path
      value: $inputs.workspaceName
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      quotas: $response.body#/value
      firstDimension: $response.body#/value/0/dimension
      firstUtilization: $response.body#/value/0/utilization
      firstHolds: $response.body#/value/0/holds
      firstLimit: $response.body#/value/0/limit
    onSuccess:
    - name: hasHeadroom
      type: goto
      stepId: stageStorage
      criteria:
      - context: $response.body
        condition: $.value[0].utilization + $.value[0].holds < $.value[0].limit
        type: jsonpath
    - name: quotaExhausted
      type: goto
      stepId: reportExhausted
      criteria:
      - context: $response.body
        condition: $.value[0].utilization + $.value[0].holds >= $.value[0].limit
        type: jsonpath
  - stepId: stageStorage
    description: >-
      Capacity remains, so request a container SAS URI ready for a job
      submission.
    operationId: Storage_GetSasUri
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.authToken"
    - name: api-version
      in: query
      value: $inputs.apiVersion
    - name: subscriptionId
      in: path
      value: $inputs.subscriptionId
    - name: resourceGroupName
      in: path
      value: $inputs.resourceGroupName
    - name: workspaceName
      in: path
      value: $inputs.workspaceName
    requestBody:
      contentType: application/json
      payload:
        containerName: $inputs.containerName
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      sasUri: $response.body#/sasUri
    onSuccess:
    - name: done
      type: end
  - stepId: reportExhausted
    description: >-
      No headroom remains; re-read quotas to surface the exhausted dimension and
      its provider for the caller.
    operationId: Quotas_List
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.authToken"
    - name: api-version
      in: query
      value: $inputs.apiVersion
    - name: subscriptionId
      in: path
      value: $inputs.subscriptionId
    - name: resourceGroupName
      in: path
      value: $inputs.resourceGroupName
    - name: workspaceName
      in: path
      value: $inputs.workspaceName
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      exhaustedDimension: $response.body#/value/0/dimension
      exhaustedProviderId: $response.body#/value/0/providerId
      exhaustedLimit: $response.body#/value/0/limit
  outputs:
    quotas: $steps.listQuotas.outputs.quotas
    sasUri: $steps.stageStorage.outputs.sasUri
    exhaustedDimension: $steps.reportExhausted.outputs.exhaustedDimension