Ir a la consola

Operation

Este recurso representa una operación de larga duración que es el resultado de una llamada a la API de la red.

Representación JSON

{
  "name": string,
  "metadata": {
    "@type": string,
    field1: ...,
    ...
  },
  "done": boolean,

  // Union field result can be only one of the following:
  "error": {
    object(Status)
  },
  "response": {
    "@type": string,
    field1: ...,
    ...
  }
  // End of list of possible types for union field result.
}
Campos
name

string

El nombre asignado por el servidor, que solo es único dentro del mismo servicio que originalmente lo muestra. Si utilizas la asignación HTTP predeterminada, el name tendrá el formato de operations/some/unique/name.

metadata

object

Metadatos específicos del servicio asociados con la operación. Por lo general, contiene información de progreso y metadatos comunes, como la fecha de creación. Es posible que algunos servicios no proporcionen tales metadatos. Cualquier método que muestra una operación de larga duración debe documentar el tipo de metadatos, si corresponde.

Un objeto que contiene campos de un tipo arbitrario. Un campo adicional "@type" contiene un URI que identifica el tipo. Ejemplo: { "id": 1234, "@type": "types.example.com/standard/id" }.

done

boolean

Si el valor es false, significa que la operación aún está en progreso. Si es true, la operación está completa, y ni error ni response están disponibles.

Campo de unión result. El resultado de la operación, que puede ser un error o una response válida. Si done == false, ni error ni response están configurados. Si done == true, exactamente uno de error o response está configurado. result puede ser solo una de las siguientes opciones:
error

object(Status)

El resultado de error de la operación en caso de falla o cancelación.

response

object

La respuesta normal de la operación en caso de éxito. Si el método original no muestra datos en caso de éxito, como Delete, la respuesta es google.protobuf.Empty. Si el método original es Get/Create/Update estándar, la respuesta debe ser el recurso. Para otros métodos, la respuesta debe tener el tipo XxxResponse, en la que Xxx es el nombre del método original. Por ejemplo, si el nombre del método original es TakeSnapshot(), el tipo de respuesta que se infiere es TakeSnapshotResponse.

Un objeto que contiene campos de un tipo arbitrario. Un campo adicional "@type" contiene un URI que identifica el tipo. Ejemplo: { "id": 1234, "@type": "types.example.com/standard/id" }.

Status

El tipo Status define un modelo de error lógico que es adecuado para diferentes entornos de programación, incluidas las API de REST y las API de RPC. Lo utiliza gRPC. El modelo de error está diseñado para que sea:

  • Fácil de usar y entender para la mayoría de los usuarios
  • Lo suficientemente flexible para satisfacer necesidades inesperadas

Resumen

El mensaje Status contiene tres datos: código de error, mensaje de error y detalles del error. El código de error debe ser un valor de enumeración de google.rpc.Code, pero puede aceptar códigos de errores adicionales si es necesario. El mensaje de error debe ser un mensaje en inglés dirigido al desarrollador que ayude a los desarrolladores a entender y resolver el error. Si se necesita un mensaje de error localizado orientado al usuario, coloca el mensaje localizado en los detalles del error o localízalo en el cliente. Los detalles opcionales del error pueden contener información arbitraria sobre el error. Hay un conjunto predefinido de tipos de detalles del error en el paquete google.rpc que puede utilizarse para condiciones de error comunes.

Asignación de idiomas

El mensaje Status es la representación lógica del modelo de error, pero no es necesariamente el formato de conexión real. Cuando el mensaje Status se expone en diferentes bibliotecas cliente y diferentes protocolos de conexión, puede asignarse de manera diferente. Por ejemplo, probablemente se asignará a algunas excepciones en Java, pero es más probable que se asigne a algunos códigos de error en C.

Otros usos

El modelo de error y el mensaje Status pueden utilizarse en una variedad de entornos, con o sin API, para proporcionar una experiencia de desarrollador consistente en diferentes entornos.

Los ejemplos de usos de este modelo de error incluyen lo siguiente:

  • Errores parciales. Si el servicio debe mostrar errores parciales al cliente, puede incorporar Status en la respuesta normal para indicar los errores parciales.

  • Errores de flujo de trabajo. Un flujo de trabajo típico tiene varios pasos. Cada paso puede tener un mensaje Status para los informes de errores.

  • Operaciones por lotes. Si un cliente utiliza una solicitud por lotes y una respuesta por lotes, el mensaje Status debe usarse directamente dentro de la respuesta por lotes, una para cada respuesta secundaria de error.

  • Operaciones asíncronas. Si una llamada a la API incorpora los resultados de la operación asíncrona en su respuesta, el estado de esas operaciones debe representarse directamente con el uso del mensaje Status.

  • Registros. Si algunos errores de la API se almacenan en los registros, el mensaje Status podría usarse directamente después de cualquier eliminación necesaria por razones de seguridad/privacidad.

Representación JSON

{
  "code": number,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Campos
code

number

El código de estado, que debe ser un valor de enumeración de google.rpc.Code.

message

string

Un mensaje de error dirigido al desarrollador, que debe estar en inglés. Cada mensaje de error orientado al usuario debe estar localizado y debe enviarse en el campo google.rpc.Status.details, o el cliente debe localizarlo.

details[]

object

Una lista de mensajes que contienen los detalles del error. Hay un conjunto común de tipos de mensajes para que utilicen las API.

Un objeto que contiene campos de un tipo arbitrario. Un campo adicional "@type" contiene un URI que identifica el tipo. Ejemplo: { "id": 1234, "@type": "types.example.com/standard/id" }.