{"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":"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":"array","items":{"type":"string"}}},{"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}":{"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 quantum workloads (jobs and sessions) with pagination.","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":"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"}}}},"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":"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"}}}},"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-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.","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.","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}/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":[]}]}},"/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. 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. 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":{"type":"object"}}}},"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.","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.","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}/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"],"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":"Set of tags attached to the session at creation time for categorization or filtering.","example":["experiment","prod"],"items":{"type":"string","description":"Set of tags attached to the session at creation time for categorization or filtering.","example":"[\"experiment\",\"prod\"]"},"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"},"final_not_aborted":{"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},"tags":{"type":"array","description":"Set of tags to identify or categorize the session","example":["experiment","prod"],"items":{"type":"string","description":"Set of tags to identify or categorize the session","example":"[\"experiment\",\"prod\"]"},"uniqueItems":true},"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"],"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"],"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"],"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}$"},"runtime":{"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 requested for the job execution.","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"}}},"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":{"azure.ionq.simulator":"#/components/schemas/AzureIonq_JobInput","quandela.sim.altair":"#/components/schemas/Quandela_JobInput","quandela.qpu.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.sim.dm1":"#/components/schemas/Aws_QASM_3_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"}},"oneOf":[{"$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"],"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":{"azure.ionq.simulator":"#/components/schemas/AzureIonq_JobInputParams","quandela.sim.altair":"#/components/schemas/Quandela_JobInputParams","quandela.qpu.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.sim.dm1":"#/components/schemas/Aws_QASM_3_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"}},"oneOf":[{"$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"}]},"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"]},"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"],"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"}}},"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"}}},"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"}}},"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}}},"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, access model, and costs.","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"],"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"],"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.","enum":["PAY_PER_USE","TOKEN_BASED"],"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}}},"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"},"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"],"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":{"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":["PLANQK","PENNYLANE","QISKIT","QISKIT_RUNTIME","QOQO","PERCEVAL"],"example":"QISKIT"}},"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 per job on a backend.","properties":{"min":{"type":"integer","format":"int64","description":"Minimum number of shots accepted per job.","example":1},"max":{"type":"integer","format":"int64","description":"Maximum number of shots accepted per job.","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}}},"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":{"type":"string","description":"Quantum program source code in OpenQASM 2.0 or OpenQASM 3.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":"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"}}}]}},"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"]}]}},"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.","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"]},"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":{"type":"string","description":"Quantum program source code in OpenQASM 3.0 format","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];"}},"required":["qasm"],"title":"AWS QASM 3.0 Job Input","x-fern-type-name":"Aws_QASM_3_JobInput"},"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:altair)"},"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":""}}}}}}}