{"openapi":"3.1.0","info":{"title":"Hub Quantum Workload API","contact":{"name":"Kipu Quantum GmbH","url":"https://kipu-quantum.com","email":"support-hub@kipu-quantum.com"},"version":"1.0"},"servers":[{"url":"https://api.hub.kipu-quantum.com/quantum"}],"security":[{"oauth2":[],"apiKey":[]}],"tags":[{"name":"Runtime Minutes","description":"Prepaid runtime-minutes allowances (IBM) for the calling tenant."},{"name":"Workloads","description":"Endpoints to retrieve quantum workloads (jobs and sessions)."},{"name":"Sessions","description":"Endpoints to manage quantum sessions."},{"name":"Jobs","description":"Endpoints to manage quantum jobs."},{"name":"Backends","description":"Endpoints to retrieve information about quantum backends."}],"paths":{"/sessions":{"post":{"tags":["Sessions"],"summary":"Create a session","description":"Create a new quantum session that groups related quantum jobs on a shared backend. Sessions reserve backend resources so subsequent jobs in the session run with reduced queue latency. Prefer a session when submitting multiple related jobs to the same backend; otherwise submit standalone jobs via createJob. The session remains open until explicitly closed (closeSession) or its ttl expires. Returns 422 if the selected backend does not support sessions.","operationId":"createSession","parameters":[{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSessionRequest"}}},"required":true},"responses":{"201":{"description":"The created session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Session"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"422":{"description":"Backend does not support sessions"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/jobs":{"get":{"tags":["Jobs"],"summary":"List jobs","description":"Get quantum jobs with pagination.","operationId":"searchJobs","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"string","default":"##default"}},{"name":"serviceExecutionId","in":"query","required":false,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The page of quantum jobs matching the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageResponseJob"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]},"post":{"tags":["Jobs"],"summary":"Submit a quantum job","description":"Submit a new quantum job for asynchronous execution on a quantum backend. A job can run standalone or, when sessionId is provided, within an open session to share a priority slot on the backend. Execution is asynchronous: the returned job starts non-terminal — poll getJobStatus until it reaches a terminal state (COMPLETED, FAILED, CANCELLED, ABORTED), then retrieve measurement results via getJobResult.","operationId":"createJob","parameters":[{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateJobRequest"}}},"required":true},"responses":{"201":{"description":"The created job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/sessions/{id}":{"get":{"tags":["Sessions"],"summary":"Get session","description":"Get a quantum session's details.","operationId":"getSession","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The session details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Session"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Session not found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]},"delete":{"tags":["Sessions"],"summary":"Close session","description":"Close a quantum session and release its reserved backend resources. Jobs already submitted to the session are left to complete; no new jobs can be submitted once the session is closed. Idempotent: closing an already-closed session has no effect. To stop accepting new jobs without aborting the session, call updateSessionState with accept_jobs=false instead (DRAINING).","operationId":"closeSession","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"204":{"description":"The session has been successfully closed."},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Session not found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]},"patch":{"tags":["Sessions"],"summary":"Update session state","description":"Update a quantum session's state to control job acceptance.","operationId":"updateSessionState","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionStateUpdateRequest"}}},"required":true},"responses":{"200":{"description":"The session state has been successfully updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Session"}}}},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Session not found"},"422":{"description":"Backend does not support session state updates"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/sessions/{sessionId}":{"get":{"tags":["Jobs"],"summary":"Get service-execution session","description":"Get the details of a quantum session running within a service execution.","operationId":"getServiceExecutionSession","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The session details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Session"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]},"delete":{"tags":["Jobs"],"summary":"Close service-execution session","description":"Close a quantum session running within a service execution.","operationId":"closeServiceExecutionSession","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"204":{"description":"The session has been successfully closed."},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]},"patch":{"tags":["Jobs"],"summary":"Update service-execution session state","description":"Update the state of a quantum session running within a service execution (accept or reject jobs).","operationId":"updateServiceExecutionSessionState","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionStateUpdateRequest"}}},"required":true},"responses":{"200":{"description":"The updated session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Session"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/workloads":{"get":{"tags":["Workloads"],"summary":"List workloads","description":"Get every quantum workload the caller's account is responsible for: workloads it created directly, plus workloads executed inside a service execution of one of the caller's own services (regardless of who triggered the execution). Pass origin=STANDALONE to get only the workloads the caller created directly. Filter params are ANDed across params and ORed within a repeated param.","operationId":"getWorkloads","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"string","default":"##default"}},{"name":"type","in":"query","description":"Filter by workload kind: JOB or SESSION (case-insensitive). Repeatable; matches any of the given values.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"status","in":"query","description":"Filter by workload status (case-insensitive), validated against the union of JobStatus and SessionStatus values. Repeatable; matches any of the given values.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"provider","in":"query","description":"Filter by quantum cloud provider (case-insensitive). Repeatable; matches any of the given values.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"backendId","in":"query","description":"Filter by backend ID. Repeatable; matches any of the given values.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"tag","in":"query","description":"Filter by tag (case-insensitive). Repeatable; matches workloads carrying any of the given tags.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"origin","in":"query","description":"Filter by workload origin: STANDALONE (leaf context is the caller) or SERVICE_EXECUTION (workload was executed inside one of the caller's service executions). Repeatable; matches any of the given values.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"serviceExecutionId","in":"query","description":"Filter by the ID of the service execution the workload ran in. Repeatable; matches any of the given values.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The page of quantum workloads matching the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageResponseWorkloadResponse"}}}},"400":{"description":"Invalid type, status, provider, origin, or serviceExecutionId filter value."},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/sessions/{id}/status":{"get":{"tags":["Sessions"],"summary":"Get session status","description":"Get a quantum session's status.","operationId":"getSessionStatus","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The session's status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionStatusResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Session not found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/sessions/{id}/jobs":{"get":{"tags":["Sessions"],"summary":"List session jobs","description":"Get all quantum jobs belonging to a session.","operationId":"getSessionJobs","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of jobs belonging to the session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Session not found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/workloads":{"get":{"tags":["Jobs"],"summary":"List service-execution workloads","description":"Get quantum workloads (jobs and sessions) running within a specific service execution with pagination.","operationId":"getServiceExecutionWorkloads","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"string","default":"##default"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The page of quantum workloads matching the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageResponseWorkloadResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/sessions/{sessionId}/status":{"get":{"tags":["Jobs"],"summary":"Get service-execution session status","description":"Get the status of a quantum session running within a service execution.","operationId":"getServiceExecutionSessionStatus","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The session's status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionStatusResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/sessions/{sessionId}/jobs":{"get":{"tags":["Jobs"],"summary":"List service-execution session jobs","description":"Get all jobs belonging to a quantum session running within a service execution.","operationId":"getServiceExecutionSessionJobs","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The jobs belonging to the session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/jobs/{jobId}":{"get":{"tags":["Jobs"],"summary":"Get service-execution job","description":"Get the details of a quantum job running within a service execution.","operationId":"getServiceExecutionJob","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]},"delete":{"tags":["Jobs"],"summary":"Cancel service-execution job","description":"Cancel the execution of a quantum job running within a service execution.","operationId":"cancelServiceExecutionJob","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"204":{"description":"The job has been successfully cancelled."},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/jobs/{jobId}/status":{"get":{"tags":["Jobs"],"summary":"Get service-execution job status","description":"Get the status of a quantum job running within a service execution.","operationId":"getServiceExecutionJobStatus","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatusResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/jobs/{jobId}/result/normalized":{"get":{"tags":["Jobs"],"summary":"Get normalized service-execution job result","description":"Get a provider-independent, normalized view of the measurement results of a quantum job running within a service execution. The response is a discriminated union by 'type': 'counts' for real measurement tallies from sampled backends, 'probabilities' for state-vector-derived distributions, 'error' for a FAILED job (the common error envelope). All bitstring keys use Qiskit little-endian order (clbit 0 is the rightmost character). The normalized view is defined only for gate-based measurement results; backends whose computing paradigm does not produce gate-based counts or probabilities (e.g. photonic, neutral-atom) return 204, as do result shapes with no normalized mapping. Only valid once the job has reached a terminal result state (getServiceExecutionJobStatus returns COMPLETED or FAILED); calling this on a job that has not yet completed returns 404. The raw getServiceExecutionJobResultStream endpoint is unaffected and stays byte-identical.","operationId":"getServiceExecutionNormalizedJobResult","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's normalized, provider-independent result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NormalizedJobResult"}}}},"204":{"description":"No normalized view is defined for this backend or result shape."},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/jobs/{jobId}/result-stream":{"get":{"tags":["Jobs"],"summary":"Download service-execution job result","description":"Get the result of a quantum job running within a service execution as a JSON file. On success the file holds the provider-native result verbatim - the shape varies by backend. Use getServiceExecutionNormalizedJobResult for a provider-independent view.","operationId":"getServiceExecutionJobResultStream","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job result content as json file","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/jobs/{jobId}/input":{"get":{"tags":["Jobs"],"summary":"Download service-execution job input","description":"Get the input.json of a quantum job running within a service execution. Returns the provider-native input verbatim - the shape varies by backend. Use getServiceExecutionNormalizedJobInput for a provider-independent QASM view.","operationId":"getServiceExecutionJobInput","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's input.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/jobs/{jobId}/input/normalized":{"get":{"tags":["Jobs"],"summary":"Get normalized service-execution job input","description":"Get the provider-independent QASM view of a quantum job's input, for a job running within a service execution. Returns 422 when the input cannot be rendered as QASM. The raw getServiceExecutionJobInput endpoint is unaffected and stays byte-identical.","operationId":"getServiceExecutionNormalizedJobInput","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's provider-independent QASM input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NormalizedJobInput"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"422":{"description":"The job's input cannot be rendered as a QASM view."},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/service-executions/{serviceExecutionId}/jobs/{jobId}/calibration":{"get":{"tags":["Jobs"],"summary":"Get service-execution job calibration","description":"Get the calibration for a quantum job running within a service execution.","operationId":"getServiceExecutionJobCalibration","parameters":[{"name":"serviceExecutionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique service execution identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's calibration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrationResponse"}}}},"204":{"description":"No calibration data available"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/runtime-minutes":{"get":{"tags":["Runtime Minutes"],"summary":"Get prepaid runtime minutes","description":"List the calling tenant's prepaid runtime-minutes pools, read live from the provider.","operationId":"getRuntimeMinutes","parameters":[{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The tenant's prepaid runtime-minutes allowances.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuntimeMinutesResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"502":{"description":"Upstream provider usage unavailable"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/jobs/{id}":{"get":{"tags":["Jobs"],"summary":"Get job","description":"Get the full details of a quantum job, including status, timestamps, backend, and session affiliation. Fields populated depend on the job's lifecycle stage (e.g. execution timestamps appear once the job starts running). Use getJobStatus when only the status is needed (lighter and cheaper to poll), and getJobResult once the job reaches a terminal state to retrieve measurement results.","operationId":"getJob","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]},"delete":{"tags":["Jobs"],"summary":"Cancel job","description":"Cancel the execution of a quantum job.","operationId":"cancelJob","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"204":{"description":"The job has been successfully cancelled."},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/jobs/{id}/status":{"get":{"tags":["Jobs"],"summary":"Get job status","description":"Get just the current lifecycle status of a quantum job. Cheaper than getJob when polling. Non-terminal statuses (PENDING, RUNNING, CANCELLING) indicate the job is still being processed; terminal statuses (COMPLETED, FAILED, CANCELLED, ABORTED) indicate the job has finished and getJobResult can be called. Recommended polling cadence: a few seconds for short jobs, tens of seconds for long-running jobs.","operationId":"getJobStatus","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatusResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/jobs/{id}/result":{"get":{"tags":["Jobs"],"summary":"Get job result","description":"Get the measurement results of a completed quantum job as inline JSON. On success the payload is the provider-native result verbatim - the shape varies by backend. Use getNormalizedJobResult for a provider-independent view. Only valid once the job has reached a terminal result state (getJobStatus returns COMPLETED or FAILED); calling this on a job that has not yet completed returns 404. A FAILED job returns a common error envelope across all providers: {\"error\": {\"message\": \"...\", \"code\": \"...\", \"details\": {...}}} (code and details are optional; code is the provider's native error code passed through verbatim — the middleware defines no error codes of its own). Use getJobResultStream to download the same data as an attached JSON file (useful for large results).","operationId":"getJobResult","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's result.","content":{"application/json":{"schema":{}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/jobs/{id}/result/normalized":{"get":{"tags":["Jobs"],"summary":"Get normalized job result","description":"Get a provider-independent, normalized view of a completed quantum job's measurement results; the NormalizedJobResult schema describes the response shape. Only valid once the job has reached a terminal result state (getJobStatus returns COMPLETED or FAILED); calling this earlier returns 404. The view is defined only for gate-based measurement results: backends whose computing paradigm produces neither counts nor probabilities (e.g. photonic, neutral-atom) return 204, and so does a job in which no PUB carries a normalizable result.","operationId":"getNormalizedJobResult","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's normalized, provider-independent result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NormalizedJobResult"}}}},"204":{"description":"No normalized view is defined for this backend or result shape."},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/jobs/{id}/result/normalized/memory":{"get":{"tags":["Jobs"],"summary":"Get normalized job memory","description":"Get per-shot measurement values of a completed quantum job as Qiskit hex strings, under the same little-endian bit-order contract as getNormalizedJobResult's 'counts' type (clbit 0 is the rightmost character) - the same shot maps to the same bitstring across both endpoints. Returns 204 when no per-shot data exists: probability-native results (Azure IonQ), state-vector results, IQM (its API only ever exposes aggregated counts, never a genuine per-shot order), FAILED jobs, or providers with no normalized mapping. Only valid once the job has reached a terminal result state (getJobStatus returns COMPLETED or FAILED); calling this on a job that has not yet completed returns 404. The raw getJobResult endpoint is unaffected and stays byte-identical.","operationId":"getNormalizedJobMemory","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's per-shot measurement values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NormalizedMemoryResult"}}}},"204":{"description":"No per-shot data exists for this provider or result shape."},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/jobs/{id}/result-stream":{"get":{"tags":["Jobs"],"summary":"Download job result","description":"Get the result of a specific job as json file. A FAILED job's downloaded file contains the same common error envelope as getJobResult: {\"error\": {\"message\": \"...\", \"code\": \"...\", \"details\": {...}}}.","operationId":"getJobResultStream","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job result content as json file","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/jobs/{id}/input":{"get":{"tags":["Jobs"],"summary":"Download job input","description":"Get the input.json of a quantum job. Returns the provider-native input verbatim - the shape varies by backend. Use getNormalizedJobInput for a provider-independent QASM view.","operationId":"getJobInput","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's input.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/jobs/{id}/input/normalized":{"get":{"tags":["Jobs"],"summary":"Get normalized job input","description":"Get the provider-independent QASM view of a quantum job's input. Returns 422 when the input cannot be rendered as QASM. The raw getJobInput endpoint is unaffected and stays byte-identical.","operationId":"getNormalizedJobInput","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's provider-independent QASM input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NormalizedJobInput"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"422":{"description":"The job's input cannot be rendered as a QASM view."},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/jobs/{id}/calibration":{"get":{"tags":["Jobs"],"summary":"Get job calibration","description":"Get the calibration for a specific job during its execution.","operationId":"getJobCalibration","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The job's calibration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrationResponse"}}}},"204":{"description":"No calibration data available"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/backends":{"get":{"tags":["Backends"],"summary":"List backends (public)","description":"Get the list of backends based on the provided filters. This endpoint is publicly accessible; authenticated callers receive full operational details, unauthenticated callers receive a reduced view.","operationId":"getBackends","parameters":[{"name":"provider","in":"query","description":"Filter backends by quantum hardware provider. Accepts one of: AZURE, AWS, IBM, QRYD, QUDORA, QUANDELA, IQM (case-insensitive; hyphens are normalized to underscores). Omit to return backends from all providers.","required":false,"schema":{"type":"string"}},{"name":"onlyPlanqkSdk","in":"query","description":"When true, return only backends that are usable via the qhub-quantum SDK (excludes backends that require direct-only access). Defaults to false — all backends are returned.","required":false,"schema":{"type":"boolean"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The list of backends based on the provided filters. When called without authentication, operational fields (queueSize, availability) are omitted and hasCalibration is reported as false.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Backend"}}}}},"500":{"description":"Internal Server Error"}}}},"/backends/{id}":{"get":{"tags":["Backends"],"summary":"Get backend","description":"Get the details of a specific backend.","operationId":"getBackend","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The backend with the specified ID.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Backend"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/backends/{id}/status":{"get":{"tags":["Backends"],"summary":"Get backend status","description":"Get the status of a specific backend.","operationId":"getBackendStatus","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The status of the backend.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackendStateInfo"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/backends/{id}/config":{"get":{"tags":["Backends"],"summary":"Get backend configuration","description":"Get the configuration of a specific backend.","operationId":"getBackendConfig","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The configuration of the backend.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/backends/{id}/calibration":{"get":{"tags":["Backends"],"summary":"Get backend calibration","description":"Get the calibration of a specific backend.","operationId":"getBackendCalibration","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"}},{"name":"effectiveAt","in":"query","description":"Return the calibration that was effective at this instant instead of the latest one. Expected as an ISO-8601 timestamp in UTC (e.g. 2026-04-17T12:34:56Z). Omit to retrieve the most recent calibration. Returns 204 if no calibration exists at or before the given instant.","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The backend's calibration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrationResponse"}}}},"204":{"description":"No calibration data available"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"oauth2":[]},{"apiKey":[]}]}},"/backends/least-busy":{"get":{"tags":["Backends"],"summary":"Return the least busy backend for the given provider.","description":"Returns the single backend with the lowest reported queue size for the requested provider. **Currently only IBM is supported** — other providers do not yet report per-backend queue depth and will return 400 (\"Provider X does not support least-busy backend selection\"). Returns 404 if no eligible operational IBM backends with known queue information are available.","operationId":"getLeastBusyBackend","parameters":[{"name":"provider","in":"query","description":"Quantum provider. Matches the /backends provider parameter (case-insensitive, hyphens normalised to underscores). Only providers that report per-backend queue depth are eligible; currently this is IBM only — other values return 400.","required":true,"schema":{"type":"string"}},{"name":"minQubits","in":"query","description":"Optional lower bound on the backend's qubit count. Backends with fewer qubits are excluded from selection.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"X-OrganizationId","in":"header","description":"Optional field identifying the organization to which the request belongs. If not provided, the request is performed in the context of the user.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The least busy backend for the requested provider.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Backend"}}}},"400":{"description":"Provider does not support least-busy selection, or input is invalid."},"401":{"description":"Unauthorized"},"404":{"description":"No candidate backends with queue information found."},"500":{"description":"Internal Server Error"}}}}},"components":{"schemas":{"Session":{"description":"A quantum session grouping related jobs on a shared backend, with shared queue priority and lifecycle.","properties":{"id":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"},"backend_id":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"},"provider":{"type":"string","description":"Quantum cloud provider exposing the backend. Distinct from HardwareProvider — a hardware vendor can be offered via multiple clouds.","enum":["AZURE","AWS","IBM","QRYD","QUDORA","QUANDELA","IQM","KIPU","AQT"],"example":"IBM"},"status":{"type":"string","description":"Lifecycle status of a quantum session. Non-final: OPEN (waiting to run), ACTIVE (has backend priority), INACTIVE (no priority, idle), DRAINING (rejects new jobs, finishing in-flight ones). Final: CLOSED (cleanly shut down), ABORTED (failed during creation). UNKNOWN is used when the provider has not yet reported a state.","enum":["UNKNOWN","ABORTED","OPEN","ACTIVE","INACTIVE","DRAINING","CLOSED"],"example":"ACTIVE"},"mode":{"type":"string","description":"Execution mode of a quantum session. `batch` runs queued jobs without reserving the backend between them; `dedicated` keeps the backend reserved for the session's lifetime, reducing inter-job latency at higher cost.","enum":["batch","dedicated"],"example":"dedicated"},"created_at":{"type":"string","description":"Timestamp when the session was created.","example":"2023-10-01 12:00:00","pattern":"^\\d{4}\\-\\d{2}\\-\\d{2}\\s{1}\\d{2}\\:\\d{2}\\:\\d{2}$"},"started_at":{"type":"string","description":"Timestamp when the session started.","example":"2023-10-01 12:00:00","pattern":"^\\d{4}\\-\\d{2}\\-\\d{2}\\s{1}\\d{2}\\:\\d{2}\\:\\d{2}$"},"closed_at":{"type":"string","description":"Timestamp when the session was closed.","example":"2023-10-01 12:00:00","pattern":"^\\d{4}\\-\\d{2}\\-\\d{2}\\s{1}\\d{2}\\:\\d{2}\\:\\d{2}$"},"expires_at":{"type":"string","description":"Timestamp when the session expires.","example":"2023-10-01 12:00:00","pattern":"^\\d{4}\\-\\d{2}\\-\\d{2}\\s{1}\\d{2}\\:\\d{2}\\:\\d{2}$"},"usage_time_millis":{"type":"integer","format":"int64","description":"Cumulative quantum backend usage time attributed to this session, in milliseconds.","example":12500},"provider_id":{"type":"string","description":"Provider-specific reference to a session","example":"session-abcd-1234-efgh-5678"},"tags":{"type":"array","description":"Read-only union of the tags of the session's jobs. Cannot be set; tag the jobs instead.","example":["experiment","prod"],"items":{"type":"string","description":"Read-only union of the tags of the session's jobs. Cannot be set; tag the jobs instead.","example":"[\"experiment\",\"prod\"]","readOnly":true},"readOnly":true,"uniqueItems":true},"metadata":{"type":"object"},"sdk_provider":{"type":"string","description":"Client-side SDK used to submit the workload. QISKIT and BRAKET indicate the workload was submitted through the qhub-quantum SDK via its provider-native integration of the same name. CLIENT indicates direct submission via the API (no qhub-quantum SDK in between).","enum":["QISKIT","BRAKET","PERCEVAL","CLIENT"],"example":"QISKIT"},"final":{"type":"boolean"}}},"CreateSessionRequest":{"properties":{"backend_id":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"},"mode":{"type":"string","description":"Execution mode of a quantum session. `batch` runs queued jobs without reserving the backend between them; `dedicated` keeps the backend reserved for the session's lifetime, reducing inter-job latency at higher cost.","enum":["batch","dedicated"],"example":"dedicated"},"ttl":{"type":"integer","format":"int32","description":"Maximum Time-to-live for the session in seconds","example":3600},"metadata":{"type":"object"},"provider":{"type":"string","description":"Quantum cloud provider exposing the backend. Distinct from HardwareProvider — a hardware vendor can be offered via multiple clouds.","enum":["AZURE","AWS","IBM","QRYD","QUDORA","QUANDELA","IQM","KIPU","AQT"],"example":"IBM"},"sdk_provider":{"type":"string","default":"CLIENT","description":"Client-side SDK used to submit the workload. QISKIT and BRAKET indicate the workload was submitted through the qhub-quantum SDK via its provider-native integration of the same name. CLIENT indicates direct submission via the API (no qhub-quantum SDK in between).","enum":["QISKIT","BRAKET","PERCEVAL","CLIENT"],"example":"QISKIT"}},"required":["backend_id","mode","provider"]},"Job":{"description":"A quantum job: a single asynchronous execution of a quantum circuit on a backend.","properties":{"id":{"type":"string","format":"uuid","description":"Unique job identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"},"name":{"type":"string","description":"Optional human-readable name assigned when the job was submitted.","example":"My Quantum Job"},"backend_id":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"},"provider":{"type":"string","description":"Quantum cloud provider exposing the backend. Distinct from HardwareProvider — a hardware vendor can be offered via multiple clouds.","enum":["AZURE","AWS","IBM","QRYD","QUDORA","QUANDELA","IQM","KIPU","AQT"],"example":"IBM"},"provider_job_id":{"type":"string","description":"Unique job identifier assigned by the backend provider","example":"5678-1234-90ab-cdef-1234567890ab"},"input_params":{"type":"object"},"input_format":{"type":"string","description":"Format of a quantum job's input circuit. Must match the target backend's `supportedInputFormats`. OpenQASM flavors cover most gate-based backends; QIR is used for hardware-agnostic IR; provider-specific formats (braket.*, iqm.*, ionq.*, qiskit, qoqo, perceval) target a single backend family.","enum":["OPEN_QASM_V1","OPEN_QASM_V2","OPEN_QASM_V3","QIR_V1","BRAKET_OPEN_QASM_V3","BRAKET_AHS_PROGRAM","IONQ_CIRCUIT_V1","QISKIT_QPY","QOQO","PERCEVAL","IQM_JOB_INPUT_V1","AQT_JOB_INPUT_V1"],"example":"openqasm.v3"},"tags":{"type":"array","description":"Tags attached to the job at submission time for categorization or filtering.","example":["experiment","prod"],"items":{"type":"string","description":"Tags attached to the job at submission time for categorization or filtering.","example":"[\"experiment\",\"prod\"]"},"uniqueItems":true},"status":{"type":"string","description":"Lifecycle status of a quantum job. Non-terminal: PENDING (waiting in queue), RUNNING (executing on backend), CANCELLING (cancellation in progress). Terminal: COMPLETED (executed successfully, results available), FAILED (execution error, error info available), CANCELLED (stopped before completion), ABORTED (never started due to an internal error). UNKNOWN is used when the provider has not yet reported a state.","enum":["UNKNOWN","PENDING","ABORTED","RUNNING","COMPLETED","FAILED","CANCELLING","CANCELLED"],"example":"RUNNING"},"created_at":{"type":"string","description":"Timestamp when the job was created.","example":"2023-10-01 12:00:00","pattern":"^\\d{4}\\-\\d{2}\\-\\d{2}\\s{1}\\d{2}\\:\\d{2}\\:\\d{2}$"},"started_at":{"type":"string","description":"Timestamp when the job started executing.","example":"2023-10-01 12:00:00","pattern":"^\\d{4}\\-\\d{2}\\-\\d{2}\\s{1}\\d{2}\\:\\d{2}\\:\\d{2}$"},"ended_at":{"type":"string","description":"Timestamp when the job ended.","example":"2023-10-01 12:00:00","pattern":"^\\d{4}\\-\\d{2}\\-\\d{2}\\s{1}\\d{2}\\:\\d{2}\\:\\d{2}$"},"usage_time_millis":{"type":"integer","format":"int64","description":"Quantum execution time reported by the provider, in milliseconds. Only populated for terminal jobs.","example":1250},"shots":{"type":"integer","format":"int64","description":"Number of shots the job executes, derived by the middleware rather than taken from the submission: for a job carrying PUBs it is the sum of the effective shots of every PUB - each PUB's own shots where it declares them, else the run default. Absent where no shot count is knowable, which is the case for an estimator job until its result reports the count its target precision resolved to.","example":1000},"session_id":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"},"sdk_provider":{"type":"string","description":"Client-side SDK used to submit the workload. QISKIT and BRAKET indicate the workload was submitted through the qhub-quantum SDK via its provider-native integration of the same name. CLIENT indicates direct submission via the API (no qhub-quantum SDK in between).","enum":["QISKIT","BRAKET","PERCEVAL","CLIENT"],"example":"QISKIT"},"runtime":{"type":"integer","format":"int64","deprecated":true,"description":"Deprecated alias of usage_time_millis, kept for one release. Use usage_time_millis.","example":1250,"readOnly":true}}},"CreateJobRequest":{"properties":{"name":{"type":"string","description":"Optional name for the job","example":"My Quantum Job"},"backend_id":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"},"shots":{"type":"integer","format":"int64","description":"Number of shots to execute","example":1000,"minimum":1},"input":{"description":"Backend-specific job input. The format depends on the backend the job is executed on.","discriminator":{"propertyName":"backendId","mapping":{"aqt.qpu.ibex":"#/components/schemas/AQT_JobInput","aqt.sim.ideal":"#/components/schemas/AQT_JobInput","azure.ionq.simulator":"#/components/schemas/AzureIonq_JobInput","quandela.qpu.belenos":"#/components/schemas/Quandela_JobInput","quandela.sim.belenos":"#/components/schemas/Quandela_JobInput","aws.quera.aquila":"#/components/schemas/Aws_AHS_JobInput","qudora.sim.xg1":"#/components/schemas/Qudora_JobInput","kipu.sim.qsim":"#/components/schemas/Kipu_JobInput","ibm.qpu.fez":"#/components/schemas/IBM_JobInput","ibm.qpu.boston":"#/components/schemas/IBM_JobInput","ibm.qpu.marrakesh":"#/components/schemas/IBM_JobInput","ibm.qpu.pittsburgh":"#/components/schemas/IBM_JobInput","ibm.qpu.aachen":"#/components/schemas/IBM_JobInput","ibm.qpu.berlin":"#/components/schemas/IBM_JobInput","ibm.qpu.miami":"#/components/schemas/IBM_JobInput","ibm.qpu.kingston":"#/components/schemas/IBM_JobInput","iqm.qpu.emerald":"#/components/schemas/IQM_JobInput","iqm.qpu.garnet":"#/components/schemas/IQM_JobInput","aws.rigetti.cepheus":"#/components/schemas/Aws_QASM_3_JobInput","aws.sim.sv1":"#/components/schemas/Aws_QASM_3_JobInput","aws.ionq.forte":"#/components/schemas/Aws_QASM_3_JobInput","aws.ionq.forte.enterprise":"#/components/schemas/Aws_QASM_3_JobInput","aws.sim.dm1":"#/components/schemas/Aws_QASM_3_JobInput"}},"oneOf":[{"$ref":"#/components/schemas/AQT_JobInput"},{"$ref":"#/components/schemas/AzureIonq_JobInput"},{"$ref":"#/components/schemas/Quandela_JobInput"},{"$ref":"#/components/schemas/Aws_AHS_JobInput"},{"$ref":"#/components/schemas/Qudora_JobInput"},{"$ref":"#/components/schemas/Kipu_JobInput"},{"$ref":"#/components/schemas/IBM_JobInput"},{"$ref":"#/components/schemas/IQM_JobInput"},{"$ref":"#/components/schemas/Aws_QASM_3_JobInput"}]},"input_format":{"type":"string","description":"Format of a quantum job's input circuit. Must match the target backend's `supportedInputFormats`. OpenQASM flavors cover most gate-based backends; QIR is used for hardware-agnostic IR; provider-specific formats (braket.*, iqm.*, ionq.*, qiskit, qoqo, perceval) target a single backend family.","enum":["OPEN_QASM_V1","OPEN_QASM_V2","OPEN_QASM_V3","QIR_V1","BRAKET_OPEN_QASM_V3","BRAKET_AHS_PROGRAM","IONQ_CIRCUIT_V1","QISKIT_QPY","QOQO","PERCEVAL","IQM_JOB_INPUT_V1","AQT_JOB_INPUT_V1"],"example":"openqasm.v3"},"input_params":{"description":"Backend-specific job input parameters. The supported parameters depend on the backend the job is executed on.","discriminator":{"propertyName":"backendId","mapping":{"aqt.qpu.ibex":"#/components/schemas/AQT_JobInputParams","aqt.sim.ideal":"#/components/schemas/AQT_JobInputParams","azure.ionq.simulator":"#/components/schemas/AzureIonq_JobInputParams","quandela.qpu.belenos":"#/components/schemas/Quandela_JobInputParams","quandela.sim.belenos":"#/components/schemas/Quandela_JobInputParams","aws.quera.aquila":"#/components/schemas/Aws_AHS_JobInputParams","qudora.sim.xg1":"#/components/schemas/Qudora_JobInputParams","kipu.sim.qsim":"#/components/schemas/Kipu_JobInputParams","ibm.qpu.fez":"#/components/schemas/IBM_JobInputParams","ibm.qpu.boston":"#/components/schemas/IBM_JobInputParams","ibm.qpu.marrakesh":"#/components/schemas/IBM_JobInputParams","ibm.qpu.pittsburgh":"#/components/schemas/IBM_JobInputParams","ibm.qpu.aachen":"#/components/schemas/IBM_JobInputParams","ibm.qpu.berlin":"#/components/schemas/IBM_JobInputParams","ibm.qpu.miami":"#/components/schemas/IBM_JobInputParams","ibm.qpu.kingston":"#/components/schemas/IBM_JobInputParams","iqm.qpu.emerald":"#/components/schemas/IQM_JobInputParams","iqm.qpu.garnet":"#/components/schemas/IQM_JobInputParams","aws.rigetti.cepheus":"#/components/schemas/Aws_QASM_3_JobInputParams","aws.sim.sv1":"#/components/schemas/Aws_QASM_3_JobInputParams","aws.ionq.forte":"#/components/schemas/Aws_QASM_3_JobInputParams","aws.ionq.forte.enterprise":"#/components/schemas/Aws_QASM_3_JobInputParams","aws.sim.dm1":"#/components/schemas/Aws_QASM_3_JobInputParams"}},"oneOf":[{"$ref":"#/components/schemas/AQT_JobInputParams"},{"$ref":"#/components/schemas/AzureIonq_JobInputParams"},{"$ref":"#/components/schemas/Quandela_JobInputParams"},{"$ref":"#/components/schemas/Aws_AHS_JobInputParams"},{"$ref":"#/components/schemas/Qudora_JobInputParams"},{"$ref":"#/components/schemas/Kipu_JobInputParams"},{"$ref":"#/components/schemas/IBM_JobInputParams"},{"$ref":"#/components/schemas/IQM_JobInputParams"},{"$ref":"#/components/schemas/Aws_QASM_3_JobInputParams"}]},"qasm":{"$ref":"#/components/schemas/QasmCircuit"},"tags":{"type":"array","description":"Set of tags to identify or categorize the job","example":["experiment","prod"],"items":{"type":"string","description":"Set of tags to identify or categorize the job","example":"[\"experiment\",\"prod\"]"},"uniqueItems":true},"session_id":{"type":"string","format":"uuid","description":"Unique session identifier","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"},"sdk_provider":{"type":"string","default":"CLIENT","description":"Client-side SDK used to submit the workload. QISKIT and BRAKET indicate the workload was submitted through the qhub-quantum SDK via its provider-native integration of the same name. CLIENT indicates direct submission via the API (no qhub-quantum SDK in between).","enum":["QISKIT","BRAKET","PERCEVAL","CLIENT"],"example":"QISKIT"}},"required":["backend_id","input","shots"]},"QasmCircuit":{"description":"A declared QASM dialect plus its programs.","properties":{"format":{"type":"string","description":"Declared OpenQASM dialect of a normalized-input program. The contract guarantees QASM text plus its declared dialect, never a specific one — no V2-to-V3 transformation happens anywhere.","enum":["openqasm.v2","openqasm.v3"],"example":"openqasm.v3"},"programs":{"type":"array","description":"QASM programs in the declared dialect.","items":{"$ref":"#/components/schemas/QasmProgram"},"minItems":1}},"required":["format","programs"]},"QasmProgram":{"description":"A single QASM program within a normalized-input circuit.","properties":{"qasm":{"type":"string","description":"OpenQASM source text.","example":"OPENQASM 3; qubit[2] q; h q[0];","maxLength":1000000,"minLength":0},"name":{"type":"string","description":"Optional name for the program (e.g. the pub name for multi-program submissions).","example":"pub-0"}},"required":["qasm"]},"SessionStateUpdateRequest":{"properties":{"accept_jobs":{"type":"boolean","description":"Controls whether the session accepts new job submissions. Set to true to keep the session open for new jobs (ACTIVE). Set to false to stop accepting new jobs while allowing already-submitted in-flight jobs to complete (DRAINING); to fully terminate the session instead, call closeSession.","example":false}},"required":["accept_jobs"]},"PageResponseWorkloadResponse":{"description":"A single page of results from a paginated listing endpoint.","properties":{"content":{"type":"array","description":"Items contained in the current page, in the page's order.","items":{"$ref":"#/components/schemas/WorkloadResponse"}},"page":{"type":"integer","format":"int32","description":"Zero-based index of the current page.","example":0},"size":{"type":"integer","format":"int32","description":"Maximum number of items per page requested by the caller.","example":20},"total_elements":{"type":"integer","format":"int64","description":"Total number of items across all pages matching the query.","example":137},"total_pages":{"type":"integer","format":"int32","description":"Total number of pages available given the page size.","example":7}}},"WorkloadResponse":{"description":"Response shape for a workload entry in a paged listing.","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the workload. Resolves to either a JobId or a SessionId depending on type.","example":"5904a9f2-f43b-453d-9d08-beedcdb93e54"},"type":{"type":"string","description":"Kind of quantum workload. JOB is a single-execution quantum job; SESSION groups multiple related jobs.","enum":["JOB","SESSION"],"example":"JOB"},"backend_id":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"},"provider":{"type":"string","description":"Quantum cloud provider exposing the backend. Distinct from HardwareProvider — a hardware vendor can be offered via multiple clouds.","enum":["AZURE","AWS","IBM","QRYD","QUDORA","QUANDELA","IQM","KIPU","AQT"],"example":"IBM"},"status":{"type":"string","description":"Status of the workload. Valid values depend on the workload type (JobStatus for JOB, SessionStatus for SESSION).","example":"RUNNING"},"started_at":{"type":"string","description":"Timestamp when the workload started executing.","example":"2023-10-01 12:00:00","pattern":"^\\d{4}\\-\\d{2}\\-\\d{2}\\s{1}\\d{2}\\:\\d{2}\\:\\d{2}$"},"ended_at":{"type":"string","description":"Timestamp when the workload ended.","example":"2023-10-01 12:00:00","pattern":"^\\d{4}\\-\\d{2}\\-\\d{2}\\s{1}\\d{2}\\:\\d{2}\\:\\d{2}$"},"created_at":{"type":"string","description":"Timestamp when the workload was created.","example":"2023-10-01 12:00:00","pattern":"^\\d{4}\\-\\d{2}\\-\\d{2}\\s{1}\\d{2}\\:\\d{2}\\:\\d{2}$"},"sdk_provider":{"type":"string","description":"Client-side SDK used to submit the workload. QISKIT and BRAKET indicate the workload was submitted through the qhub-quantum SDK via its provider-native integration of the same name. CLIENT indicates direct submission via the API (no qhub-quantum SDK in between).","enum":["QISKIT","BRAKET","PERCEVAL","CLIENT"],"example":"QISKIT"},"name":{"type":"string","description":"Name of the workload. Only set for JOB workloads; NULL for SESSION."},"tags":{"type":"array","description":"Tags attached to the workload.","items":{"type":"string","description":"Tags attached to the workload."},"uniqueItems":true},"job_count":{"type":"integer","format":"int64","description":"Number of jobs belonging to this workload. Only set for SESSION workloads; NULL for JOB."},"service_execution_id":{"type":"string","format":"uuid","description":"ID of the service execution this workload ran in. NULL for a workload created directly (STANDALONE); set when the workload's origin is SERVICE_EXECUTION."}}},"SessionStatusResponse":{"description":"Lightweight response carrying only the session's current lifecycle status.","properties":{"status":{"type":"string","description":"Lifecycle status of a quantum session. Non-final: OPEN (waiting to run), ACTIVE (has backend priority), INACTIVE (no priority, idle), DRAINING (rejects new jobs, finishing in-flight ones). Final: CLOSED (cleanly shut down), ABORTED (failed during creation). UNKNOWN is used when the provider has not yet reported a state.","enum":["UNKNOWN","ABORTED","OPEN","ACTIVE","INACTIVE","DRAINING","CLOSED"],"example":"ACTIVE"}}},"JobStatusResponse":{"description":"Lightweight response carrying only the job's current lifecycle status.","properties":{"status":{"type":"string","description":"Lifecycle status of a quantum job. Non-terminal: PENDING (waiting in queue), RUNNING (executing on backend), CANCELLING (cancellation in progress). Terminal: COMPLETED (executed successfully, results available), FAILED (execution error, error info available), CANCELLED (stopped before completion), ABORTED (never started due to an internal error). UNKNOWN is used when the provider has not yet reported a state.","enum":["UNKNOWN","PENDING","ABORTED","RUNNING","COMPLETED","FAILED","CANCELLING","CANCELLED"],"example":"RUNNING"}}},"EstimatorRunContext":{"description":"How the expectation values were produced - the precision the run targeted, how many randomizations it averaged, and which error mitigation was applied. These are the values the provider resolved, not necessarily ones the submitter chose: a submission carrying no options at all still runs with readout mitigation on. Each field is absent when the provider's result metadata did not report it.","properties":{"target_precision":{"type":"number","format":"double","description":"Standard error the run aimed for on each expectation value. The provider default is 0.015625 = 1/sqrt(4096).","example":0.015625},"num_randomizations":{"type":"integer","format":"int32","description":"Number of Pauli twirling randomizations the run's shots were split across, and so the sample size behind 'stds': comparing 'stds' against 'ensemble_stds' has a noise floor of 1/sqrt(2(n-1)).","example":32},"measure_mitigation":{"type":"boolean","description":"Whether readout error mitigation (TREX) was applied. True on a run that asked for nothing, because the provider's resilience level defaults to 1. Mitigated values can fall outside the observable's physical range.","example":true},"zne_mitigation":{"type":"boolean","description":"Whether zero-noise extrapolation was applied. ZNE inflates 'stds' far beyond the shot-noise scale.","example":false},"pec_mitigation":{"type":"boolean","description":"Whether probabilistic error cancellation was applied.","example":false}}},"NormalizedCountsResult":{"allOf":[{"$ref":"#/components/schemas/NormalizedPubResult"},{"type":"object","properties":{"key_format":{"type":"string","description":"Always 'bitstring' in v1; reserves room for non-qubit backends.","example":"bitstring"},"counts":{"type":"object","additionalProperties":{"type":"integer","format":"int32","description":"Measurement counts keyed by bitstring, Qiskit little-endian order."},"description":"Measurement counts keyed by bitstring, Qiskit little-endian order.","example":{"00":55,"11":45}},"shots":{"type":"integer","format":"int32","description":"Total number of measurement shots.","example":100},"qubits":{"type":"integer","format":"int32","description":"Number of qubits measured.","example":2}}}],"description":"Real measurement tallies from a sampled backend. Counts are actual tallies, never derived from probabilities."},"NormalizedErrorResult":{"allOf":[{"$ref":"#/components/schemas/NormalizedPubResult"},{"type":"object","properties":{"error":{"type":"object"}}}],"description":"A FAILED job, wrapping the common error envelope verbatim."},"NormalizedExpectationValuesResult":{"allOf":[{"$ref":"#/components/schemas/NormalizedPubResult"},{"type":"object","properties":{"shape":{"type":"array","description":"Shape the flat lists below belong to, taken from the provider payload. Not derivable from the value count: 2 observables against 3 parameter sets and 1 against 6 both yield 6 values.","example":[2,3],"items":{"type":"integer","format":"int32","description":"Shape the flat lists below belong to, taken from the provider payload. Not derivable from the value count: 2 observables against 3 parameter sets and 1 against 6 both yield 6 values."}},"values":{"type":"array","description":"Expectation values, row-major over 'shape'.","example":[0.1,-0.2,0.3],"items":{"type":"number","format":"double","description":"Expectation values, row-major over 'shape'."}},"stds":{"type":"array","description":"Standard error of the mean over the per-twirl values, one per expectation value. Error mitigation (ZNE) can inflate these far beyond the shot-noise scale, so they carry no fixed precision.","example":[0.01,0.02,0.03],"items":{"type":"number","format":"double","description":"Standard error of the mean over the per-twirl values, one per expectation value. Error mitigation (ZNE) can inflate these far beyond the shot-noise scale, so they carry no fixed precision."}},"ensemble_stds":{"type":"array","description":"Standard error over all shots pooled as a single ensemble; absent when the provider payload carries no ensemble field. Coincides with 'stds' when twirling is off.","example":[0.001,0.002,0.003],"items":{"type":"number","format":"double","description":"Standard error over all shots pooled as a single ensemble; absent when the provider payload carries no ensemble field. Coincides with 'stds' when twirling is off."}},"observable_index":{"type":"array","description":"Index into 'observables' for each expectation value, row-major over 'shape'. Resolves the provider's array broadcasting so no consumer reimplements it, and so a many-term observable is not repeated once per value.","example":[0,0,0,1,1,1],"items":{"type":"integer","format":"int32","description":"Index into 'observables' for each expectation value, row-major over 'shape'. Resolves the provider's array broadcasting so no consumer reimplements it, and so a many-term observable is not repeated once per value."}},"observables":{"type":"array","description":"The observables that were measured, flattened row-major over their own array shape. Absent when the job's input was not archived - archiving is best-effort, so the numbers above ship with or without their labels.","items":{"$ref":"#/components/schemas/NormalizedObservable"}},"parameter_values":{"type":"array","description":"Parameter values bound to the circuit, one list per parameter set. Capped at the first 256 sets so a pathological sweep cannot dominate the response. Parameter names are not included: they exist only inside the submitted circuit blob.","example":[[0.0,1.57]],"items":{"type":"array","description":"Parameter values bound to the circuit, one list per parameter set. Capped at the first 256 sets so a pathological sweep cannot dominate the response. Parameter names are not included: they exist only inside the submitted circuit blob.","example":[[0.0,1.57]],"items":{"type":"number","format":"double","description":"Parameter values bound to the circuit, one list per parameter set. Capped at the first 256 sets so a pathological sweep cannot dominate the response. Parameter names are not included: they exist only inside the submitted circuit blob."}}},"run_context":{"$ref":"#/components/schemas/EstimatorRunContext"}}}],"description":"Expectation values from an estimator primitive, with their uncertainties. An estimator produces no per-shot data and no bitstrings at all, so this member shares no fields with 'counts' or 'probabilities'. All lists are flattened row-major over 'shape'.","required":["shape","stds","values"]},"NormalizedJobResult":{"description":"Provider-independent view of a job's measurement results — the served normalized-result view. A job carries an ordered list of one or more PUBs (ADR-0013); this view serves one entry per PUB in submission order, index-aligned with the normalized input view so entry `i` is the result of input entry `i`. A single-PUB job serves a list of length one. A FAILED job is the one exception: it serves exactly one `error` entry whatever its PUB count, because a failed job produced no per-PUB outcome to report. The raw result endpoint is unaffected and stays byte-identical.","properties":{"pubs":{"type":"array","description":"One entry per submitted PUB, in submission order.","items":{"$ref":"#/components/schemas/NormalizedPubResult"},"minItems":1}},"required":["pubs"]},"NormalizedObservable":{"description":"An observable an estimator measured, read from the job's archived input - an estimator result echoes none of it.","properties":{"pattern":{"type":"string","description":"Readable label: each term's non-identity Pauli factors in qubit-0-first order, several terms joined by ' + ' and elided with ' + ...' past the eighth ('term_count' still reports them all). Carries no qubit indices - 'terms' is where those are. 'I' for an identity-only term.","example":"ZZ"},"num_qubits":{"type":"integer","format":"int32","description":"Width of the layout the terms are indexed against, not the observable's own support. Not derivable once the identities are dropped, and what Qiskit's 'SparsePauliOp.from_sparse_list' needs to rebuild the observable.","example":156},"term_count":{"type":"integer","format":"int32","description":"Number of Pauli terms in this observable.","example":1},"terms":{"type":"array","description":"Every term with its coefficient, so nothing the 'pattern' elides is lost.","items":{"$ref":"#/components/schemas/ObservableTerm"}}}},"NormalizedProbabilitiesResult":{"allOf":[{"$ref":"#/components/schemas/NormalizedPubResult"},{"type":"object","properties":{"key_format":{"type":"string","description":"Always 'bitstring' in v1; reserves room for non-qubit backends.","example":"bitstring"},"probabilities":{"type":"object","additionalProperties":{"type":"number","format":"double","description":"Probabilities keyed by bitstring, Qiskit little-endian order."},"description":"Probabilities keyed by bitstring, Qiskit little-endian order.","example":{"00":0.55,"11":0.45}},"qubits":{"type":"integer","format":"int32","description":"Number of qubits.","example":2},"truncated":{"type":"boolean","description":"True when the entry cap dropped real probability mass; negligible entries removed by the epsilon noise filter do not set this."}}}],"description":"State-vector-derived probability distribution. Returned where no sampling happened or the vendor is probability-native. Phase is not normalized."},"NormalizedPubResult":{"description":"Provider-independent, discriminated-union view of one PUB's measurement result. All bitstring keys use Qiskit little-endian order (clbit 0 is the rightmost character).","discriminator":{"propertyName":"type","mapping":{"counts":"#/components/schemas/NormalizedCountsResult","probabilities":"#/components/schemas/NormalizedProbabilitiesResult","expectation_values":"#/components/schemas/NormalizedExpectationValuesResult","error":"#/components/schemas/NormalizedErrorResult","unmapped":"#/components/schemas/NormalizedUnmappedResult"}},"properties":{"type":{"type":"string"}},"required":["type"]},"NormalizedUnmappedResult":{"allOf":[{"$ref":"#/components/schemas/NormalizedPubResult"},{"type":"object"}],"description":"A PUB whose payload carries no normalizable result. Present to keep the entries index-aligned with the normalized input view; it never replaces a readable result."},"ObservableTerm":{"description":"One weighted Pauli term of an observable, in sparse form - only the factors that are not the identity, so a term on a large device does not arrive as a full-width string of 'I's.","properties":{"pauli":{"type":"string","description":"The non-identity Pauli factors, one character per entry of 'qubits': 'pauli[i]' acts on 'qubits[i]'. Empty for an identity-only term.","example":"ZZ"},"qubits":{"type":"array","description":"The physical qubits the factors act on, ascending, with the circuit's layout already applied.","example":[0,1],"items":{"type":"integer","format":"int32","description":"The physical qubits the factors act on, ascending, with the circuit's layout already applied."}},"coefficient":{"type":"number","format":"double","description":"Weight of this term in the observable.","example":1.0}}},"NormalizedJobInput":{"description":"Provider-independent QASM view of a job's input — the served normalized-input view. A job carries an ordered list of one or more PUBs (ADR-0013); this view serves one entry per PUB in submission order, index-aligned with the normalized result view so entry `i` is the submission that produced result entry `i`. Every entry renders the submitted circuit: the executed hardware-native circuit is built on the device downstream and is not accessible, so the view makes no transpile-stage claim. QHub-rendered QASM is for display and may carry `//` markers for operations with no OpenQASM 3 representation. Never forwarded to the provider.","properties":{"format":{"type":"string","description":"Declared OpenQASM dialect of a normalized-input program. The contract guarantees QASM text plus its declared dialect, never a specific one — no V2-to-V3 transformation happens anywhere.","enum":["openqasm.v2","openqasm.v3"],"example":"openqasm.v3"},"pubs":{"type":"array","description":"One entry per submitted PUB, in submission order.","items":{"$ref":"#/components/schemas/NormalizedPub"},"minItems":1}},"required":["format","pubs"]},"NormalizedPub":{"description":"One PUB of a submission: the executable unit of circuit plus its optional observables, parameter values and shots (ADR-0013). The payload fields are absent for a submission that carries none.","properties":{"name":{"type":"string","description":"Name of the PUB as the SDK captured it.","example":"pub-0"},"qasm":{"type":"string","description":"OpenQASM source text of this PUB's circuit.","example":"OPENQASM 3; qubit[2] q; h q[0];","maxLength":1000000,"minLength":0},"observables":{"type":"array","description":"Observables this PUB measures; absent for a sampler PUB and for any submission whose observables are not readable.","items":{"$ref":"#/components/schemas/NormalizedObservable"}},"parameter_values":{"type":"array","description":"One row per parameter set bound to this PUB's circuit, in sweep order.","items":{"type":"array","description":"One row per parameter set bound to this PUB's circuit, in sweep order.","items":{"type":"number","format":"double","description":"One row per parameter set bound to this PUB's circuit, in sweep order."}}},"shots":{"type":"integer","format":"int64","description":"Effective shots for this PUB: its own override where the submission carries one, else the job-level default. Absent when neither is known.","example":4096}},"required":["qasm"]},"CalibrationResponse":{"description":"Calibration snapshot for a quantum backend at a specific point in time. The shape of the calibration payload depends on the backend technology (e.g. gate-based vs. neutral-atom).","properties":{"backend_id":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"},"calibrated_at":{"type":"string","format":"date-time","description":"Instant at which the calibration was effective on the backend."},"calibration":{"type":"object"}}},"RuntimeMinutesAllowance":{"properties":{"id":{"type":"string"},"provider":{"type":"string","description":"Quantum cloud provider exposing the backend. Distinct from HardwareProvider — a hardware vendor can be offered via multiple clouds.","enum":["AZURE","AWS","IBM","QRYD","QUDORA","QUANDELA","IQM","KIPU","AQT"],"example":"IBM"},"backend_ids":{"type":"array","items":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"}},"allocated_seconds":{"type":"integer","format":"int64"},"consumed_seconds":{"type":"integer","format":"int64"},"remaining_seconds":{"type":"integer","format":"int64"},"limit_reached":{"type":"boolean"}}},"RuntimeMinutesResponse":{"properties":{"allowances":{"type":"array","items":{"$ref":"#/components/schemas/RuntimeMinutesAllowance"}}}},"PageResponseJob":{"description":"A single page of results from a paginated listing endpoint.","properties":{"content":{"type":"array","description":"Items contained in the current page, in the page's order.","items":{"$ref":"#/components/schemas/Job"}},"page":{"type":"integer","format":"int32","description":"Zero-based index of the current page.","example":0},"size":{"type":"integer","format":"int32","description":"Maximum number of items per page requested by the caller.","example":20},"total_elements":{"type":"integer","format":"int64","description":"Total number of items across all pages matching the query.","example":137},"total_pages":{"type":"integer","format":"int32","description":"Total number of pages available given the page size.","example":7}}},"NormalizedMemoryResult":{"description":"Per-shot measurement values. Same little-endian bit-order contract as the normalized counts endpoint: decoding a memory entry yields the bitstring of the shot it belongs to.","properties":{"memory":{"type":"array","description":"Per-shot measurement values as Qiskit hex strings, one entry per shot.","example":["0x0","0x3"],"items":{"type":"string","description":"Per-shot measurement values as Qiskit hex strings, one entry per shot.","example":"[\"0x0\",\"0x3\"]"}},"qubits":{"type":"integer","format":"int32","description":"Number of qubits measured.","example":2},"shots":{"type":"integer","format":"int32","description":"Total number of measurement shots.","example":100}}},"AvailabilityTimes":{"description":"A scheduled availability window during which the backend accepts jobs.","properties":{"granularity":{"type":"string","description":"Cadence/granularity of the window (e.g. DAILY, WEEKLY).","example":"DAILY"},"start":{"type":"string","description":"Start time of the availability window in the provider's reference timezone."},"end":{"type":"string","description":"End time of the availability window in the provider's reference timezone."}}},"Backend":{"description":"A quantum backend available for job execution, including its hardware characteristics and access model.","properties":{"id":{"type":"string","description":"Unique backend identifier","example":"aws.sim.sv1"},"internal_id":{"type":"string","description":"Provider-internal identifier for the backend (for debugging and cross-referencing with upstream APIs).","example":"ibm_brisbane"},"provider":{"type":"string","description":"Quantum cloud provider exposing the backend. Distinct from HardwareProvider — a hardware vendor can be offered via multiple clouds.","enum":["AZURE","AWS","IBM","QRYD","QUDORA","QUANDELA","IQM","KIPU","AQT"],"example":"IBM"},"hardware_provider":{"type":"string","description":"Hardware manufacturer of the backend. May differ from the cloud Provider that exposes the backend (e.g. IonQ hardware accessed via AWS Braket).","enum":["IONQ","RIGETTI","OQC","AWS","AZURE","IBM","QUERA","IQM","QUDORA","QUANTINUUM","QUANDELA","KIPU","AQT"],"example":"IBM"},"name":{"type":"string","description":"Machine-friendly short name of the backend.","example":"ibm_brisbane"},"display_name":{"type":"string","description":"Human-readable display name shown in UIs.","example":"IBM Brisbane"},"type":{"type":"string","description":"Category of a backend. QPU is a physical quantum processing unit; SIMULATOR emulates quantum execution on classical hardware; ANNEALER is a quantum annealer.","enum":["QPU","SIMULATOR","ANNEALER","UNKNOWN"],"example":"QPU"},"technology":{"type":"string","description":"Underlying quantum technology of a backend.","enum":["SUPERCONDUCTING","TRAPPED_ION","PHOTONIC","NEUTRAL_ATOMS","UNKNOWN"],"example":"SUPERCONDUCTING"},"queue_size":{"type":"integer","format":"int32","description":"Current number of jobs queued on the backend.","example":12},"updated_at":{"type":"string","format":"date","description":"Date of the last backend configuration update.","example":"2026-04-17"},"access_type":{"type":"string","description":"Access/billing model of a backend. `pay-per-use` backends charge per job/shot; `token-based` backends require a pre-allocated provider-side token quota; `prepaid` backends are billed against a pre-purchased contingent; `free` backends incur no charges.","enum":["PAY_PER_USE","TOKEN_BASED","PREPAID","FREE"],"example":"pay-per-use"},"documentation":{"$ref":"#/components/schemas/Documentation"},"configuration":{"$ref":"#/components/schemas/Configuration"},"availability":{"type":"array","description":"Scheduled availability windows of the backend (for provider-restricted time slots).","items":{"$ref":"#/components/schemas/AvailabilityTimes"}},"has_calibration":{"type":"boolean","description":"Whether calibration data is available for this backend (see GET /backends/{id}/calibration).","example":true}}},"BackendSdk":{"description":"Third-party SDK a backend is reachable from, with the documentation URL to open for setup details.","properties":{"type":{"type":"string","description":"Third-party SDK a backend is reachable from. Each value carries a documentation URL the client can open for setup details.","enum":["QHUB","PENNYLANE","QISKIT","QISKIT_RUNTIME","QOQO","PERCEVAL"],"example":"QISKIT"},"url":{"type":"string","description":"URL to the documentation for reaching this backend from the SDK.","example":"https://docs.hub.kipu-quantum.com/sdk-quantum"}}},"Configuration":{"description":"Static hardware configuration of a quantum backend: gates, qubit count, connectivity, shot range, supported I/O formats.","properties":{"gates":{"type":"array","description":"Native gates exposed by the backend.","items":{"$ref":"#/components/schemas/Gate"}},"operations":{"type":"array","description":"Non-gate operations supported by the backend (e.g. measure, reset, barrier).","example":["measure","reset","barrier"],"items":{"type":"string","description":"Non-gate operations supported by the backend (e.g. measure, reset, barrier).","example":"[\"measure\",\"reset\",\"barrier\"]"},"uniqueItems":true},"qubit_count":{"type":"integer","format":"int32","description":"Total number of qubits available on the backend.","example":127},"connectivity":{"$ref":"#/components/schemas/Connectivity"},"shots_range":{"$ref":"#/components/schemas/ShotsRange"},"total_shots_range":{"$ref":"#/components/schemas/ShotsRange"},"max_pubs_per_job":{"type":"integer","format":"int32","description":"Maximum number of PUBs (circuit plus its observables, parameters and shots) accepted per job. Absent where the backend's own provider limit governs and the platform adds none.","example":1},"supported_input_formats":{"type":"array","description":"Input circuit formats the backend can accept.","items":{"type":"string","description":"Format of a quantum job's input circuit. Must match the target backend's `supportedInputFormats`. OpenQASM flavors cover most gate-based backends; QIR is used for hardware-agnostic IR; provider-specific formats (braket.*, iqm.*, ionq.*, qiskit, qoqo, perceval) target a single backend family.","enum":["OPEN_QASM_V1","OPEN_QASM_V2","OPEN_QASM_V3","QIR_V1","BRAKET_OPEN_QASM_V3","BRAKET_AHS_PROGRAM","IONQ_CIRCUIT_V1","QISKIT_QPY","QOQO","PERCEVAL","IQM_JOB_INPUT_V1","AQT_JOB_INPUT_V1"],"example":"openqasm.v3"},"uniqueItems":true},"output_format":{"type":"string","description":"Format in which job results are returned.","enum":["MICROSOFT_QUANTUM_RESULTS_V2","IONQ_RESULT_V1"]},"memory_result_supported":{"type":"boolean","description":"Whether the backend can return per-shot memory (not just aggregated counts).","example":true},"photonic_properties":{"$ref":"#/components/schemas/PhotonicProperties"},"qubits":{"type":"array","items":{"$ref":"#/components/schemas/Qubit"}},"instructions":{"type":"array","items":{"type":"string"},"uniqueItems":true}}},"Connectivity":{"description":"Qubit connectivity of a backend. Either `fullyConnected=true` (all qubits coupled) or an explicit coupling graph.","properties":{"fully_connected":{"type":"boolean","description":"True if any qubit can directly interact with any other qubit without SWAPs. If true, the `graph` field is omitted.","example":false},"graph":{"type":"object","additionalProperties":{"type":"array","description":"Qubit coupling map as an adjacency list keyed by qubit id. Only populated when fullyConnected=false.","example":{"0":["1","2"],"1":["0","3"]},"items":{"type":"string","description":"Qubit coupling map as an adjacency list keyed by qubit id. Only populated when fullyConnected=false.","example":"{\"0\":[\"1\",\"2\"],\"1\":[\"0\",\"3\"]}"}},"description":"Qubit coupling map as an adjacency list keyed by qubit id. Only populated when fullyConnected=false.","example":{"0":["1","2"],"1":["0","3"]}}}},"Documentation":{"description":"Documentation, geographic location, and SDK metadata associated with a backend.","properties":{"description":{"type":"string","description":"Short prose description of the backend shown in UIs.","example":"127-qubit superconducting processor hosted on IBM Quantum."},"url":{"type":"string","description":"URL to the provider's documentation for this backend."},"status_url":{"type":"string","description":"URL to a live status page / dashboard for this backend.","example":"https://status.ibm.com/quantum"},"location":{"type":"string","description":"Geographic region where the backend hardware is physically located (ISO 3166 country code or region name).","example":"Ehningen, DE"},"sdks":{"type":"array","description":"SDKs reachable against this backend.","items":{"$ref":"#/components/schemas/BackendSdk"}},"eu_sovereignty":{"type":"boolean","description":"True if the backend is operated under EU data-sovereignty guarantees.","example":true},"eu_sovereignty_disclaimer":{"type":"string","description":"Disclaimer text clarifying the scope / limits of the EU-sovereignty claim.","example":"Operated within the EU; management-plane traffic may transit non-EU regions."}}},"Gate":{"description":"A quantum gate exposed by a backend, with a flag indicating whether it is native to the hardware.","properties":{"name":{"type":"string","description":"Name of the gate in the backend's instruction set.","example":"cx"},"native_gate":{"type":"boolean","description":"True if the gate is implemented directly on hardware; false if compiled down from native gates.","example":true}}},"PhotonicProperties":{"description":"Photonic-specific capability bounds for a backend (number of modes and photons).","properties":{"max_modes":{"type":"integer","format":"int32","description":"Maximum number of optical modes usable per circuit.","example":12},"min_modes":{"type":"integer","format":"int32","description":"Minimum number of optical modes required per circuit.","example":1},"max_photons":{"type":"integer","format":"int32","description":"Maximum number of photons usable per circuit.","example":6},"min_photons":{"type":"integer","format":"int32","description":"Minimum number of photons required per circuit.","example":1}}},"Qubit":{"description":"A qubit exposed by a backend, identified by its provider-side id.","properties":{"id":{"type":"string","description":"Qubit identifier in the backend's addressing scheme. Typically a zero-based integer string.","example":"0"}}},"ShotsRange":{"description":"Allowed range of shots. The axis it applies to - per PUB or across the whole job - is stated by the field that carries it. Either bound may be absent, which declares no limit on that side.","properties":{"min":{"type":"integer","format":"int64","description":"Minimum number of shots accepted. Absent where the backend declares no minimum.","example":1},"max":{"type":"integer","format":"int64","description":"Maximum number of shots accepted. Absent where the backend declares no maximum.","example":100000}}},"BackendStateInfo":{"description":"Live operational state of a quantum backend: availability and queue metrics.","properties":{"status":{"type":"string","description":"Operational state of a quantum backend. ONLINE: processing submitted jobs and accepting new ones. PAUSED: accepting jobs but not currently processing them. OFFLINE: not accepting new jobs (e.g. maintenance). RETIRED: no longer available. UNKNOWN: state could not be determined.","enum":["UNKNOWN","ONLINE","PAUSED","OFFLINE","RETIRED"],"example":"ONLINE"},"queue_avg_time":{"type":"integer","format":"int64","description":"Average queue waiting time in seconds, as reported by the provider.","example":45},"queue_size":{"type":"integer","format":"int32","description":"Current number of jobs queued on the backend.","example":12}}},"AQT_JobInput":{"type":"object","description":"Job input for AQT quantum computers. Represents quantum circuits in the AQT native circuit format.","example":{"job_type":"quantum_circuit","payload":{"circuits":[{"repetitions":100,"number_of_qubits":2,"quantum_circuit":[{"operation":"RZ","qubit":0,"phi":0.5},{"operation":"R","qubit":1,"phi":0.5,"theta":1.0},{"operation":"RXX","qubits":[0,1],"theta":0.5},{"operation":"MEASURE"}]}]}},"properties":{"job_type":{"type":"string","default":"quantum_circuit","enum":["quantum_circuit"]},"label":{"type":"string"},"payload":{"type":"object","properties":{"circuits":{"type":"array","items":{"type":"object","properties":{"repetitions":{"type":"integer","maximum":2000,"minimum":1},"number_of_qubits":{"type":"integer","maximum":12,"minimum":1},"quantum_circuit":{"type":"array","items":{"type":"object"}}},"required":["number_of_qubits","quantum_circuit","repetitions"]},"maxItems":50,"minItems":1}},"required":["circuits"]}},"required":["payload"],"title":"AQT Job Input","x-fern-type-name":"AQT_JobInput"},"AzureIonq_JobInput":{"type":"object","description":"Azure IonQ input schema for job input (based on IonQ API Qis v0.4 qis-circuit reference)","example":{"gateset":"qis","qubits":2,"circuit":[{"gate":"h","targets":[0]},{"gate":"x","targets":[1],"controls":[0]}]},"externalDocs":{"description":"IonQ API v0.4 create-job qis-circuit","url":"https://docs.ionq.com/api-reference/v0.4/jobs/create-job#qis-circuit"},"properties":{"circuit":{"type":"array","description":"List of gates to apply","items":{"type":"object","description":"A gate application to qubit in the circuit","properties":{"type":{"type":"string","description":"Gate name","enum":["x","y","z","rx","ry","rz","h","s","si","v","vi","t","ti","not","cnot","swap","xx","yy","zz","pauliExp"]},"targets":{"type":"array","description":"Qubit indices the gate is applied to","items":{"type":"integer"}},"controls":{"type":"array","description":"Optional control-qubit indices","items":{"type":"integer"}}},"required":["targets"]}},"gateset":{"type":"string","description":"Which gateset to apply","enum":["qis"]},"qubits":{"type":"integer","description":"Total number of qubits in the circuit"},"registers":{"type":"object","additionalProperties":{"type":"array","items":{"type":"integer"}},"description":"Registers to use in your circuit. Each register is a list of qubit indices (starting from zero)."}},"required":["circuit","gateset","qubits"],"title":"IonQ Qis 0.4 Job Input","x-fern-type-name":"AzureIonq_JobInput"},"Quandela_JobInput":{"type":"object","additionalProperties":true,"description":"Perceval circuit data to execute on a Quandela backend.","example":{"circuit":":PCVL:zip:eJyzCnAO87FydM4sSi7NLLFydfTM9K9wdI7MSg52DsyO9AkNCtWu9DANqMj3cg50hAPP9GwvBM+xEKgWwXPxRFNrEegYlu/jDNTj7mzoGhZQnGEWYkF1ewCY7jxM","command":"sample_count","input_state":":PCVL:BasicState:|1,1>","job_context":null,"max_samples":1000,"max_shots":1000,"parameters":{"min_detected_photons":2}},"externalDocs":{"description":"Quandela Cloud API Documentation","url":"https://api.cloud.quandela.com/api/docs/"},"title":"Quandela Job Input","x-fern-type-name":"Quandela_JobInput"},"Aws_AHS_JobInput":{"type":"object","additionalProperties":false,"description":"Analog Hamiltonian Simulation program for AWS Braket AHS backends (e.g. QuEra Aquila). ","example":{"ahs_program":{"setup":{"ahs_register":{"sites":[[0,0],[0,4.0E-6],[4.0E-6,0]],"filling":[1,1,1]}},"hamiltonian":{"drivingFields":[{"amplitude":{"time_series":{"values":[0.0,1.57E7,1.57E7,0.0],"times":[0.0,1.0E-6,2.0E-6,3.0E-6]},"pattern":"uniform"},"phase":{"time_series":{"values":[0.0,0.0],"times":[0.0,3.0E-6]},"pattern":"uniform"},"detuning":{"time_series":{"values":[-5.4E7,5.4E7],"times":[0.0,3.0E-6]},"pattern":"uniform"}}],"localDetuning":[{"magnitude":{"time_series":{"values":[0.0,2.5E7,2.5E7,0.0],"times":[0.0,1.0E-6,2.0E-6,3.0E-6]},"pattern":[0.8,1.0,0.9]}}]}}},"externalDocs":{"description":"AWS Braket Analog Hamiltonian Simulation","url":"https://docs.aws.amazon.com/braket/latest/developerguide/braket-quera-submitting-analog-program-aquila.html"},"properties":{"ahs_program":{"type":"object","description":"The Analog Hamiltonian Simulation program definition","properties":{"setup":{"type":"object","description":"Register setup defining atom positions and filling","properties":{"ahs_register":{"type":"object","description":"Atomic register configuration with 2D coordinates and filling pattern","properties":{"sites":{"type":"array","description":"List of [x, y] coordinate pairs for atom trap positions in meters","items":{"type":"array","items":{"type":"number"},"maxItems":2,"minItems":2}},"filling":{"type":"array","description":"List of 0 or 1 values indicating which sites are filled with atoms","items":{"type":"integer","enum":[0,1]}}},"required":["filling","sites"]}},"required":["ahs_register"]},"hamiltonian":{"type":"object","description":"Hamiltonian definition with driving fields and optional local detuning","properties":{"drivingFields":{"type":"array","description":"Global driving fields applied to all atoms, each with amplitude, phase, and detuning time series","items":{"type":"object","properties":{"amplitude":{"type":"object","description":"Rabi frequency Omega(t) in rad/s","properties":{"time_series":{"type":"object","properties":{"values":{"type":"array","items":{"type":"number"}},"times":{"type":"array","items":{"type":"number"}}},"required":["times","values"]},"pattern":{"description":"Spatial pattern — \"uniform\" for global application, or array of per-site numeric factors","oneOf":[{"type":"string"},{"type":"array","items":{"type":"number"}}]}},"required":["pattern","time_series"]},"phase":{"type":"object","description":"Phase phi(t) in radians","properties":{"time_series":{"type":"object","properties":{"values":{"type":"array","items":{"type":"number"}},"times":{"type":"array","items":{"type":"number"}}},"required":["times","values"]},"pattern":{"description":"Spatial pattern — \"uniform\" for global application, or array of per-site numeric factors","oneOf":[{"type":"string"},{"type":"array","items":{"type":"number"}}]}},"required":["pattern","time_series"]},"detuning":{"type":"object","description":"Global detuning Delta_global(t) in rad/s","properties":{"time_series":{"type":"object","properties":{"values":{"type":"array","items":{"type":"number"}},"times":{"type":"array","items":{"type":"number"}}},"required":["times","values"]},"pattern":{"description":"Spatial pattern — \"uniform\" for global application, or array of per-site numeric factors","oneOf":[{"type":"string"},{"type":"array","items":{"type":"number"}}]}},"required":["pattern","time_series"]}},"required":["amplitude","detuning","phase"]}},"localDetuning":{"type":"array","description":"Local detuning patterns applied to individual atoms","items":{"type":"object","properties":{"magnitude":{"type":"object","description":"Local detuning magnitude with time series and per-site pattern","properties":{"time_series":{"type":"object","properties":{"values":{"type":"array","items":{"type":"number"}},"times":{"type":"array","items":{"type":"number"}}},"required":["times","values"]},"pattern":{"description":"Spatial pattern — \"uniform\" for global application, or array of per-site numeric factors","oneOf":[{"type":"string"},{"type":"array","items":{"type":"number"}}]}},"required":["pattern","time_series"]}},"required":["magnitude"]}}},"required":["drivingFields"]}},"required":["hamiltonian","setup"]}},"required":["ahs_program"],"title":"AWS AHS Job Input","x-fern-type-name":"Aws_AHS_JobInput"},"Qudora_JobInput":{"type":"object","additionalProperties":false,"description":"Quantum program input for Qudora backends","externalDocs":{"description":"Qudora API Documentation","url":"https://api.qudora.com/docs"},"properties":{"qasm":{"description":"Quantum program source code in OpenQASM 2.0 or OpenQASM 3.0 format. An array submits one program per PUB, up to the backend's declared maximum; the job's shots and language apply to every one of them.","example":"OPENQASM 2.0; include \"qelib1.inc\"; qreg q[2]; creg c[2]; h q[0]; cx q[0], q[1]; measure q -> c;","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"},"maxItems":500,"minItems":1}]}},"required":["qasm"],"title":"Qudora Job Input","x-fern-type-name":"Qudora_JobInput"},"Kipu_JobInput":{"type":"object","additionalProperties":false,"description":"Quantum program input for Kipu backends.","properties":{"qasm":{"type":"string","description":"Quantum program source code in OpenQASM 2.0 format.","example":"OPENQASM 2.0; include \"qelib1.inc\"; qreg q[2]; creg c[2]; h q[0]; cx q[0], q[1]; measure q -> c;"}},"required":["qasm"],"title":"Kipu Job Input","x-fern-type-name":"Kipu_JobInput"},"IBM_JobInput":{"description":"Input schema for IBM Quantum jobs. Supports SamplerV2, EstimatorV2, and NoiseLearner primitives.","oneOf":[{"type":"object","additionalProperties":false,"description":"The input for a SamplerV2 API call","properties":{"pubs":{"type":"array","description":"Primitive Unit Blocs of data. Each PUB is of the form (Circuit, Parameters, Shots) where the circuit is required, parameters should be passed only for parametrized circuits, and shots is optional","items":{"anyOf":[{"type":"array","items":{"type":"object"},"minItems":1,"x-prefixItems":[{"description":"The quantum circuit in QASM string or base64-encoded QPY format. See https://docs.quantum.ibm.com/api/qiskit/qpy for more details on QPY."},{"description":"A dictionary of the parameter values. The keys are the names of the parameters, and the values are the actual parameter values."},{"description":"The number of shots to use in this PUB","type":["integer","null"]}]},{"type":"object","description":"The quantum circuit in QASM string or base64-encoded QPY format. See https://docs.quantum.ibm.com/api/qiskit/qpy for more details on QPY.","not":{"type":"array","items":{"type":"object"}}}]},"minItems":1},"options":{"type":"object","additionalProperties":false,"description":"Options for V2 Sampler","properties":{"default_shots":{"type":"integer","description":"The default number of shots to use if none are specified in the PUBs","minimum":0},"dynamical_decoupling":{"type":"object","description":"Suboptions for dynamical decoupling","properties":{"enable":{"type":"boolean","description":"Whether to enable DD as specified by the other options in this class"},"sequence_type":{"type":"string","description":"Which dynamical decoupling sequence to use","enum":["XX","XpXm","XY4"]},"extra_slack_distribution":{"type":"string","description":"Where to put extra timing delays due to rounding issues","enum":["middle","edges"]},"scheduling_method":{"type":"string","description":"Whether to schedule gates as soon as ('asap') or as late as ('alap') possible","enum":["alap","asap"]},"skip_reset_qubits":{"type":"boolean","description":"Whether to insert DD on idle periods that immediately follow initialized/reset qubits."}}},"execution":{"type":"object","description":"Execution options","properties":{"init_qubits":{"type":"boolean","description":"Whether to reset the qubits to the ground state for each shot"},"rep_delay":{"type":"number","description":"The delay between a measurement and the subsequent quantum circuit"},"meas_type":{"type":"object","description":"How to process and return measurement results","enum":["classified","kerneled","avg_kerneled"]}}},"twirling":{"type":"object","description":"Twirling options","properties":{"enable_gates":{"type":"boolean","description":"Whether to apply 2-qubit gate twirling"},"enable_measure":{"type":"boolean","description":"Whether to apply measurement twirling"},"num_randomizations":{"description":"The number of random samples to use when twirling or performing sampled mitigation","oneOf":[{"type":"integer","minimum":1},{"type":"object","enum":["auto"]}]},"shots_per_randomization":{"description":"The number of shots to run for each random sample","oneOf":[{"type":"integer","minimum":1},{"type":"object","enum":["auto"]}]},"strategy":{"type":"string","description":"The strategy of twirling qubits in identified layers of 2-qubit twirled gates","enum":["active","active-circuit","active-accum","all"]}}},"simulator":{"type":"object","additionalProperties":false,"description":"Simulator options","properties":{"noise_model":{"type":"object","description":"Noise model for the simulator."},"seed_simulator":{"type":"integer","description":"Random seed to control sampling."},"coupling_map":{"type":"array","description":"Directed coupling map to target in mapping.","items":{"type":"object"}},"basis_gates":{"type":"array","description":"List of basis gate names to unroll to.","items":{"type":"string"}}}},"experimental":{"type":"object","description":"Experimental options."}}},"shots":{"type":"integer","description":"Default number of shots which applies to all PUBs without shots. This overrides default_shots specified in options.","minimum":0},"support_qiskit":{"type":"boolean","description":"If True, returns a Qiskit-style output, meant to be parsed using the runtime result decoder, or resort to returning pure JSON results (resulting in larger objects)"},"version":{"type":"object","description":"For SamplerV2, version should always be 2","enum":[2]}},"required":["pubs"],"title":"SamplerV2 input"},{"type":"object","additionalProperties":false,"description":"The input for an EstimatorV2 API call","properties":{"pubs":{"type":"array","description":"Primitive Unit Blocs of data. Each PUB is of the form (Circuit, Observables, Parameters, Precision) where the circuit and observables are required, parameters should be passed only for parametrized circuits, and precision is optional","items":{"type":"array","items":{"type":"object"},"minItems":2,"x-prefixItems":[{"description":"The quantum circuit in QASM string or base64-encoded QPY format. See https://docs.quantum.ibm.com/api/qiskit/qpy for more details on QPY."},{"description":"One or more observables, which can be given as strings."},{"description":"The parameter values. The keys are the names of the parameters, and the values are the actual parameter values."},{"description":"The precision for this specific PUB","type":["number","null"]}]},"minItems":1},"options":{"type":"object","additionalProperties":false,"description":"Options for V2 Estimator","properties":{"seed_estimator":{"type":"integer","description":"Seed used to control sampling"},"default_precision":{"type":"number","description":"The default precision to use if a precision is not specified for a PUB or for this job.","minimum":0},"default_shots":{"type":"integer","description":"The total number of shots to use per circuit per configuration. If set, this value overrides default_precision.","minimum":0},"dynamical_decoupling":{"type":"object","description":"Suboptions for dynamical decoupling","properties":{"enable":{"type":"boolean","description":"Whether to enable dynamical decoupling."},"sequence_type":{"type":"string","description":"Which dynamical decoupling sequence to use","enum":["XX","XpXm","XY4"]},"extra_slack_distribution":{"type":"string","description":"Where to put extra timing delays due to rounding issues","enum":["middle","edges"]},"scheduling_method":{"type":"string","description":"Whether to schedule gates as soon as ('asap') or as late as ('alap') possible","enum":["alap","asap"]},"skip_reset_qubits":{"type":"boolean","description":"Whether to insert DD on idle periods that immediately follow initialized/reset qubits."}}},"resilience":{"type":"object","description":"Advanced resilience options to fine tune the resilience strategy","properties":{"measure_mitigation":{"type":"boolean","description":"Whether to enable measurement error mitigation method"},"measure_noise_learning":{"type":"object","description":"Additional measurement noise learning options","properties":{"num_randomizations":{"type":"integer","description":"The number of random circuits to draw for the measurement learning experiment","minimum":1},"shots_per_randomization":{"description":"The number of shots to use for the learning experiment per random circuit.","oneOf":[{"type":"integer","minimum":1},{"type":"object","enum":["auto"]}]}}},"zne_mitigation":{"type":"boolean","description":"Whether to turn on Zero Noise Extrapolation error mitigation method"},"zne":{"type":"object","description":"Additional zero noise extrapolation mitigation options","properties":{"noise_factors":{"type":"object","description":"A list of floats representing noise factors to use for noise amplification"},"extrapolator":{"description":"Extrapolator(s) to try (in order) for extrapolating to zero noise","oneOf":[{"type":"array","items":{"type":"string","enum":["linear","exponential","double_exponential","polynomial_degree_1","polynomial_degree_2","polynomial_degree_3","polynomial_degree_4","polynomial_degree_5","polynomial_degree_6","polynomial_degree_7","fallback"]}},{"type":"string","enum":["linear","exponential","double_exponential","polynomial_degree_1","polynomial_degree_2","polynomial_degree_3","polynomial_degree_4","polynomial_degree_5","polynomial_degree_6","polynomial_degree_7","fallback"]}]},"amplifier":{"type":"string","description":"Technique to use for amplifying noise.","enum":["gate_folding","gate_folding_front","gate_folding_back","pea"]},"extrapolated_noise_factors":{"type":"object","description":"A list of floats representing noise factors to evaluate the fit extrapolation models at, or the string 'auto' to set them based on the noise factors."}}},"pec_mitigation":{"type":"boolean","description":"Whether to turn on Probabilistic Error Cancellation error mitigation method"},"pec":{"type":"object","description":"Additional probabilistic error cancellation mitigation options","properties":{"max_overhead":{"description":"The maximum circuit sampling overhead allowed","oneOf":[{"type":"number","minimum":0}]},"noise_gain":{"description":"The amount by which to scale the noise","oneOf":[{"type":"number","minimum":0},{"type":"object","enum":["auto"]}]}}},"layer_noise_learning":{"type":"object","description":"Layer noise learning options","properties":{"max_layers_to_learn":{"type":"integer","description":"The max number of unique layers to learn","minimum":0},"shots_per_randomization":{"type":"integer","description":"The total number of shots to use per random learning circuit","minimum":1},"num_randomizations":{"type":"integer","description":"The number of random circuits to use per learning circuit configuration","minimum":1},"layer_pair_depths":{"type":"object","description":"A list of integers representing the circuit depths (measured in number of pairs) to use in learning experiments"}}},"layer_noise_model":{"type":"object","description":"A NoiseLearnerResult or a sequence of LayerError objects, or null to invoke a noise-learning stage when necessary."}}},"execution":{"type":"object","description":"Execution options","properties":{"init_qubits":{"type":"boolean","description":"Whether to reset the qubits to the ground state for each shot"},"rep_delay":{"type":"number","description":"The delay between a measurement and the subsequent quantum circuit"}}},"twirling":{"type":"object","description":"Twirling options","properties":{"enable_gates":{"type":"boolean","description":"Whether to apply 2-qubit gate twirling"},"enable_measure":{"type":"boolean","description":"Whether to apply measurement twirling"},"num_randomizations":{"description":"The number of random samples to use when twirling or performing sampled mitigation","oneOf":[{"type":"integer","minimum":1},{"type":"object","enum":["auto"]}]},"shots_per_randomization":{"description":"The number of shots to run for each random sample","oneOf":[{"type":"integer","minimum":1},{"type":"object","enum":["auto"]}]},"strategy":{"type":"string","description":"The strategy of twirling qubits in identified layers of 2-qubit twirled gates","enum":["active","active-circuit","active-accum","all"]}}},"simulator":{"type":"object","additionalProperties":false,"description":"Simulator options","properties":{"noise_model":{"type":"object","description":"Noise model for the simulator."},"seed_simulator":{"type":"integer","description":"Random seed to control sampling."},"coupling_map":{"type":"array","description":"Directed coupling map to target in mapping.","items":{"type":"object"}},"basis_gates":{"type":"array","description":"List of basis gate names to unroll to.","items":{"type":"string"}}}},"experimental":{"type":"object","description":"Experimental options."}}},"resilience_level":{"type":"integer","description":"How much resilience to build against errors","enum":[0,1,2]},"precision":{"type":"number","description":"Default precision level which applies to all PUBs without precision. This overrides default_precision and default_shots specified in options.","minimum":0},"support_qiskit":{"type":"boolean","description":"If True, returns a qiskit-style output, meant to be parsed using the runtime result decoder, or resort to returning pure JSON results (resulting in larger objects)"},"version":{"type":"object","description":"For EstimatorV2, version should always be 2","enum":[2]}},"required":["pubs"],"title":"EstimatorV2 input"},{"type":"object","additionalProperties":false,"description":"The input for a NoiseLearner API call","properties":{"circuits":{"type":"array","description":"The circuits on which to perform noise learning.","items":{"type":"object","description":"The quantum circuit in QASM string or base64-encoded QPY format. See https://docs.quantum.ibm.com/api/qiskit/qpy for more details on QPY.","minItems":1,"not":{"type":"array","items":{"type":"object"}}}},"options":{"type":"object","additionalProperties":false,"description":"NoiseLearner options","properties":{"simulator":{"type":"object","additionalProperties":false,"description":"Simulator options","properties":{"noise_model":{"type":"object","description":"Noise model for the simulator."},"seed_simulator":{"type":"integer","description":"Random seed to control sampling."},"coupling_map":{"type":"array","description":"Directed coupling map to target in mapping.","items":{"type":"object"}},"basis_gates":{"type":"array","description":"List of basis gate names to unroll to.","items":{"type":"string"}}}},"max_layers_to_learn":{"type":"integer","description":"The max number of unique layers to learn","minimum":0},"shots_per_randomization":{"type":"integer","description":"The total number of shots to use per random learning circuit","minimum":1},"num_randomizations":{"type":"integer","description":"The number of random circuits to use per learning circuit configuration","minimum":1},"layer_pair_depths":{"type":"array","description":"The circuit depths (measured in number of pairs) to use in learning experiments","items":{"type":"integer","minimum":0}},"twirling_strategy":{"type":"string","description":"The strategy of twirling qubits in identified layers of 2-qubit twirled gates","enum":["active","active-circuit","active-accum","all"]},"experimental":{"type":"object","description":"Experimental options."},"support_qiskit":{"type":"boolean","description":"If True, returns a Qiskit-style output, meant to be parsed using the runtime result decoder, or resort to returning pure JSON results (resulting in larger objects)"}}},"version":{"type":"object","description":"For NoiseLearner, should always be 2","enum":[2]}},"required":["circuits"],"title":"NoiseLearner input"}],"title":"IBM Quantum Job Input","x-fern-type-name":"IBM_JobInput"},"IQM_JobInput":{"type":"object","additionalProperties":false,"description":"Job input for IQM quantum computers. Represents quantum circuits in the IQM native circuit format.","properties":{"circuits":{"type":"array","description":"List of quantum circuits to execute. Every circuit in one job must measure the same qubits, which IQM enforces server-side.","items":{"type":"object","additionalProperties":false,"description":"A quantum circuit in IQM native format.","properties":{"name":{"type":"string","description":"Name of the circuit."},"instructions":{"type":"array","description":"List of circuit instructions (quantum gates and operations).","items":{"type":"object","additionalProperties":false,"description":"A single instruction (gate or operation) in a circuit.","properties":{"name":{"type":"string","description":"Name of the gate or operation (e.g., 'prx', 'cz', 'measure')."},"args":{"type":"object","additionalProperties":true,"description":"Arguments for a gate, such as rotation angles.","properties":{"angle_t":{"type":"number","description":"Rotation angle in units of full turns (t = turns, so 0.5 = pi radians)."},"phase_t":{"type":"number","description":"Phase angle in units of full turns."},"key":{"type":"string","description":"Measurement key."}}},"implementation":{"type":"string","description":"Implementation hint for this instruction."},"qubits":{"type":"array","description":"List of qubit names this instruction acts on.","items":{"type":"string"}},"metadata":{"type":"object","additionalProperties":true,"description":"Arbitrary metadata for this instruction."}},"required":["name"]}},"args":{"type":"object","additionalProperties":true,"description":"Arguments for the circuit, such as rotation angles.","properties":{"angle_t":{"type":"number","description":"Rotation angle in units of full turns (t = turns, so 0.5 = pi radians)."},"phase_t":{"type":"number","description":"Phase angle in units of full turns."},"key":{"type":"string","description":"Measurement key."}}},"implementation":{"type":"string","description":"Implementation hint for the circuit."},"qubits":{"type":"array","description":"List of qubit names used in this circuit.","items":{"type":"string"}},"metadata":{"type":"object","additionalProperties":true,"description":"Arbitrary metadata for the circuit."}},"required":["instructions","name"]},"maxItems":100,"minItems":1},"calibration_set_id":{"type":"string","format":"uuid","description":"ID of the calibration set to use. If not provided, the latest calibration set is used."},"qubit_mapping":{"type":"array","description":"Mapping of logical qubit names to physical qubit names.","items":{"type":"object","additionalProperties":false,"description":"Mapping from a logical qubit name to a physical qubit name.","properties":{"logical_name":{"type":"string","description":"Logical qubit name used in the circuit."},"physical_name":{"type":"string","description":"Physical qubit name on the device."}},"required":["logical_name","physical_name"]}},"custom_settings":{"type":"object","additionalProperties":true,"description":"Custom settings for the job execution."},"dd_mode":{"type":"string","default":"disabled","description":"Dynamical decoupling mode.","enum":["disabled","enabled"]},"dd_strategy":{"type":"object","additionalProperties":false,"description":"Dynamical decoupling strategy configuration.","properties":{"gate_sequences":{"type":"array","description":"Gate sequences for dynamical decoupling.","items":{"type":"array","items":{"type":"string"}}},"merge_contiguous_waits":{"type":"boolean","default":true,"description":"Whether to merge contiguous wait periods."},"skip_leading_wait":{"type":"boolean","default":true,"description":"Whether to skip the leading wait period."},"skip_trailing_wait":{"type":"boolean","default":true,"description":"Whether to skip the trailing wait period."},"target_qubits":{"type":"array","description":"Target qubits for dynamical decoupling.","items":{"type":"string"}}}},"heralding_mode":{"type":"string","default":"none","description":"Heralding mode for the job. When set to 'zeros', a heralding measurement is performed before each circuit execution.","enum":["none","zeros"]},"move_gate_frame_tracking_mode":{"type":"string","default":"full","description":"Frame tracking mode for MOVE gates.","enum":["full","no_detuning_correction","none"]},"move_validation_mode":{"type":"string","default":"strict","description":"Validation mode for MOVE gate sequences.","enum":["strict","allow_prx","none"]},"max_circuit_duration_over_t2":{"type":"number","description":"Maximum ratio of circuit duration to T2 time. If set, circuits exceeding this ratio are rejected."},"active_reset_cycles":{"type":"integer","description":"Number of active reset cycles to perform before each circuit execution.","minimum":0}},"required":["circuits"],"title":"IQM Job Input","x-fern-type-name":"IQM_JobInput"},"Aws_QASM_3_JobInput":{"type":"object","additionalProperties":false,"description":"Quantum program input for AWS Braket OpenQASM 3.0 backends","externalDocs":{"description":"AWS Braket OpenQASM 3.0","url":"https://docs.aws.amazon.com/braket/latest/developerguide/braket-openqasm.html"},"properties":{"qasm":{"description":"Quantum program source code in OpenQASM 3.0 format. An array submits a program set: one task carrying one program per PUB, up to the backend's declared maximum.","example":"OPENQASM 3.0; bit[2] b; qubit[2] q; h q[0]; cnot q[0], q[1]; b[0] = measure q[0]; b[1] = measure q[1];","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"},"maxItems":100,"minItems":1}]}},"required":["qasm"],"title":"AWS QASM 3.0 Job Input","x-fern-type-name":"Aws_QASM_3_JobInput"},"AQT_JobInputParams":{"type":"object","description":"AQT takes no extra input parameters.","properties":{},"title":"AQT Job Input Parameters","x-fern-type-name":"AQT_JobInputParams"},"AzureIonq_JobInputParams":{"additionalProperties":false,"description":"This backend does not provide input parameters","properties":{},"title":"Azure Ionq Job Parameters","x-fern-type-name":"AzureIonq_JobInputParams"},"Quandela_JobInputParams":{"type":"object","additionalProperties":false,"description":"Optional job parameters for Quandela backends. These are combined with the input payload before submission to the Quandela Cloud API.","properties":{"pcvl_version":{"type":"string","description":"Perceval library version used to generate the payload"},"platform_name":{"type":"string","description":"Name of the target platform (e.g. sim:belenos)"},"process_id":{"type":"string","description":"Identifier of the process to run"},"job_group_name":{"type":"string","description":"Name of the job group for batch submissions"},"max_duration":{"type":"integer","description":"Maximum duration in seconds for the job execution"}},"title":"Quandela Job Input Parameters","x-fern-type-name":"Quandela_JobInputParams"},"Aws_AHS_JobInputParams":{"type":"object","additionalProperties":false,"description":"Job parameters for AWS Braket AHS backends. AHS programs do not use additional input parameters.","properties":{},"title":"AWS AHS Job Input Parameters","x-fern-type-name":"Aws_AHS_JobInputParams"},"Qudora_JobInputParams":{"type":"object","additionalProperties":false,"description":"Optional job parameters for Qudora backends","properties":{"backend_settings":{"type":"object","additionalProperties":true,"description":"Provider-specific backend settings passed through to the Qudora API"},"language":{"type":"string","default":"OpenQASM2","description":"The quantum circuit language to use for the job","enum":["OpenQASM2","OpenQASM3"]}},"title":"Qudora Job Input Parameters","x-fern-type-name":"Qudora_JobInputParams"},"Kipu_JobInputParams":{"type":"object","additionalProperties":false,"description":"Optional job parameters for Kipu backends. Mirrors the qsim simulator's POST /jobs body fields beyond `input`/`shots`, flattened: SDK users set tuning options directly instead of nesting them under `options`.","properties":{"mode":{"type":"string","default":"sample","description":"Simulation mode. `sample` returns measurement counts (uses `shots`); `statevector` returns the full final state vector; `amplitudes` returns amplitudes for the bitstrings listed in `bitstrings`.","enum":["sample","statevector","amplitudes"]},"max_fused_gate_size":{"type":"integer","description":"qsim's max-fused-gate optimization. Higher = potentially faster but more memory. Default 2.","minimum":1},"cpu_threads":{"type":"integer","description":"OpenMP thread count for the simulation. `0` (default) lets qsim pick.","minimum":0},"bitstrings":{"type":"array","description":"Bitstrings to compute amplitudes for. Required when `mode` is `amplitudes`, ignored otherwise. Each entry is a binary string of length `num_qubits` (e.g. `\"00\"`, `\"11\"`).","items":{"type":"string","pattern":"^[01]+$"}}},"title":"Kipu Job Input Parameters","x-fern-type-name":"Kipu_JobInputParams"},"IBM_JobInputParams":{"type":"object","additionalProperties":false,"description":"Input parameters for IBM Quantum job creation","properties":{"program_id":{"type":"string","description":"The ID of the Qiskit Runtime program to run (e.g. 'sampler', 'estimator')","maxLength":10000,"minLength":1},"max_execution_time":{"type":"integer","description":"Maximum execution time in seconds","minimum":1},"log_level":{"type":"string","description":"Log level for the job execution","enum":["critical","error","warning","info","debug"]}},"required":["program_id"],"title":"IBM Job Input Parameters","x-fern-type-name":"IBM_JobInputParams"},"IQM_JobInputParams":{"type":"object","additionalProperties":false,"description":"This backend does not support additional input parameters.","properties":{},"title":"IQM Job Input Parameters","x-fern-type-name":"IQM_JobInputParams"},"Aws_QASM_3_JobInputParams":{"type":"object","additionalProperties":false,"description":"Optional job parameters for AWS Braket QASM backends","properties":{"disable_qubit_rewiring":{"type":"boolean","default":false,"description":"If true, automatic qubit rewiring is disabled, i.e. Braket is not allowed to re-map logical qubits to physical qubits on the backend device to optimize circuit execution. If not specified, the default is false.","example":false},"qubit_count":{"type":"number","description":"Number of qubits used in the circuit. If not specified, it is tried to infer it from the circuit.","minimum":1}},"title":"AWS QASM Job Parameters","x-fern-type-name":"Aws_QASM_3_JobInputParams"}},"securitySchemes":{"apiKey":{"type":"apiKey","name":"X-Auth-Token","in":"header"},"oauth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"https://login.hub.kipu-quantum.com/realms/planqk/protocol/openid-connect/token","refreshUrl":"https://login.hub.kipu-quantum.com/realms/planqk/protocol/openid-connect/token","scopes":{"profile":""}}}}}}}