openapi: 3.0.2
info:
x-logo: https://qcs.rigetti.com/static/img/rigetti-logo.svg
contact:
email: support@rigetti.com
url: https://rigetti.zendesk.com
title: Rigetti QCS API
version: 2020-07-31
description: >
# Introduction
This is the documentation for the Rigetti QCS HTTP API.
You can find out more about Rigetti at [https://rigetti.com](https://rigetti.com), and also
interact with QCS via the web at [https://qcs.rigetti.com](https://qcs.rigetti.com).
This API is documented in **OpenAPI format** and so is compatible with the dozens of
language-specific client generators available
[here](https://github.com/OpenAPITools/openapi-generator) and elsewhere on the web.
# Principles
This API follows REST design principles where appropriate, and otherwise an HTTP RPC paradigm.
We adhere to the Google [API Improvement Proposals](https://google.aip.dev/general) where
reasonable to provide a consistent, intuitive developer experience. HTTP response codes match
their specifications, and error messages fit a common format.
# Authentication
All access to the QCS API requires OAuth2 authentication provided by Okta. You can request
access [here](https://www.rigetti.com/get-quantum). Once you have a user account, you can download
your access token from QCS [here](https://qcs.rigetti.com/auth/token).
That access token is valid for 24 hours after issuance. The value of `access_token` within the
JSON file is the token used for authentication (don't use the entire JSON file).
Authenticate requests using the `Authorization` header and a `Bearer` prefix:
```
curl --header "Authorization: Bearer eyJraW...Iow"
```
# Quantum Processor Access
Access to the quantum processors themselves is not yet provided directly by this HTTP API, but
is instead performed over ZeroMQ/[rpcq](https://gitlab.com/rigetti/rpcq). Until that changes,
we suggest using [pyquil](https://gitlab.com/rigetti/pyquil) to build and execute quantum
programs via the Legacy API.
# Legacy API
Our legacy HTTP API remains accessible at https://forest-server.qcs.rigetti.com, and it shares
a source of truth with this API's services. You can use either service with the same user
account and means of authentication. We strongly recommend using the API documented here, as the
legacy API is on the path to deprecation.
servers:
- description: Rigetti API
url: https://api.qcs.rigetti.com
tags:
- description: Internal Rigetti administrative Access
name: internal
x-displayName: Internal
- description: Legacy routes and objects
name: legacy
x-displayName: Legacy
- description: The Quantum Processor is the heart of the Rigetti services.
name: quantumProcessors
x-displayName: Quantum Processors
- description: The Endpoint is the means of access to a Quantum Processor.
name: endpoints
x-displayName: Quantum Processor Endpoints
- description: The Engagement is the authorization mechanism for access to the
Quantum Processor.
name: engagements
x-displayName: Engagements
- description: |
Translation is the process of transforming Quil into programs ready
for execution on a Quantum Processor.
name: translation
x-displayName: Translation
- name: account
x-displayName: Account
- name: authentication
x-displayName: Authentication
- description: Check for the latest SDK versions.
name: clientApplications
x-displayName: SDK Versions
- description: Find existing time on a Rigetti QPU and reserve it.
name: reservations
x-displayName: Reservations
- name: filterParameter
description:
x-displayName: Filter Parameter
- name: orderParameter
description:
x-displayName: Order Parameter
- name: errors
description: >
All service errors conform to the below schema.
`code` conforms to the conventional HTTP status code, but offers more granularity.
| Code | HTTP Status Code | Notes |
|-------------------------------------|------------------|-------------------------------------------------------------------------------------|
| unauthorized | 401 | If your token expires, we will return a 401 and you should refresh it accordingly\. |
| forbidden | 403 | |
| not\_found | 404 | |
| insufficient\_payment | 402 | Insufficient funds are available to book the reservation\. |
| reservation\_unavailable | 409 | The requested reservation time is not available\. |
| invalid\_input | 422 | |
| invalid\_password\_reset\_token | 422 | |
| invalid\_email\_verification\_token | 422 | |
Additionally, errors returned with code `invalid_input` *may* include additional detail under the `validationErrors`
attribute. Note, not all validation errors will specify a `path`, but they will contain a message. Please heed those
messages *in addition to* the top level error message.
x-displayName: ""
x-tagGroups:
- name: Account Management
tags:
- account
- authentication
- name: QPU Access
tags:
- endpoints
- engagements
- quantumProcessors
- reservations
- translation
- name: SDKs
tags:
- clientApplications
- name: Filtering and ordering
tags:
- filterParameter
- orderParameter
- name: Errors
tags:
- errors
paths:
/:
get:
description: Retrieve the health status of the API
operationId: GetHealth
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Health"
description: Critical services are healthy.
/v1/:
get:
description: Endpoint to return a status 200 for load balancer health checks
operationId: HealthCheck
responses:
"200":
content:
application/json:
schema: {}
description: Successful Response
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
summary: Health Check
/v1/endpoints:
get:
description: List all endpoints, optionally filtering by attribute.
operationId: ListEndpoints
parameters:
- description: Filtering logic specified using
[rule-engine](https://zerosteiner.github.io/rule-engine/syntax.html)
grammar
in: query
name: filter
required: false
schema:
description: Filtering logic specified using
[rule-engine](https://zerosteiner.github.io/rule-engine/syntax.html)
grammar
title: Filter
type: string
- in: query
name: pageSize
required: false
schema:
default: 10
title: Pagesize
type: integer
- in: query
name: pageToken
required: false
schema:
title: Pagetoken
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListEndpointsResponse"
description: Successful Response
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: List Endpoints
tags:
- endpoints
post:
description: Create an endpoint associated with your user account.
operationId: CreateEndpoint
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateEndpointParameters"
required: true
responses:
"201":
content:
application/json:
schema:
$ref: "#/components/schemas/Endpoint"
description: Successful Response
"400":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Bad Request
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Not Found
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: Create Endpoint
tags:
- endpoints
"/v1/endpoints/{endpointId}":
delete:
description: Delete an endpoint, releasing its resources. This operation is not
reversible.
operationId: DeleteEndpoint
parameters:
- in: path
name: endpointId
required: true
schema:
title: Endpoint ID
type: string
responses:
"200":
content:
application/json:
schema: {}
description: Successful Response
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Forbidden
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Not Found
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: Delete Endpoint
tags:
- endpoints
get:
description: Retrieve a specific endpoint by its ID.
operationId: GetEndpoint
parameters:
- in: path
name: endpointId
required: true
schema:
title: Endpoint ID
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Endpoint"
description: Successful Response
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Not Found
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: Get Endpoint
tags:
- endpoints
"/v1/endpoints/{endpointId}:restart":
post:
description: Restart an entire endpoint or a single component within an endpoint.
operationId: RestartEndpoint
parameters:
- in: path
name: endpointId
required: true
schema:
title: Endpoint ID
type: string
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/RestartEndpointRequest"
responses:
"200":
content:
application/json:
schema: {}
description: Successful Response
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Forbidden
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: Restart Endpoint
tags:
- endpoints
/v1/engagements:
post:
description: >-
Create a new engagement using the specified parameters.
At least one of the following parameters must be supplied:
- **endpointId**: The ID of the endpoint on which to engage.
- **quantumProcessorId**: The ID of the quantum processor on which to engage, allowing the
service to select a default endpoint. Ignored if **endpointId** is set.
operationId: CreateEngagement
parameters:
- description: Either the client's user ID or the name of a group on behalf of
which the client wishes to engage. May be overriden by accountId set
in body.
in: header
name: x-qcs-account-id
required: false
schema:
description: Either the client's user ID or the name of a group on behalf of
which the client wishes to engage. May be overriden by accountId
set in body.
title: X-Qcs-Account-Id
type: string
- description: Indicates whether the engagement request should be made for the
user or on behalf of a group. May be overriden by accountType set in
body.
in: header
name: x-qcs-account-type
required: false
schema:
allOf:
- $ref: "#/components/schemas/AccountType"
description: Indicates whether the engagement request should be made for the
user or on behalf of a group. May be overriden by accountType set
in body.
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateEngagementRequest"
required: true
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/EngagementWithCredentials"
description: Successful Response
"400":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Bad Request
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Not Found
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Validation error
"503":
description: Endpoint is temporarily unavailable, try again later.
headers:
Retry-After:
description: Number of seconds to wait before retrying
schema:
type: integer
security:
- JWTBearer: []
summary: Create Engagement
tags:
- engagements
/v1/quantumProcessors:
get:
description: List all QuantumProcessors available to the user.
operationId: ListQuantumProcessors
parameters:
- in: query
name: pageSize
required: false
schema:
default: 10
title: Pagesize
type: integer
- in: query
name: pageToken
required: false
schema:
title: Pagetoken
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListQuantumProcessorsResponse"
description: Successful Response
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: List Quantum Processors
tags:
- quantumProcessors
"/v1/quantumProcessors/{quantumProcessorId}":
get:
description: Retrieve a single QuantumProcessor by ID.
operationId: GetQuantumProcessor
parameters:
- description: "Public identifier for a quantum processor [example: Aspen-1]"
in: path
name: quantumProcessorId
required: true
schema:
description: "Public identifier for a quantum processor [example: Aspen-1]"
title: Quantum Processor ID
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/QuantumProcessor"
description: Successful Response
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Not Found
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: Get Quantum Processor
tags:
- quantumProcessors
"/v1/quantumProcessors/{quantumProcessorId}/endpoints:getDefault":
get:
description: |-
Retrieve the endpoint set as "default" for the given Quantum Processor.
If no endpoint is set as the default, return "not found."
operationId: GetDefaultEndpoint
parameters:
- description: "Public identifier for a quantum processor [example: Aspen-1]"
in: path
name: quantumProcessorId
required: true
schema:
description: "Public identifier for a quantum processor [example: Aspen-1]"
title: Quantum Processor ID
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Endpoint"
description: Successful Response
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Not Found
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: Get Default Endpoint
tags:
- endpoints
"/v1/quantumProcessors/{quantumProcessorId}/instructionSetArchitecture":
get:
description: Retrieve the Instruction Set Architecture of a QuantumProcessor by ID.
operationId: GetInstructionSetArchitecture
parameters:
- in: path
name: quantumProcessorId
required: true
schema:
title: Quantum Processor ID
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/InstructionSetArchitecture"
description: Successful Response
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Not Found
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: Get Instruction Set Architecture
tags:
- quantumProcessors
/v1/auth:emailPasswordResetToken:
post:
description: Send a password reset link to the provided email address, if that
email matches a registered user.
operationId: AuthEmailPasswordResetToken
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AuthEmailPasswordResetTokenRequest"
responses:
"204":
description: Request completed successfully.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
summary: Email Password Reset Token
tags:
- authentication
/v1/auth:getUser:
get:
description: Retrieve the profile of the authenticated user.
operationId: AuthGetUser
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/User"
description: Request completed successfully.
"401":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request authentication failed.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: The authenticated user could not be located within our records.
Please contact support@rigetti.com if you reach this error.
security:
- JWTBearer: []
summary: Get User
tags:
- authentication
parameters: []
/v1/auth:resetPassword:
parameters: []
post:
description: Reset the password using the user's existing password. Note, this
is an authenticated route.
operationId: AuthResetPassword
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AuthResetPasswordRequest"
required: true
responses:
"204":
description: Password successfully reset.
"401":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request authentication failed.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
security:
- JWTBearer: []
summary: Reset Password
tags:
- authentication
/v1/auth:resetPasswordWithToken:
parameters: []
post:
description: Complete the forgot password flow, resetting the new password in
exchange for an emailed token.
operationId: AuthResetPasswordWithToken
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AuthResetPasswordWithTokenRequest"
required: true
responses:
"204":
description: Password successfully reset.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: No account exists for the requested email.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
summary: Reset Password With Token
tags:
- authentication
/v1/clientApplications:
get:
description: List supported clients of Rigetti system components along with
their latest and minimum supported versions.
operationId: ListClientApplications
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListClientApplicationsResponse"
description: Request completed successfully.
summary: List Client Applications
tags:
- clientApplications
parameters: []
"/v1/clientApplications/{clientApplicationName}":
get:
description: Get details of a specific Rigetti system component along with its
latest and minimum supported versions.
operationId: GetClientApplication
parameters:
- in: path
name: clientApplicationName
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ClientApplication"
description: Request completed successfully.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: The requested client application does not exist.
summary: Get Client Application
tags:
- clientApplications
/v1/clientApplications:check:
post:
description: Check the requested client application version against the latest
and minimum version.
operationId: CheckClientApplication
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CheckClientApplicationRequest"
required: true
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/CheckClientApplicationResponse"
description: Successfully checked Forest versions.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Requested component does not exist.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
summary: Check Client Application
tags:
- clientApplications
"/v1/groups/{groupName}/balance":
get:
description: Retrieve the balance of the requested QCS group account.
operationId: GetGroupBalance
parameters:
- description: URL encoded name of group for which to retrieve account balance.
in: path
name: groupName
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/AccountBalance"
description: Request completed successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client not authorized to complete request.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: QCS group account does not exist.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
security:
- JWTBearer: []
summary: Get Group Balance
tags:
- account
"/v1/groups/{groupName}/billingCustomer":
get:
description: Retrieve billing customer for a QCS group account.
operationId: GetGroupBillingCustomer
parameters:
- description: URL-encoded name of group.
in: path
name: groupName
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/BillingCustomer"
description: Billing customer retrieved successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client is not authorized to view account billing customer.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Group billing customer does not exist.
security:
- JWTBearer: []
tags:
- account
"/v1/groups/{groupName}/billingInvoices":
get:
description: Retrieve billing invoices for a QCS group account.
operationId: ListGroupBillingInvoices
parameters:
- description: URL-encoded name of group.
in: path
name: groupName
required: true
schema:
type: string
- $ref: "#/components/parameters/pageTokenParam"
- $ref: "#/components/parameters/pageSizeParam"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListAccountBillingInvoicesResponse"
description: Billing invoices retrieved successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client is not authorized to view group billing invoices.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Group billing customer does not exist.
security:
- JWTBearer: []
tags:
- account
"/v1/groups/{groupName}/billingInvoices/{billingInvoiceId}/lines":
get:
description: Retrieve billing invoice lines for a QCS group account's invoice.
operationId: ListGroupBillingInvoiceLines
parameters:
- description: URL-encoded name of group.
in: path
name: groupName
required: true
schema:
type: string
- description: URL-encoded billing invoice id.
in: path
name: billingInvoiceId
required: true
schema:
type: string
- $ref: "#/components/parameters/pageTokenParam"
- $ref: "#/components/parameters/pageSizeParam"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListAccountBillingInvoiceLinesResponse"
description: Billing invoice lines retrieved successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client is not authorized to view group billing invoice lines.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Group billing customer or invoice does not exist.
security:
- JWTBearer: []
tags:
- account
"/v1/groups/{groupName}/billingInvoices:getUpcoming":
get:
description: Retrieve upcoming invoice for QCS group billing customer.
operationId: GetGroupUpcomingBillingInvoice
parameters:
- description: URL-encoded name of group.
in: path
name: groupName
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/BillingUpcomingInvoice"
description: Billing invoice retrieved successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client is not authorized to view group billing invoice.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Group billing customer or invoice does not exist.
security:
- JWTBearer: []
tags:
- account
"/v1/groups/{groupName}/billingInvoices:listUpcomingLines":
get:
description: List invoice lines for QCS group billing customer upcoming invoice.
operationId: ListGroupUpcomingBillingInvoiceLines
parameters:
- description: URL-encoded name of group.
in: path
name: groupName
required: true
schema:
type: string
- $ref: "#/components/parameters/pageTokenParam"
- $ref: "#/components/parameters/pageSizeParam"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListAccountBillingInvoiceLinesResponse"
description: Billing invoice lines retrieved successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client is not authorized to view group billing invoice lines.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Group billing customer or invoice does not exist.
security:
- JWTBearer: []
tags:
- account
"/v1/groups/{groupName}/reservations":
get:
description: |
List existing reservations for the requested group.
Available filter fields include:
* `startTime` - timestamp
* `endTime` - timestamp
* `createdTime` - timestamp
* `price` - integer
* `quantumProcessorId` - string
Available order fields include:
* `startTime` - timestamp
* `endTime` - timestamp
* `createdTime` - timestamp
* `price` - integer
operationId: ListGroupReservations
parameters:
- description: URL encoded name of group for which to retrieve reservations.
in: path
name: groupName
required: true
schema:
type: string
- $ref: "#/components/parameters/filterParam"
- $ref: "#/components/parameters/orderParam"
- $ref: "#/components/parameters/pageSizeParam"
- $ref: "#/components/parameters/pageTokenParam"
- $ref: "#/components/parameters/showDeleted"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListReservationsResponse"
description: Request completed successfully.
"401":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request authentication failed.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
security:
- JWTBearer: []
summary: List Group Reservations
tags:
- reservations
"/v1/groups/{groupName}/users":
get:
description: List users belonging to a group. Note, group membership may take
several minutes to update within our identity provider. After adding or
removing a user to or from a group, please allow up to 60 minutes for
changes to be reflected.
operationId: ListGroupUsers
parameters:
- description: URL encoded name of group for which to retrieve users.
in: path
name: groupName
required: true
schema:
type: string
- $ref: "#/components/parameters/pageSizeParam"
- $ref: "#/components/parameters/pageTokenParam"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListGroupUsersResponse"
description: Group users successfully retrieved.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: The requested group does not exist.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
security:
- JWTBearer: []
summary: List users belonging to a group
tags:
- account
/v1/groups:addUser:
post:
description: Add a user to a group. Note, group membership may take several
minutes to update within our identity provider. After adding a user to a
group, please allow up to 60 minutes for changes to be reflected.
operationId: AddGroupUser
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AddGroupUserRequest"
required: true
responses:
"204":
description: User successfully added to group.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Group or user does not exist.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
security:
- JWTBearer: []
summary: Add user to a group
tags:
- account
/v1/groups:removeUser:
post:
description: Remove a user from a group. Note, group membership may take several
minutes to update within our identity provider. After removing a user
from a group, please allow up to 60 minutes for changes to be reflected.
operationId: RemoveGroupUser
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/RemoveGroupUserRequest"
required: true
responses:
"204":
description: User successfully removed from group.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Group does not exist.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed, possibly because the user does not
belong to the group.
security:
- JWTBearer: []
summary: Remove user from a group.
tags:
- account
/v1/internal/reservations:findAvailable:
parameters: []
"/v1/internal/users/{userId}/profile":
parameters:
- description: The user's QCS Okta id.
in: path
name: userId
required: true
schema:
type: string
/v1/reservations:
get:
description: >
List existing reservations for the authenticated user,
or a target user when specifying `X-QCS-ACCOUNT-ID` and `X-QCS-ACCOUNT-TYPE`
headers.
Available filter fields include:
* `startTime` - timestamp
* `endTime` - timestamp
* `createdTime` - timestamp
* `price` - integer
* `cancelled` - boolean (deprecated, use `showDeleted` parameter)
* `quantumProcessorId` - string
Available order fields include:
* `startTime` - timestamp
* `endTime` - timestamp
* `createdTime` - timestamp
* `price` - integer
operationId: ListReservations
parameters:
- $ref: "#/components/parameters/filterParam"
- $ref: "#/components/parameters/orderParam"
- $ref: "#/components/parameters/pageSizeParam"
- $ref: "#/components/parameters/pageTokenParam"
- $ref: "#/components/parameters/showDeleted"
- $ref: "#/components/parameters/accountIdHeader"
- $ref: "#/components/parameters/accountTypeHeader"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListReservationsResponse"
description: Request completed successfully.
"401":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request authentication failed.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
security:
- JWTBearer: []
summary: List Reservations
tags:
- reservations
parameters: []
post:
description: >
Create a new reservation.
The following precedence applies when specifying the reservation subject account
ID and type:
* request body `accountId` field, or if unset then `X-QCS-ACCOUNT-ID` header,
or if unset then requesting user's ID.
* request body `accountType` field, or if unset then `X-QCS-ACCOUNT-TYPE`
header, or if unset then "user" type.
operationId: CreateReservation
parameters:
- $ref: "#/components/parameters/accountIdHeader"
- $ref: "#/components/parameters/accountTypeHeader"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateReservationRequest"
required: true
responses:
"201":
content:
application/json:
schema:
$ref: "#/components/schemas/Reservation"
description: Reservation successfully created.
"401":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request authentication failed.
"402":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Insufficient payment to book reservation.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: User not authorized to make the requested reservation.
"409":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: The requested reservation is unavailable.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
security:
- JWTBearer: []
summary: Create Reservation
tags:
- reservations
"/v1/reservations/{reservationId}":
delete:
description: Cancel an existing reservation for the user.
operationId: DeleteReservation
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/Reservation"
description: Reservation successfully cancelled.
"401":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request authentication failed.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: User not authorized to delete reservation.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Requested reservation does not exist.
security:
- JWTBearer: []
summary: Delete Reservation
tags:
- reservations
parameters:
- in: path
name: reservationId
required: true
schema:
type: integer
/v1/reservations:findAvailable:
get:
description: List currently available reservations on the requested Rigetti
quantum computer.
operationId: FindAvailableReservations
parameters:
- $ref: "#/components/parameters/pageSizeParam"
- $ref: "#/components/parameters/pageTokenParam"
- in: query
name: quantumProcessorId
required: true
schema:
type: string
- in: query
name: startTimeFrom
required: true
schema:
format: date-time
type: string
- in: query
name: duration
required: true
schema:
description: Formatted as specified for golang
https://golang.org/pkg/time/#ParseDuration.
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/FindAvailableReservationsResponse"
description: Request completed successfully.
"401":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request authentication failed.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
security:
- JWTBearer: []
summary: Find Available Reservations
tags:
- reservations
parameters: []
"/v1/users/{idpId}":
parameters:
- description: The user's QCS id. May be found as `idpId` in the `AuthGetUser` API
call.
in: path
name: idpId
required: true
schema:
type: string
"/v1/users/{userId}/balance":
get:
description: Retrieve the balance of the requested QCS user account.
operationId: GetUserBalance
parameters:
- description: The user's QCS id. May be found as `idpId` in the `AuthGetUser` API
call.
in: path
name: userId
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/AccountBalance"
description: Request completed successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client not authorized to complete request.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: QCS user account does not exist.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
security:
- JWTBearer: []
summary: Get User Balance
tags:
- account
"/v1/users/{userId}/billingCustomer":
get:
description: Retrieve billing customer for a QCS user account.
operationId: GetUserBillingCustomer
parameters:
- description: The user's QCS id. May be found as `idpId` in the `AuthGetUser` API
call.
in: path
name: userId
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/BillingCustomer"
description: Billing customer retrieved successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client is not authorized to view user billing customer.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: User billing customer does not exist.
security:
- JWTBearer: []
tags:
- account
"/v1/users/{userId}/billingInvoices":
get:
description: Retrieve billing invoices for a QCS user account.
operationId: ListUserBillingInvoices
parameters:
- description: The user's QCS id. May be found as `idpId` in the `AuthGetUser` API
call.
in: path
name: userId
required: true
schema:
type: string
- $ref: "#/components/parameters/pageTokenParam"
- $ref: "#/components/parameters/pageSizeParam"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListAccountBillingInvoicesResponse"
description: Billing invoices retrieved successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client is not authorized to view user billing invoices.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: User billing customer does not exist.
security:
- JWTBearer: []
tags:
- account
"/v1/users/{userId}/billingInvoices/{billingInvoiceId}/lines":
get:
description: Retrieve billing invoice lines for a QCS user account's invoice.
operationId: ListUserBillingInvoiceLines
parameters:
- description: URL-encoded QCS id of user. May be found as `idpId` in the
`AuthGetUser` API call.
in: path
name: userId
required: true
schema:
type: string
- description: URL-encoded billing invoice id.
in: path
name: billingInvoiceId
required: true
schema:
type: string
- $ref: "#/components/parameters/pageTokenParam"
- $ref: "#/components/parameters/pageSizeParam"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListAccountBillingInvoiceLinesResponse"
description: Billing invoice lines retrieved successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client is not authorized to view user billing invoice lines.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: User billing customer or invoice does not exist.
security:
- JWTBearer: []
tags:
- account
"/v1/users/{userId}/billingInvoices:getUpcoming":
get:
description: Retrieve upcoming invoice for QCS user billing customer.
operationId: GetUserUpcomingBillingInvoice
parameters:
- description: The user's QCS id. May be found as `idpId` in the `AuthGetUser` API
call.
in: path
name: userId
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/BillingUpcomingInvoice"
description: Upcoming billing invoice retrieved successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client is not authorized to view user billing invoice.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: User billing customer or invoice does not exist.
security:
- JWTBearer: []
tags:
- account
"/v1/users/{userId}/billingInvoices:listUpcomingLines":
get:
description: List invoice lines for QCS user billing customer upcoming invoice.
operationId: ListUserUpcomingBillingInvoiceLines
parameters:
- description: The user's QCS id. May be found as `idpId` in the `AuthGetUser` API
call.
in: path
name: userId
required: true
schema:
type: string
- $ref: "#/components/parameters/pageTokenParam"
- $ref: "#/components/parameters/pageSizeParam"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListAccountBillingInvoiceLinesResponse"
description: Billing invoice lines retrieved successfully.
"403":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Client is not authorized to view user's billing invoice lines.
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Group billing customer or invoice does not exist.
security:
- JWTBearer: []
tags:
- account
"/v1/users/{userId}/groups":
get:
description: List QCS groups for the requested user
operationId: ListUserGroups
parameters:
- description: The user's QCS id. May be found as `idpId` in the `AuthGetUser` API
call.
in: path
name: userId
required: true
schema:
type: string
- $ref: "#/components/parameters/pageSizeParam"
- $ref: "#/components/parameters/pageTokenParam"
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/ListGroupsResponse"
description: Successfully retrieved groups.
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Request validation failed.
security:
- JWTBearer: []
summary: List QCS groups for the requested user
tags:
- account
"/v1/quantumProcessors/{quantumProcessorId}/quiltCalibrations":
get:
description: Retrieve the calibration data used for client-side Quilt generation.
operationId: GetQuiltCalibrations
parameters:
- description: "Public identifier for a quantum processor [example: Aspen-1]"
in: path
name: quantumProcessorId
required: true
schema:
description: "Public identifier for a quantum processor [example: Aspen-1]"
title: Quantum Processor ID
type: string
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/GetQuiltCalibrationsResponse"
description: Successful Response
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Not Found
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: Get Quilt Calibrations
tags:
- translation
"/v1/quantumProcessors/{quantumProcessorId}:translateNativeQuilToEncryptedBinary":
post:
description: >-
Compile Rigetti-native Quil code to encrypted binary form, ready for
execution on a
Rigetti Quantum Processor.
operationId: TranslateNativeQuilToEncryptedBinary
parameters:
- description: "Public identifier for a quantum processor [example: Aspen-1]"
in: path
name: quantumProcessorId
required: true
schema:
description: "Public identifier for a quantum processor [example: Aspen-1]"
title: Quantum Processor ID
type: string
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TranslateNativeQuilToEncryptedBinaryRequest"
required: true
responses:
"200":
content:
application/json:
schema:
$ref: "#/components/schemas/TranslateNativeQuilToEncryptedBinaryResponse"
description: Successful Response
"400":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Translation Failure
"404":
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Not Found
"422":
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
description: Unprocessable Entity
security:
- JWTBearer: []
summary: Translate Native Quil To Encrypted Binary
tags:
- translation
components:
schemas:
Error:
properties:
code:
title: Code
type: string
message:
title: Message
type: string
requestId:
title: Request ID
type: string
validationErrors:
items:
$ref: "#/components/schemas/ValidationError"
title: Validation Errors
type: array
required:
- code
- message
- requestId
title: Error
type: object
ValidationError:
properties:
in:
enum:
- header
- query
- path
- body
type: string
message:
title: Message
type: string
path:
items:
type: string
title: Path
type: array
required:
- in
- message
title: ValidationError
type: object
Health:
type: object
required:
- status
properties:
status:
type: string
example: PASS
AccountType:
description: >-
There are two types of accounts within QCS: user (representing a single
user in Okta) and group
(representing one or more users in Okta).
enum:
- group
- user
title: AccountType
type: string
Architecture:
additionalProperties: false
description: >-
Represents the logical underlying architecture of a quantum processor.
The architecture is defined in detail by the nodes and edges that constitute the quantum
processor. This defines the set of all nodes that could be operated upon, and indicates to
some approximation their physical layout. The main purpose of this is to support geometry
calculations that are independent of the available operations, and rendering ISA-based
information. Architecture layouts are defined by the `family`, as follows.
The "Aspen" family of quantum processor indicates a 2D planar grid layout of octagon unit
cells. The `node_id` in this architecture is computed as :math:`100 p_y + 10 p_x + p_u` where
:math:`p_y` is the zero-based Y position in the unit cell grid, :math:`p_x` is the zero-based
X position in the unit cell grid, and :math:`p_u` is the zero-based position in the octagon
unit cell and always ranges from 0 to 7. This scheme has a natural size limit of a 10x10
unit cell grid, which permits the architecture to scale up to 800 nodes.
Note that the operations that are actually available are defined entirely by `Operation`
instances. The presence of a node or edge in the `Architecture` model provides no guarantee
that any 1Q or 2Q operation will be available to users writing QUIL programs.
properties:
edges:
description: A list of all computational edges in the instruction set
architecture.
items:
$ref: "#/components/schemas/Edge"
title: Edges
type: array
family:
allOf:
- $ref: "#/components/schemas/Family"
description: The architecture family. The nodes and edges conform to this family.
nodes:
description: A list of all computational nodes in the instruction set
architecture.
items:
$ref: "#/components/schemas/Node"
title: Nodes
type: array
required:
- family
- nodes
- edges
title: Architecture
type: object
Characteristic:
additionalProperties: false
description: A measured characteristic of an operation.
properties:
error:
description: The error in the characteristic value, or None otherwise.
title: Error
type: number
name:
description: The name of the characteristic.
pattern: ^[A-Za-z_][A-Za-z0-9_]*$
title: Name
type: string
node_ids:
description: The list of architecture node ids for the site where the
characteristic is measured, if that is different from the site of
the enclosing operation. None if it is the same. The order of this
or the enclosing node ids obey the definition of node symmetry from
the enclosing operation.
items:
minimum: 0
type: integer
title: Node Ids
type: array
parameter_values:
description: The optional ordered list of parameter values used to generate the
characteristic. The order matches the parameters in the enclosing
operation, and so the lengths of these two lists must match.
items:
type: number
title: Parameter Values
type: array
timestamp:
description: The date and time at which the characteristic was measured.
format: date-time
title: Timestamp
type: string
value:
description: The characteristic value measured.
title: Value
type: number
required:
- name
- value
- timestamp
title: Characteristic
type: object
CreateEndpointParameters:
description: A publicly available set of parameters for defining an endpoint.
properties:
datacenters:
description: Which datacenters are available for endpoint placement. Defaults to
berkeley-775
items:
$ref: "#/components/schemas/NomadJobDatacenters"
title: Datacenters
type: array
quantumProcessorIds:
description: Public identifiers for quantum processors served by this endpoint.
items:
type: string
title: Quantum Processor IDs
type: array
title: CreateEndpointParameters
type: object
CreateEngagementRequest:
properties:
accountId:
description: Either the client's user ID or the name of a group on behalf of
which the client wishes to engage. This value will override any
values set in the headers.
title: Account Id
type: string
accountType:
allOf:
- $ref: "#/components/schemas/AccountType"
description: Indicates whether the engagement request should be made for the
user or on behalf of a group. This value will override any values
set in the headers.
title: Account Type
endpointId:
description: Unique, opaque identifier for the endpoint
title: Endpoint ID
type: string
quantumProcessorId:
description: "Public identifier for a quantum processor [example: Aspen-1]"
title: Quantum Processor ID
type: string
tags:
description: Tags recorded on QPU requests, which reporting services may later
use for querying usage records.
items:
type: string
title: Tags
type: array
title: CreateEngagementRequest
type: object
Edge:
additionalProperties: false
description: >-
A degree-two logical connection in the quantum processor's architecture.
The existence of an edge in the ISA `Architecture` does not necessarily mean that a given 2Q
operation will be available on the edge. This information is conveyed by the presence of the
two `node_id` values in instances of `Instruction`.
Note that edges are undirected in this model. Thus edge :math:`(a, b)` is equivalent to edge
:math:`(b, a)`.
properties:
node_ids:
description: The integer ids of the computational nodes at the two ends of the
edge. Order is not important; an architecture edge is treated as
undirected.
items:
minimum: 0
type: integer
maxItems: 2
minItems: 2
title: Node Ids
type: array
required:
- node_ids
title: Edge
type: object
Endpoint:
description: An Endpoint is the entry point for remote access to a QuantumProcessor.
properties:
address:
description: Network address at which the endpoint is locally reachable
title: Address
type: string
addresses:
allOf:
- $ref: "#/components/schemas/EndpointAddresses"
description: Addresses at which this endpoint is reachable over the network
title: Endpoint Addresses
datacenter:
description: Datacenter within which the endpoint is deployed
title: Datacenter
type: string
healthy:
description: Whether the endpoint is operating as intended
title: Healthy
type: boolean
id:
description: Unique, opaque identifier for the endpoint
title: Endpoint ID
type: string
mock:
description: Whether the endpoint serves simulated or substituted data for
testing purposes
title: Mock
type: boolean
quantumProcessorIds:
description: Public identifiers for quantum processors served by this endpoint.
items:
type: string
title: Quantum Processor IDs
type: array
required:
- id
- address
- addresses
- healthy
- mock
title: Endpoint
type: object
EndpointAddresses:
description: Addresses at which an endpoint is reachable over the network.
properties:
grpc:
title: Grpc
type: string
rpcq:
title: Rpcq
type: string
title: EndpointAddresses
type: object
EngagementCredentials:
description: >-
Credentials are the ZeroMQ CURVE Keys used to encrypt the connection
with the Quantum Processor
Endpoint.
properties:
clientPublic:
title: Client Public Key
type: string
clientSecret:
title: Client Secret Key
type: string
serverPublic:
title: Server Public Key
type: string
required:
- clientPublic
- clientSecret
- serverPublic
title: EngagementCredentials
type: object
EngagementWithCredentials:
description: An engagement is the authorization of a user to execute work on a
Quantum Processor Endpoint.
properties:
accountId:
description: User ID or group name on behalf of which the engagement is made.
title: Account Id
type: string
accountType:
allOf:
- $ref: "#/components/schemas/AccountType"
description: Indicates whether the grant was made on behalf of a single user or
group.
title: Account Type
address:
description: The network address of the endpoint to which this engagement grants
access
title: Address
type: string
credentials:
$ref: "#/components/schemas/EngagementCredentials"
endpointId:
description: The ID of the endpoint to which this engagement grants access
title: Endpoint ID
type: string
expiresAt:
description: Time after which the engagement is no longer valid. Given in
RFC3339 format.
title: Expiration Time
type: string
minimumPriority:
description: The minimum priority value allowed for execution
title: Minimum Priority
type: integer
quantumProcessorIds:
default: []
description: The quantum processors for which this engagement enables access and
execution
items:
type: string
title: Quantum Processor IDs
type: array
tags:
description: Tags recorded on QPU requests and recorded on usage records.
items:
type: string
title: Tags
type: array
userId:
title: User ID of client
type: string
required:
- address
- endpointId
- expiresAt
- userId
- credentials
title: EngagementWithCredentials
type: object
Family:
description: >-
Family identifier.
Value 'None' implies the architecture has no specific layout topology. Value 'Full' implies
every node is connected to every other node (a fully-connected architecture). Value 'Aspen'
implies the architecture adheres the to the Aspen topology conventions for node numbering
and edge connectivity.
enum:
- None
- Full
- Aspen
title: Family
type: string
InstructionSetArchitecture:
additionalProperties: false
description: >-
The native instruction set architecture of a quantum processor,
annotated with characteristics.
The operations described by the `instructions` field are named by their QUIL instruction name,
while the operation described by the `benchmarks` field are named by their benchmark routine
and are a future extension point that will be populated in future iterations.
The characteristics that annotate both instructions and benchmarks assist the user to generate
the best native QUIL program for a desired task, and so are provided as part of the native ISA.
properties:
architecture:
allOf:
- $ref: "#/components/schemas/Architecture"
description: The architecture of the quantum processor.
title: Architecture
benchmarks:
description: The list of benchmarks that have characterized the quantum processor.
items:
$ref: "#/components/schemas/Operation"
title: Benchmarks
type: array
instructions:
description: The list of native QUIL instructions supported by the quantum
processor.
items:
$ref: "#/components/schemas/Operation"
title: Instructions
type: array
name:
description: The name of the quantum processor.
minLength: 1
title: Name
type: string
required:
- name
- architecture
- instructions
- benchmarks
title: InstructionSetArchitecture
type: object
ListEndpointsResponse:
properties:
endpoints:
items:
$ref: "#/components/schemas/Endpoint"
title: Endpoints
type: array
nextPageToken:
description: Opaque token indicating the start of the next page of results to
return; do not decode
title: Next Page Token
type: string
required:
- endpoints
title: ListEndpointsResponse
type: object
ListQuantumProcessorsResponse:
properties:
nextPageToken:
description: Opaque token indicating the start of the next page of results to
return; do not decode
title: Next Page Token
type: string
quantumProcessors:
items:
$ref: "#/components/schemas/QuantumProcessor"
title: Quantum Processors
type: array
required:
- quantumProcessors
title: ListQuantumProcessorsResponse
type: object
Node:
additionalProperties: false
description: >-
A logical node in the quantum processor's architecture.
The existence of a node in the ISA `Architecture` does not necessarily mean that a given 1Q
operation will be available on the node. This information is conveyed by the presence of the
specific `node_id` in instances of `Instruction`.
properties:
node_id:
description: An integer id assigned to the computational node. The ids may not
be contiguous and will be assigned based on the architecture family.
minimum: 0
title: Node Id
type: integer
required:
- node_id
title: Node
type: object
NomadJobDatacenters:
description: An enumeration.
enum:
- berkeley-775
- fremont-fab
- oxford-instruments
title: NomadJobDatacenters
type: string
Operation:
additionalProperties: false
description: An operation, with its sites and site-independent characteristics.
properties:
characteristics:
description: The list of site-independent characteristics of this operation.
items:
$ref: "#/components/schemas/Characteristic"
title: Characteristics
type: array
name:
description: The name of the operation.
pattern: ^[A-Za-z_][A-Za-z0-9_]*$
title: Name
type: string
node_count:
description: The number of nodes that this operation applies to. None if
unspecified.
exclusiveMinimum: 0
title: Node Count
type: integer
parameters:
description: The list of parameters. Each parameter must be uniquely named. May
be empty.
items:
$ref: "#/components/schemas/Parameter"
title: Parameters
type: array
sites:
description: The list of sites at which this operation can be applied, together
with its site-dependent characteristics.
items:
$ref: "#/components/schemas/OperationSite"
title: Sites
type: array
required:
- name
- parameters
- sites
- characteristics
title: Operation
type: object
OperationSite:
additionalProperties: false
description: A site for an operation, with its site-dependent characteristics.
properties:
characteristics:
description: The list of site-dependent characteristics of this operation.
items:
$ref: "#/components/schemas/Characteristic"
title: Characteristics
type: array
node_ids:
description: The list of architecture node ids for the site. The order of these
node ids obey the definition of node symmetry from the enclosing
operation.
items:
minimum: 0
type: integer
title: Node Ids
type: array
required:
- node_ids
- characteristics
title: OperationSite
type: object
Parameter:
additionalProperties: false
description: A parameter to an operation.
properties:
name:
description: The name of the parameter, such as the name of a mathematical symbol.
pattern: ^[A-Za-z_][A-Za-z0-9_]*$
title: Name
type: string
required:
- name
title: Parameter
type: object
QuantumProcessor:
properties:
id:
description: "Immutable, unique identifier for a quantum processor [example:
Aspen-1]"
title: ID
type: string
required:
- id
title: QuantumProcessor
type: object
RestartEndpointRequest:
properties:
componentName:
description: Individual component to restart
title: Component Name
type: string
title: RestartEndpointRequest
type: object
AccountBalance:
description: Balance of QCS account in billing system. Note, a negative balance
signifies that the account has QCS credits to spend. A positive account
balance signifies that the account has no additional QCS credits to
spend. The QCS UI may display these quantities in absolute or negative
value and provide a clear meaning to the significance.
properties:
balance:
description: The balance in cents USD.
type: integer
required:
- balance
type: object
AccountId:
description: userId for `accountType` "user", group name for `accountType` "group".
type: string
AddGroupUserRequest:
description: Must provide either `userId` or `userEmail` and `groupId` or `groupName`.
properties:
groupId:
type: string
groupName:
type: string
userEmail:
type: string
userId:
type: string
type: object
AuthEmailPasswordResetTokenRequest:
properties:
email:
type: string
required:
- email
type: object
AuthResetPasswordRequest:
properties:
newPassword:
type: string
oldPassword:
type: string
required:
- oldPassword
- newPassword
type: object
AuthResetPasswordWithTokenRequest:
description: Token may be requested with AuthEmailPasswordResetToken.
properties:
newPassword:
type: string
token:
type: string
required:
- token
- newPassword
type: object
AvailableReservation:
properties:
duration:
type: string
endTime:
format: date-time
type: string
price:
type: integer
quantumProcessorId:
type: string
startTime:
format: date-time
type: string
required:
- quantumProcessorId
- startTime
- endTime
- duration
- price
type: object
BillingCustomer:
description: A representation of a QCS's account billing customer. Note,
`balance` does not account for the upcoming invoice.
properties:
email:
type: string
id:
type: string
required:
- id
- email
title: Billing Customer
type: object
BillingInvoice:
allOf:
- $ref: "#/components/schemas/BillingUpcomingInvoice"
- description: A finalized invoice for the current invoice period.
properties:
id:
type: string
required:
- id
- periodEnd
- periodStart
- startingBalance
- status
- subtotal
- tax
- total
type: object
description: A finalized billing invoice.
type: object
BillingInvoiceLine:
description: A line item on an invoice representing a particular purchase (such
as a reservation) or aggregate usage for the invoice period.
properties:
amount:
type: integer
description:
type: string
id:
type: string
invoiceItem:
type: string
lineItemType:
enum:
- invoiceitem
- subscription
type: string
metadata:
additionalProperties:
type: string
type: object
price:
$ref: "#/components/schemas/BillingPrice"
quantity:
type: integer
subscription:
type: string
subscriptionItem:
type: string
required:
- id
- description
- amount
- quantity
- lineItemType
- metadata
type: object
BillingInvoiceStatus:
enum:
- draft
- open
- paid
- uncollectible
- void
type: string
BillingPrice:
description: The price schedule for a particular service applied to an invoice
line item.
properties:
billingScheme:
$ref: "#/components/schemas/BillingPriceScheme"
id:
description: Unique identifier for the object.
maxLength: 5000
type: string
active:
description: Whether the price can be used for new purchases.
type: boolean
object:
description: String representing the object's type. Objects of the same type
share the same value.
enum:
- price
type: string
priceType:
description: One of `one_time` or `recurring` depending on whether the price is
for a one-time purchase or a recurring (subscription) purchase.
enum:
- one_time
- recurring
type: string
product:
$ref: "#/components/schemas/BillingProduct"
recurring:
$ref: "#/components/schemas/BillingPriceRecurrence"
tiers:
description: Each element represents a pricing tier. This parameter requires
`billingScheme` to be set to `tiered`. See also the documentation
for `billingScheme`.
items:
$ref: "#/components/schemas/BillingPriceTier"
type: array
tiersMode:
$ref: "#/components/schemas/BillingPriceTiersMode"
unitAmountDecimal:
description: The unit amount in `currency` to be charged. Only set if
`billingScheme=per_unit`.
type: number
format: double
required:
- id
title: Billing Price
type: object
BillingPriceRecurrence:
description: The recurring components of a price such as `interval` and `usageType`.
properties:
aggregateUsage:
enum:
- last_during_period
- last_ever
- max
- sum
type: string
interval:
enum:
- day
- month
- week
- year
type: string
intervalCount:
type: integer
format: int64
usageType:
enum:
- licensed
- metered
type: string
required:
- interval
title: Billing Price Recurrence
type: object
BillingPriceScheme:
description: Describes how to compute the price per period. Either `per_unit` or
`tiered`. `per_unit` indicates that the fixed amount (specified in
`unitAmount` or `unitAmountDecimal`) will be charged per unit in
`quantity` (for prices with `usageType=licensed`), or per unit of total
usage (for prices with `usageType=metered`). `tiered` indicates that the
unit pricing will be computed using a tiering strategy as defined using
the `tiers` and `tiersMode` attributes.
enum:
- per_unit
- tiered
type: string
BillingPriceTier:
properties:
flatAmount:
type: integer
format: int64
flatAmountDecimal:
type: number
format: double
unitAmount:
type: integer
format: int64
unitAmountDecimal:
type: number
format: double
upTo:
description: A value of `-1` will imply that this tier is up to Infinity.
type: integer
format: int64
required:
- upTo
title: tier
type: object
BillingPriceTiersMode:
description: Defines if the tiering price should be `graduated` or `volume`
based. In `volume`-based tiering, the maximum quantity within a period
determines the per unit price, in `graduated` tiering pricing can
successively change as the quantity grows.
enum:
- graduated
- volume
type: string
BillingProduct:
description: A QCS service product. This may represent one time (such as
reservations) or metered services.
properties:
description:
maxLength: 5000
type: string
id:
description: Unique identifier for the object.
maxLength: 5000
type: string
name:
description: This name will show up on associated invoice line item descriptions.
maxLength: 5000
type: string
object:
description: String representing the object's type. Objects of the same type
share the same value.
enum:
- product
type: string
unitLabel:
description: A label that represents units of this product. When set, this will
be included in associated invoice line item descriptions.
maxLength: 5000
type: string
required:
- id
- name
- object
title: Billing Product
type: object
BillingUpcomingInvoice:
description: An unfinalized billing invoice.
properties:
periodEnd:
format: date-time
type: string
periodStart:
format: date-time
type: string
startingBalance:
type: integer
status:
$ref: "#/components/schemas/BillingInvoiceStatus"
subtotal:
type: integer
tax:
type: integer
total:
type: integer
required:
- periodEnd
- periodStart
- startingBalance
- status
- subtotal
- tax
- total
type: object
CheckClientApplicationRequest:
properties:
name:
description: Name of component
type: string
version:
description: Semantic version of component.
type: string
required:
- name
- version
type: object
CheckClientApplicationResponse:
properties:
isLatestVersion:
type: boolean
isUpdateRequired:
description: Set to true if component is not at latest version.
type: boolean
message:
type: string
required:
- isLatestVersion
- isUpdateRequired
- message
type: object
ChecksumDescription:
properties:
headerName:
type: string
type:
enum:
- md5
type: string
required:
- headerName
- type
type: object
ClientApplication:
properties:
detailsUri:
type: string
latestVersion:
description: Semantic version
type: string
links:
items:
$ref: "#/components/schemas/ClientApplicationsDownloadLink"
type: array
minimumVersion:
description: Semantic version
type: string
name:
type: string
supported:
type: boolean
required:
- latestVersion
- name
- supported
type: object
ClientApplicationsDownloadLink:
properties:
checksumDescription:
$ref: "#/components/schemas/ChecksumDescription"
platform:
type: string
url:
type: string
required:
- url
type: object
CreateReservationRequest:
properties:
accountId:
$ref: "#/components/schemas/AccountId"
accountType:
$ref: "#/components/schemas/AccountType"
endTime:
format: date-time
type: string
notes:
type: string
quantumProcessorId:
type: string
startTime:
format: date-time
type: string
required:
- quantumProcessorId
- startTime
- endTime
type: object
Filter:
description: >
A string conforming to a *limited* set of the filtering operations
described in [Google AIP 160](https://google.aip.dev/160).
* Expressions are always of the form `{field} {operator} {value}` and may be grouped with `()` and joined with `AND` or `OR`.
* Fields are specific to the route in question, but are typically a subset of attributes of the requested resource.
* Operators are limited to `=`, `>`, `>=`, `<`, `<=`, and `!=`.
* Values may take the following forms:
* `true` or `false` for boolean fields
* a number
* a string (include surrounding `"`s),
* a duration string (include surrounding `"`s). Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
* a date string (include surrounding `"`s). Should be formatted [RFC3339 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).
For example, `startTime >= "2020-06-24T22:00:00.000Z" OR (duration >= "15m" AND endTime < "2020-06-24T22:00:00.000Z")`.
type: string
FindAvailableReservationsResponse:
properties:
availableReservations:
items:
$ref: "#/components/schemas/AvailableReservation"
type: array
nextPageToken:
type: string
required:
- availableReservations
type: object
Group:
properties:
createdTime:
format: date-time
type: string
description:
type: string
id:
type: string
lastMembershipUpdatedTime:
format: date-time
type: string
name:
type: string
updatedTime:
format: date-time
type: string
required:
- id
- name
- description
- createdTime
- updatedTime
- lastMembershipUpdatedTime
type: object
InviteUserRequest:
properties:
email:
type: string
groupName:
type: string
required:
- email
type: object
ListAccountBillingInvoiceLinesResponse:
properties:
billingInvoiceLines:
items:
$ref: "#/components/schemas/BillingInvoiceLine"
type: array
nextPageToken:
type: string
required:
- billingInvoiceLines
type: object
ListAccountBillingInvoicesResponse:
properties:
billingInvoices:
items:
$ref: "#/components/schemas/BillingInvoice"
type: array
nextPageToken:
type: string
required:
- billingInvoices
type: object
ListClientApplicationsResponse:
properties:
clientApplications:
items:
$ref: "#/components/schemas/ClientApplication"
type: array
required:
- clientApplications
type: object
ListGroupUsersResponse:
properties:
nextPageToken:
type: string
users:
items:
$ref: "#/components/schemas/User"
type: array
required:
- users
type: object
ListGroupsResponse:
properties:
groups:
items:
$ref: "#/components/schemas/Group"
type: array
nextPageToken:
type: string
required:
- groups
type: object
ListReservationsResponse:
properties:
nextPageToken:
type: string
reservations:
items:
$ref: "#/components/schemas/Reservation"
type: array
required:
- reservations
- nextPageToken
type: object
Order:
description: >
A string conforming to order specification described in [Google
AIP 132](https://google.aip.dev/132#ordering).
* Fields are specific to the route in question, but are typically a subset
of attributes of the requested resource.
* May include a comma separated list of many fields.
* Fields are sorted in *ascending* order unless the field is followed by `DESC`.
For example, `quantumProcessorId, startTime DESC`.
type: string
RemoveGroupUserRequest:
description: Must provide either `userId` or `userEmail` and `groupId` or `groupName`.
properties:
groupId:
type: string
groupName:
type: string
userEmail:
type: string
userId:
type: string
type: object
Reservation:
properties:
accountId:
$ref: "#/components/schemas/AccountId"
accountType:
$ref: "#/components/schemas/AccountType"
cancellationBillingInvoiceItemId:
type: string
cancelled:
type: boolean
createdTime:
format: date-time
type: string
creationBillingInvoiceItemId:
type: string
endTime:
format: date-time
type: string
id:
type: integer
notes:
type: string
price:
type: integer
quantumProcessorId:
type: string
startTime:
format: date-time
type: string
updatedTime:
format: date-time
type: string
userId:
deprecated: true
description: Deprecated in favor of `accountId`.
type: string
required:
- accountId
- accountType
- id
- userId
- quantumProcessorId
- startTime
- endTime
- createdTime
- price
type: object
User:
properties:
createdTime:
format: date-time
type: string
id:
type: integer
idpId:
type: string
profile:
$ref: "#/components/schemas/UserProfile"
required:
- id
- idpId
- createdTime
type: object
UserCredentials:
properties:
password:
properties:
value:
type: string
required:
- value
type: object
required:
- password
type: object
UserProfile:
properties:
email:
type: string
firstName:
type: string
lastName:
type: string
organization:
type: string
required:
- email
- firstName
- lastName
- organization
type: object
GetQuiltCalibrationsResponse:
properties:
quilt:
description: Calibrations suitable for use in a Quil-T program
title: Quil-T
type: string
settingsTimestamp:
description: ISO8601 timestamp of the settings used to generate these calibrations
title: Settings Timestamp
type: string
required:
- quilt
title: GetQuiltCalibrationsResponse
type: object
ParameterSpec:
properties:
length:
default: 1
title: Length
type: integer
title: ParameterSpec
type: object
TranslateNativeQuilToEncryptedBinaryRequest:
properties:
numShots:
description: Number of iterations to execute on the control hardware
title: Number of Shots
type: integer
quil:
description: The native Quil program to be translated for execution
title: Quil
type: string
settingsTimestamp:
description: ISO8601 timestamp of the latest settings to be used in translation.
If omitted, latest settings will be used.
title: Settings Timestamp
type: string
required:
- quil
- numShots
title: TranslateNativeQuilToEncryptedBinaryRequest
type: object
TranslateNativeQuilToEncryptedBinaryResponse:
properties:
memoryDescriptors:
additionalProperties:
$ref: "#/components/schemas/ParameterSpec"
default: {}
title: Memory Descriptors
type: object
program:
description: Encrypted binary built for execution on the target quantum processor
title: Binary Program
type: string
roSources:
default: []
items:
items:
type: string
type: array
title: Readout Sources
type: array
settingsTimestamp:
description: ISO8601 timestamp of the settings used to translate the program.
Translation is deterministic; a program translated twice with the
same settings by the same version of the service will have identical
output.
title: Settings Timestamp
type: string
required:
- program
title: TranslateNativeQuilToEncryptedBinaryResponse
type: object
securitySchemes:
JWTBearer:
scheme: bearer
type: http
JWTBearerOptional:
bearerFormat: JWT
description: Same as `JWTBearer`, but the Authorization header is optionally
parsed. Clients will receive a 401 response if an invalid or expired
token is provided. Otherwise, the server authorizes the request against
either the valid token claims or an unauthenticated user. In either
case, the client may receive a 403 response.
scheme: bearer
type: http
parameters:
accountIdHeader:
description: >
Used to specify a subject account ID for a request.
Does not take precedence over a corresponding request body field when one
is present.
in: header
name: X-QCS-ACCOUNT-ID
schema:
$ref: "#/components/schemas/AccountId"
accountTypeHeader:
description: >
Used to specify the subject account's type for a request
in conjunction with the X-QCS-ACCOUNT-ID header.
Does not take precedence over a corresponding request body field when one
is present.
in: header
name: X-QCS-ACCOUNT-TYPE
schema:
$ref: "#/components/schemas/AccountType"
filterParam:
in: query
name: filter
schema:
$ref: "#/components/schemas/Filter"
orderParam:
in: query
name: order
required: false
schema:
$ref: "#/components/schemas/Order"
pageSizeParam:
in: query
name: pageSize
required: false
schema:
type: integer
pageTokenParam:
description: An opaque token that can be appended to a request query to retrieve
the next page of results. Empty if there are no more results to
retrieve.
in: query
name: pageToken
required: false
schema:
type: string
showDeleted:
description: If you wish to include deleted (or cancelled) resources in your
response, include `showDeleted=true`.
in: query
name: showDeleted
required: false
schema:
default: "false"
enum:
- "true"
- "false"
type: string