Skip to main content
IBM Quantum Platform

Utiliza la API de IBM Cloud Resource Controller para la gestión de instancias

Puedes utilizar la API REST de IBM Cloud® Resource Controller para obtener, crear y actualizar instancias mediante programación.

Todos los puntos finales de Resource Controller requieren que te autentifiques enviando un encabezado llamado Authorization con el token «bearer». Consulta la guía de configuración de la API REST.


Obtener una instancia

Utiliza el GET /v2/resource_instances/{crn} punto final para obtener información sobre una instancia concreta. El « CRN » debe estar codificado en « URL » en la ruta.

Además de los campos estándar de « Resource Controller », la respuesta incluye campos específicos de la física cuántica tanto parameters en como en extensions. extensions almacena los metadatos normalizados de la instancia, mientras que parameters solo almacena la última solicitud de modificación de la instancia. parametersPor lo tanto, deberías leer «de» extensions en lugar de «».

El extensions objeto incluye los siguientes campos:

  • instance_limit_seconds — Número entero, o null. El límite de tiempo de uso de la instancia. Consulta «Establecer límites de asignación de instancias ».
  • usage_allocation_seconds — Número entero, o null. El tiempo asignado a esta instancia, que utiliza el programador de reparto equitativo para determinar la prioridad de la cola. Consulta «Establecer límites de asignación de instancias ».
  • backends — Matriz de cadenas. La lista de nombres de backends permitidos para esta instancia. ["ANY"] significa que todos los backends del plan están disponibles (es la opción predeterminada). [] significa que no hay backends disponibles.
Es posible que el campo «backends» esté desactualizado

Es posible que el backends campo del extensions objeto esté desactualizado. Esto puede ocurrir cuando el servicio de asistencia de IBM Quantum realiza cambios en tu cuenta que afectan a las instancias. Por ejemplo, cuando se elimina un backend de una cuenta, se actualiza la información backends correspondiente a la instancia, pero ese cambio aún no se refleja en la API de Resource Controller.

En su lugar, la solución provisional actual consiste en utilizar el IBM Quantum API REST del servicio de computación con el punto GET /v1/backends final. (Asegúrate de configurar el encabezado Service-CRN con la dirección CRN de tu instancia.)

El « CRN » debe estar codificado en « URL » en la ruta. Sustituye cada : por %3A y cada / por %2F. Por ejemplo, crn:v1:bluemix:... se convierte en crn%3Av1%3Abluemix%3A....

curl \
  --request GET \
  --url 'https://resource-controller.cloud.ibm.com/v2/resource_instances/<YOUR_INSTANCE_CRN_URL_ENCODED>' \
  --header 'Authorization: Bearer <YOUR_BEARER_TOKEN>'

Obtener una lista de todas las instancias

Utiliza el GET /v2/resource_instances punto final para obtener una lista de todas tus instancias. Establece el resource_id parámetro de consulta en b6049020-80f4-11eb-a0f7-e35ec9b4054f para filtrar las instancias de IBM Quantum®.

Si tu cuenta tiene varios planes y quieres filtrar por plan, establece el resource_plan_id parámetro de consulta en uno de los siguientes valores:

Plan
resource_plan_id
Premium7f666d17-7893-47d8-bf9d-2b2389fc4dfc
Flexible53bde9d3-cdbb-46f5-a98f-60ebcadf7260
Pago por uso5304b575-3cff-4455-90dc-ae4367762093
Abrir850b21a7-71de-4e53-9441-1abdd202f35d

Cada resultado incluye los mismos extensions campos que se describen en «Obtener una instancia ».

curl \
  --request GET \
  --url 'https://resource-controller.cloud.ibm.com/v2/resource_instances?resource_id=b6049020-80f4-11eb-a0f7-e35ec9b4054f' \
  --header 'Authorization: Bearer <YOUR_BEARER_TOKEN>'

Actualizar una instancia

Utiliza el PATCH /v2/resource_instances/{crn} punto final para actualizar el límite, la asignación y los backends permitidos de una instancia. El « CRN » debe estar codificado en « URL » en la ruta.

"Content-Type: application/json"Incluye un parameters objeto JSON en el cuerpo de la solicitud con los campos que quieras modificar, junto con el encabezado. Los campos omitidos no se modifican.

  • instance_limit_seconds — Número entero, o null. El límite de tiempo de uso de la instancia. Consulta «Establecer límites de asignación de instancias ».
  • usage_allocation_seconds — Número entero, o null. El tiempo asignado a esta instancia, que utiliza el programador de reparto equitativo para determinar la prioridad de la cola. Consulta «Establecer límites de asignación de instancias ». No aplicable a las instancias de pago por uso.
  • backends — Matriz de cadenas. La lista de nombres de backends permitidos para esta instancia. ["ANY"] significa que todos los backends del plan están disponibles. [] significa que no hay backends disponibles.
Incluye siempre una marca de tiempo única

La API ignora la solicitud sin avisar si parameters es idéntica a la solicitud anterior. En el parameters objeto, incluye siempre un timestamp campo con la hora actual, de modo que cada solicitud se trate como única.

La respuesta del punto final es similar a la que se obtiene al recuperar una instancia, incluyendo la forma en que gestiona el extensions objeto.

El « CRN » debe estar codificado en « URL » en la ruta. Sustituye cada : por %3A y cada / por %2F. Por ejemplo, crn:v1:bluemix:... se convierte en crn%3Av1%3Abluemix%3A....

curl \
--request PATCH \
--url 'https://resource-controller.cloud.ibm.com/v2/resource_instances/<YOUR_INSTANCE_CRN_URL_ENCODED>' \
--header 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
--header 'Content-Type: application/json' \
--data "{
    \"parameters\": {
        \"timestamp\": \"$(date -u +"%Y-%m-%dT%H:%M:%SZ")\",
        \"usage_allocation_seconds\": 220
    }
}"

Crear una nueva instancia

Utiliza el POST /v2/resource_instances punto final para crear (aprovisionar) una nueva instancia. Envía un cuerpo JSON con el encabezado "Content-Type: application/json".

Campos obligatorios:

También puedes incluir un parameters objeto para establecer valores específicos de Quantum:

  • instance_limit_seconds — Número entero, o null. El límite de tiempo de uso de la instancia. Consulta «Establecer límites de asignación de instancias ».
  • usage_allocation_seconds — Número entero, o null. El tiempo asignado a esta instancia, que utiliza el programador de reparto equitativo para determinar la prioridad de la cola. Consulta «Establecer límites de asignación de instancias ». No aplicable a las instancias de pago por uso.
  • backends — Matriz de cadenas. La lista de nombres de backends permitidos para esta instancia. ["ANY"] significa que todos los backends del plan están disponibles. [] significa que no hay backends disponibles.
curl \
  --request POST \
  --url 'https://resource-controller.cloud.ibm.com/v2/resource_instances' \
  --header 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
      "name": "my-new-instance",
      "target": "us-east",
      "resource_plan_id": "7f666d17-7893-47d8-bf9d-2b2389fc4dfc",
      "resource_group": "<YOUR_RESOURCE_GROUP_ID>",
      "parameters": {
          "instance_limit_seconds": 300,
          "usage_allocation_seconds": 220
      }
  }'

Configurar el acceso a « Qiskit Functions » en una instancia

Sigue estas instrucciones para configurar el acceso a « Qiskit Functions » en una instancia existente de « IBM Quantum Compute Service» mediante la API de « IBM Cloud » Resource Controller. Sigue las instrucciones en el orden indicado, ya que los comandos se complementan entre sí. Por ejemplo, variables como «token» y « URL » se definen en un paso y se reutilizan en pasos posteriores.

Requisitos previos

  • Una clave API de IBM Cloud (también denominada «token»). Si es necesario, crea tu clave API en el panel de control.
  • El archivo « CRN » de la instancia que deseas configurar. El CRN de la instancia aparece en la página «Instancias ».

Paso 1: Obtener un token al portador

Cambia tu clave API por un token de portador. Deberás incluir este token en el encabezado de autorización de todas las solicitudes al controlador de recursos. Ejecuta el siguiente código para generar un token de acceso:

curl --request POST \
--url 'https://iam.cloud.ibm.com/identity/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'apikey=<YOUR_API_KEY>&grant_type=urn%3Aibm%3Aparams%3Aoauth%3Agrant-type%3Aapikey'
--silent | jq .

La respuesta incluye un access_token campo, que es tu token de portador. Copia este valor.

Paso 2: Comprobar el acceso

Antes de realizar cualquier cambio, comprueba que tu token funciona y revisa la configuración actual de la instancia.

Importante

La ruta « CRN » debe codificarse manualmente con « URL » en la ruta. Sustituye cada : por %3A y cada por / %2F. Por ejemplo, se convierte crn:v1:bluemix:... en crn%3Av1%3Abluemix%3A....

curl --request GET \
--url 'https://resource-controller.cloud.ibm.com/v2/resource_instances/<YOUR_INSTANCE_CRN_URL_ENCODED>' \
--header 'Authorization: Bearer <YOUR_BEARER_TOKEN>'

Una respuesta 200 OK confirma que tu token es válido. La configuración actual de la instancia se encuentra en el campo «extensions» de la respuesta. Utiliza esto en lugar de los parámetros, que podrían estar desactualizados.

Paso 3: Consultar la configuración de las funciones a nivel de cuenta

A una instancia solo se le puede conceder acceso a aquello a lo que tiene derecho la cuenta. Antes de configurar la instancia, consulta la configuración de la cuenta para saber qué funciones, modelos de negocio y permisos puedes conceder. Esta es la fuente de referencia de los valores que enviarás en el paso 4.

Realiza una llamada a GET /accounts/{id} la API de Qiskit Runtime con tu clave API. El es {id} tu ID de cuenta sin el prefijo a/ . Puedes encontrarlo en la instancia CRN (crn:v1:bluemix:public:quantum-computing:...:a/<ACCOUNT_ID>:...).

curl --request GET \
--url 'https://quantum.cloud.ibm.com/api/v1/accounts/<ACCOUNT_ID>' \
--header 'Authorization: apikey <YOUR_API_KEY>'

Cada plan de la respuesta incluye una matriz de funciones y, si se ha configurado, un objeto custom_functions . En ellas se indican el nombre exacto, el proveedor, el modelo de negocio y los valores de los permisos que puedes conceder a una instancia incluida en ese plan.

Note

GET /accounts/{id} muestra los recursos disponibles para conceder a nivel de cuenta. GET /functions (véase «Verificar el resultado» ) muestra lo que ya se ha concedido a una instancia concreta. Utiliza el punto final de la cuenta para averiguar los valores válidos y el punto final de las funciones para confirmar el resultado.

Paso 4: Configurar el acceso a las funciones

Actualiza la instancia para conceder acceso a las funciones del catálogo y a las funciones personalizadas.

Notas importantes
  • Los valores business_model name, provider, y de las funciones deben coincidir exactamente con las entradas configuradas a nivel de cuenta (véase el paso anterior ). Los permisos deben ser un subconjunto no vacío de los permisos de la cuenta para esa función. Del mismo modo, custom_functions.permissions debe ser un subconjunto no vacío de los permisos custom_functions de la cuenta.
  • Incluye una marca de tiempo en los parámetros de cada solicitud PATCH. El controlador de datos de la aplicación « Resource Controller » deduplica las solicitudes PATCH comparando los parámetros entrantes con el último valor que almacenó. Si coinciden, la solicitud se descarta de forma silenciosa 200 OK sin llegar al servicio. Para evitarlo, incluye un valor de marca de tiempo que cambie.
curl --request PATCH \
--url 'https://resource-controller.cloud.ibm.com/v2/resource_instances/<YOUR_INSTANCE_CRN_URL_ENCODED>' \
--header 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"parameters": {
  "timestamp": "2026-06-30T00:00:00Z",
  "functions": [
    {
      "name": "<FUNCTION_NAME>",
      "provider": "<PROVIDER>",
      "business_model": "<BUSINESS_MODEL>",
      "permissions": [
        "function.read",
        "function.run",
        "function-files.read",
        "function-files.write"
      ]
    }
  ],
  "custom_functions": {
    "permissions": [
      "function-custom.write",
      "function-custom.run"
    ]
  }
}
}'

Una respuesta 200 OK indica que la operación se ha realizado con éxito. La configuración actualizada aparece en el campo «extensiones» de la respuesta.

Eliminar el acceso a las funciones

Para eliminar funciones del catálogo de una instancia, envía una solicitud PATCH con lo siguiente "functions": null:

--data '{
"parameters": {
"timestamp": "2026-06-30T00:00:01Z",
"functions": null
}
}'

Al establecer ( "functions": [] un array vacío) se borran, de forma equivalente, las funciones del catálogo. null es la forma canónica.

Funciones personalizadas

Para eliminar funciones personalizadas de una instancia, envía una solicitud PATCH con "custom_functions": null:

--data '{
"parameters": {
"timestamp": "2026-06-30T00:00:02Z",
"custom_functions": null
}
}'

Al establecer este valor, se borran también "custom_functions": {"permissions": []} las funciones personalizadas. null es la forma canónica.

Comprueba el resultado

Para confirmar que la instancia tiene la configuración correcta de « Qiskit Functions », utiliza la API « Qiskit RuntimeGET /functions » en lugar de la API « Resource Controller ». Es posible que el estado almacenado de « Resource Controller » esté desactualizado si se han producido cambios a nivel de cuenta que hayan actualizado la instancia fuera de « Resource Controller ».

curl --request GET \
--url 'https://quantum.cloud.ibm.com/api/v1/functions' \
--header 'Authorization: apikey <YOUR_API_KEY>' \
--header 'Service-CRN: <YOUR_INSTANCE_CRN>'

La respuesta enumera las funciones a las que la instancia tiene acceso actualmente.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.