Protocol Documentation

Table of Contents

controller/job.proto

Top

BinaryDataValue

Binary value, corresponding to both BIT and OCTET data types in Quil.

FieldTypeLabelDescription
data bytes

ControllerJobExecutionResult

A ControllerJobExecutionResult includes the result data from a single

execution of a ControllerJob.

FieldTypeLabelDescription
memory_values ControllerJobExecutionResult.MemoryValuesEntry repeated

The contents of each memory region, keyed on region name

readout_values ControllerJobExecutionResult.ReadoutValuesEntry repeated

The contents of readout data published by the readout transformation pipeline, keyed on the node ID of the publishing readout transformation node.

status ControllerJobExecutionResult.Status

status_message string optional

Optional message providing context to the result's status.

execution_duration_microseconds uint64

Duration (µs) job held exclusive access to control hardware.

ControllerJobExecutionResult.MemoryValuesEntry

FieldTypeLabelDescription
key string

value DataValue

ControllerJobExecutionResult.ReadoutValuesEntry

FieldTypeLabelDescription
key string

value ReadoutValues

DataValue

The value of the data to insert into memory corresponding to a MemoryRegion.

FieldTypeLabelDescription
binary BinaryDataValue

Binary value, corresponding to both BIT and OCTET data types in Quil.

integer IntegerDataValue

Signed integer value, corresponding to INTEGER in Quil.

real RealDataValue

Real number value, corresponding to REAL in Quil.

EncryptedControllerJob

An EncryptedControllerJob includes the configuration necessary to execute an instance of

the contained job data on control hardware in encrypted format.

FieldTypeLabelDescription
job bytes

Encrypted form of ControllerJob.

encryption JobEncryption

Information about the means by which `inner` was encrypted.

IntegerDataValue

Signed integer value, corresponding to INTEGER in Quil.

FieldTypeLabelDescription
data int64 repeated

JobEncryption

Information about the means by which a ControllerJob was encrypted.

FieldTypeLabelDescription
key_id string

Opaque identifier for the key to use in decryption

nonce bytes

If relevant, the nonce to use in decryption

JobExecutionConfiguration

FieldTypeLabelDescription
memory_values JobExecutionConfiguration.MemoryValuesEntry repeated

Memory values to be patched into the program by the Controller Service prior to execution. The string key is used to match the name of the memory region as defined in the InstrumentProgram. The type of the DataValue must match the defined type of the region.

JobExecutionConfiguration.MemoryValuesEntry

FieldTypeLabelDescription
key string

value DataValue

RealDataValue

Real number value, corresponding to REAL in Quil.

FieldTypeLabelDescription
data double repeated

ControllerJobExecutionResult.Status

NameNumberDescription
UNKNOWN 0

SUCCESS 1

SERVICE_FAILURE 2

Failure state caused by an error in the service.

USER_FAILURE 3

Failure state caused by user.

USER_CANCELLATION 4

Job was canceled by user before execution completed.

controller/readout.proto

Top

Complex64

Complex64 is a 64-bit complex value with float32 real and imaginary parts

FieldTypeLabelDescription
real float

imaginary float

Complex64ReadoutValues

Complex64ReadoutValues are arrays of complex numbers emitted by a readout receiver or transformation pipeline.

FieldTypeLabelDescription
values Complex64 repeated

IntegerReadoutValues

IntegerReadoutValues are integer arrays emitted by a readout receiver or transformation pipeline.

These may include (but are not limited to) qudit values or raw ADC capture data.

FieldTypeLabelDescription
values int32 repeated

ReadoutValues

ReadoutValues are data readout values that have been read out from the quantum processor

and optionally processed by a readout transformation pipeline.

FieldTypeLabelDescription
integer_values IntegerReadoutValues

complex_values Complex64ReadoutValues

controller/service.proto

Top

BatchExecuteControllerJobsRequest

A request to execute multiple ControllerJobs as if they were sent as separate requests.

Note that the job execution IDs will be returned in the same order as the requests,

but execution itself may occur out of that order depending on executor configuration.

FieldTypeLabelDescription
requests ExecuteControllerJobRequest repeated

BatchExecuteControllerJobsResponse

FieldTypeLabelDescription
responses ExecuteControllerJobResponse repeated

CancelControllerJobsRequest

Cancel all given jobs that have yet to begin executing.

This endpoint is *not* atomic, and will attempt to cancel every job even

when some jobs cannot be canceled. A job can be canceled only if it

has not yet started executing.

Success response indicates only that the request was received. Cancellation

is not guaranteed, as it is based on job state at time of cancellation, and is

completed on a best-effort basis.

FieldTypeLabelDescription
job_ids string repeated

quantum_processor_id string

endpoint_id string

CancelControllerJobsResponse

EstimatedDelay

An estimation of the delay before a specific event, such as when a queued job

is expected to be dequeued and run.

FieldTypeLabelDescription
minimum google.protobuf.Duration

The shortest possible delay before the event

ExecuteControllerJobRequest

A request to execute a given ControllerJob on a specific target with one or more configurations.

This action is *atomic* in that a job for each configuration will be queued, or none of them will.

On success, the response will contain a sequence of job IDs where the number and order of IDs returned

will correspond to the number and order of configurations given. However, note that execution in the

order of the given configurations is not guaranteed. If there is a failure to queue any of the jobs,

then none will be queued. A request must have at least one configuration, otherwise an error will be

returned.

FieldTypeLabelDescription
execution_configurations models.controller.JobExecutionConfiguration repeated

One or more configurations against which to execute the provided job. The response will include one `job_execution_id` for each entry in this list, each corresponding to its configuration in the same order.

options ExecutionOptions

encrypted models.controller.EncryptedControllerJob

quantum_processor_id string

endpoint_id string

ExecuteControllerJobResponse

FieldTypeLabelDescription
job_execution_ids string repeated

One execution ID per input JobExecutionConfiguration, in the same order as the input.

ExecutionOptions

Options specified on execution requests describing any features or processes requested before or after job execution.

FieldTypeLabelDescription
bypass_settings_protection bool

If jobs contain settings that would cause managed settings to change values, that job will be rejected unless this field is set to true and the submitter has the appropriate authorization.

timeout google.protobuf.Duration optional

The timeout while running a job; the job will be evicted from the hardware once this time has elapsed. If unset, the job's estimated duration will be used; if the job does not have an estimated duration, the default timeout is selected by the service. The service may also enforce a maximum value for this field.

GetControllerJobResultsRequest

FieldTypeLabelDescription
job_execution_id string

Which Controller Job execution to query for results

quantum_processor_id string

endpoint_id string

GetControllerJobResultsResponse

FieldTypeLabelDescription
result models.controller.ControllerJobExecutionResult

GetControllerJobStatusRequest

FieldTypeLabelDescription
job_id string

GetControllerJobStatusResponse

FieldTypeLabelDescription
status GetControllerJobStatusResponse.Status

estimated_job_completion_delay EstimatedDelay

Best-effort estimate of how long it will be (from the time the response is generated) until the job is finished executing.

GetControllerJobStatusResponse.Status

NameNumberDescription
UNKNOWN 0

QUEUED 1

RUNNING 2

SUCCEEDED 3

FAILED 4

CANCELED 5

Controller

Method NameRequest TypeResponse TypeDescription
ExecuteControllerJob ExecuteControllerJobRequest ExecuteControllerJobResponse

BatchExecuteControllerJobs BatchExecuteControllerJobsRequest BatchExecuteControllerJobsResponse

GetControllerJobResults GetControllerJobResultsRequest GetControllerJobResultsResponse

CancelControllerJobs CancelControllerJobsRequest CancelControllerJobsResponse

GetControllerJobStatus GetControllerJobStatusRequest GetControllerJobStatusResponse

translation/metadata.proto

Top

QuilTranslationMetadata

Information about the result of Quil translation that may be useful for the client,

but which is not needed for execution of the translated `ControllerJob`.

FieldTypeLabelDescription
readout_mappings QuilTranslationMetadata.ReadoutMappingsEntry repeated

Mapping of (Quil memory address as string) to (readout stream) This allows a Quil program author to write and execute `MEASURE 0 ro`, while being able to interpret the readout results for one of the post-processed readout streams as representing the result of the `MEASURE`.

QuilTranslationMetadata.ReadoutMappingsEntry

FieldTypeLabelDescription
key string

value string

translation/service.proto

Top

BackendV1Options

Options for translation backend V1

BackendV2Options

Options for translation backend V2

FieldTypeLabelDescription
prepend_default_calibrations bool optional

Whether to prepend the default calibrations for a particular QPU to the program. This may be set to false if you have prepended your own calibrations, or are submitting a pre-calibrated pulse-level program which does not need further expansion.

passive_reset_delay_seconds double optional

The number of seconds to stall at the beginning of each num-shots loop iteration in order to allow adiabatic reset.

allow_unchecked_pointer_arithmetic bool optional

Whether to disable bounds checks on dynamic memory access. Only available to authorized users.

allow_frame_redefinition bool optional

Whether to skip program frame validation against Rigetti calibrations.

store_all_readout_values bool optional

Whether to force all real-time-classified readout values to be stored in sequencer memory. If false or unset, only readout values that are read by the program are written to sequencer memory following readout.

GetQuantumProcessorQuilCalibrationProgramRequest

FieldTypeLabelDescription
quantum_processor_id string

The quantum processor for which to retrieve the calibration program.

QuantumProcessorQuilCalibrationProgram

FieldTypeLabelDescription
quil_calibration_program string

The Quil program containing the requested calibrations

TranslateQuilToEncryptedControllerJobRequest

FieldTypeLabelDescription
quantum_processor_id string

quil_program string

options TranslationOptions

Specification of optional translation features.

num_shots_value uint32

TranslateQuilToEncryptedControllerJobResponse

FieldTypeLabelDescription
job models.controller.EncryptedControllerJob

metadata models.translation.QuilTranslationMetadata

TranslationOptions

Options specified on RPCs that translate Quil to a ControllerJob. Intended to support custom pre-processing

and other translation features.

FieldTypeLabelDescription
v1 BackendV1Options

v2 BackendV2Options

Translation

Method NameRequest TypeResponse TypeDescription
TranslateQuilToEncryptedControllerJob TranslateQuilToEncryptedControllerJobRequest TranslateQuilToEncryptedControllerJobResponse

GetQuantumProcessorQuilCalibrationProgram GetQuantumProcessorQuilCalibrationProgramRequest QuantumProcessorQuilCalibrationProgram

Get the current calibration program for the given quantum processor.

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)