GitHub Copilot · Arazzo Workflow

GitHub Copilot Provision Seats for Users

Version 1.0.0

Check organization billing capacity, assign Copilot seats to selected users, and verify a seat was granted.

1 workflow 1 source API 1 provider
View Spec View on GitHub AgentsAIArtificial IntelligenceCode GenerationCode ReviewCoding AgentCustom InstructionsDeveloper ToolsExtensionsIDEMachine LearningMCPMetricsModel Context ProtocolProductivityArazzoWorkflows

Provider

github-copilot

Workflows

provision-users
Confirm billing, assign Copilot seats to users, and verify one seat.
Reads org Copilot billing to confirm seat management is active, branches to abort when seat management is disabled, adds seats for the supplied usernames, then fetches the seat detail for the verification username.
3 steps inputs: org, selectedUsernames, verifyUsername outputs: seatsCreated, totalSeats, verifiedPlanType
1
getBilling
getCopilotBillingForOrganization
Read the organization's Copilot billing information to confirm seat management is enabled before purchasing seats. Returns the seat breakdown and management setting.
2
addUsers
addUsersToCopilotSubscription
Purchase Copilot seats for the supplied organization members. Billing is applied per the organization's plan. Responds 201 with the number of new seats created.
3
verifySeat
getCopilotSeatForUser
Read the Copilot seat assignment details for one of the provisioned users to confirm the seat is active, including plan type and assignment origin.

Source API Descriptions

Arazzo Workflow Specification

github-copilot-provision-users-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: GitHub Copilot Provision Seats for Users
  summary: Check organization billing capacity, assign Copilot seats to selected users, and verify a seat was granted.
  description: >-
    A safe seat-provisioning flow for GitHub Copilot. The workflow first reads
    the organization's Copilot billing information to confirm seat management is
    enabled, then purchases seats for the supplied list of organization members,
    and finally reads back the seat assignment details for one of those users to
    confirm the seat is active. 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: githubCopilotApi
  url: ../openapi/github-copilot-openapi.yml
  type: openapi
workflows:
- workflowId: provision-users
  summary: Confirm billing, assign Copilot seats to users, and verify one seat.
  description: >-
    Reads org Copilot billing to confirm seat management is active, branches to
    abort when seat management is disabled, adds seats for the supplied
    usernames, then fetches the seat detail for the verification username.
  inputs:
    type: object
    required:
    - org
    - selectedUsernames
    - verifyUsername
    properties:
      org:
        type: string
        description: The organization name (case-insensitive).
      selectedUsernames:
        type: array
        items:
          type: string
        description: GitHub usernames (org members) to assign Copilot seats to.
      verifyUsername:
        type: string
        description: A username from the list whose seat assignment is read back.
  steps:
  - stepId: getBilling
    description: >-
      Read the organization's Copilot billing information to confirm seat
      management is enabled before purchasing seats. Returns the seat breakdown
      and management setting.
    operationId: getCopilotBillingForOrganization
    parameters:
    - name: org
      in: path
      value: $inputs.org
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      seatManagementSetting: $response.body#/seat_management_setting
      totalSeats: $response.body#/seat_breakdown/total
    onSuccess:
    - name: seatManagementEnabled
      type: goto
      stepId: addUsers
      criteria:
      - context: $response.body
        condition: $.seat_management_setting != 'disabled'
        type: jsonpath
    - name: seatManagementDisabled
      type: end
      criteria:
      - context: $response.body
        condition: $.seat_management_setting == 'disabled'
        type: jsonpath
  - stepId: addUsers
    description: >-
      Purchase Copilot seats for the supplied organization members. Billing is
      applied per the organization's plan. Responds 201 with the number of new
      seats created.
    operationId: addUsersToCopilotSubscription
    parameters:
    - name: org
      in: path
      value: $inputs.org
    requestBody:
      contentType: application/json
      payload:
        selected_usernames: $inputs.selectedUsernames
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      seatsCreated: $response.body#/seats_created
  - stepId: verifySeat
    description: >-
      Read the Copilot seat assignment details for one of the provisioned users
      to confirm the seat is active, including plan type and assignment origin.
    operationId: getCopilotSeatForUser
    parameters:
    - name: org
      in: path
      value: $inputs.org
    - name: username
      in: path
      value: $inputs.verifyUsername
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      createdAt: $response.body#/created_at
      planType: $response.body#/plan_type
      pendingCancellationDate: $response.body#/pending_cancellation_date
  outputs:
    seatsCreated: $steps.addUsers.outputs.seatsCreated
    verifiedPlanType: $steps.verifySeat.outputs.planType
    totalSeats: $steps.getBilling.outputs.totalSeats