Stay organized with collections
Save and categorize content based on your preferences.
This page describes how to programmatically poll the long-running
operation resources returned by methods in
Service Infrastructure APIs that take a substantial amount of time to complete, such
as
service.rollouts.create.
After an operation is done, the done field will be set to true.
To poll an operation, repeatedly invoke the
operations.get
method with a recommended 10 seconds backoff until the operation is done:
# This is an example of getting a pending `Operation` resource.gcurlhttps://servicemanagement.googleapis.com/v1/operations/rollouts.endpointsapis.appspot.com:2016-07-16r2{"name":"operations/rollouts.endpointsapis.appspot.com:2016-07-16r2","metadata":{"@type":"type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata","resourceNames":["services/endpointsapis.appspot.com/rollouts/2016-07-16r2"],"steps":[{"description":"update Service Controller","status":"In_PROGRESS"}],"progressPercentage":0,"startTime":"2016-07-16T00:56:55.737Z",}"response":{"@type":"type.googleapis.com/google.api.servicemanagement.v1.Rollout","rolloutId":"2016-07-16r2","createTime":"2016-07-16T00:56:55.724Z","serviceSelectionStrategy":{"serviceConfigIds":["2016-07-16r1"]},"serviceName":"endpointsapis.appspot.com"}# This is an example of getting a done `Operation` resource.gcurlhttps://servicemanagement.googleapis.com/v1/operations/rollouts.endpointsapis.appspot.com:2016-07-16r2{"name":"operations/rollouts.endpointsapis.appspot.com:2016-07-16r2","metadata":{"@type":"type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata","resourceNames":["services/endpointsapis.appspot.com/rollouts/2016-07-16r2"],"steps":[{"description":"update Service Controller","status":"Done"}],"progressPercentage":100,"startTime":"2016-07-16T00:56:55.737Z",}"done":true,"response":{"@type":"type.googleapis.com/google.api.servicemanagement.v1.Rollout","rolloutId":"2016-07-16r2","createTime":"2016-07-16T00:56:55.724Z","serviceSelectionStrategy":{"serviceConfigIds":["2016-07-16r1"]},"serviceName":"endpointsapis.appspot.com"}
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[],[],null,["# Polling Long Running Operations\n\nThis page describes how to programmatically poll the long-running\n[operation](/service-infrastructure/docs/glossary#operation) resources returned by methods in\nService Infrastructure APIs that take a substantial amount of time to complete, such\nas\n[`service.rollouts.create`](/service-infrastructure/docs/service-management/reference/rest/v1/services.rollouts/create).\nAfter an operation is done, the `done` field will be set to true.\n| **Note:** While you typically interact with long-running [operations](/service-infrastructure/docs/service-management/reference/rest/v1/operations) as a result of calling methods in the Service Management API, the Service Consumer Management API also provides methods for interacting with long-running operation resources, such as [`operations.get`](/service-infrastructure/docs/service-consumer-management/reference/rest/v1/operations/get).\n\nTo poll an operation, repeatedly invoke the\n[`operations.get`](/service-infrastructure/docs/service-management/reference/rest/v1/operations/get)\nmethod with a recommended 10 seconds backoff until the operation is done: \n\n # This is an example of getting a pending `Operation` resource.\n gcurl https://servicemanagement.googleapis.com/v1/operations/rollouts.endpointsapis.appspot.com:2016-07-16r2\n {\n \"name\": \"operations/rollouts.endpointsapis.appspot.com:2016-07-16r2\",\n \"metadata\": {\n \"@type\": \"type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata\",\n \"resourceNames\": [\n \"services/endpointsapis.appspot.com/rollouts/2016-07-16r2\"\n ],\n \"steps\": [\n {\n \"description\": \"update Service Controller\",\n \"status\": \"In_PROGRESS\"\n }\n ],\n \"progressPercentage\": 0,\n \"startTime\": \"2016-07-16T00:56:55.737Z\",\n }\n \"response\": {\n \"@type\": \"type.googleapis.com/google.api.servicemanagement.v1.Rollout\",\n \"rolloutId\": \"2016-07-16r2\",\n \"createTime\": \"2016-07-16T00:56:55.724Z\",\n \"serviceSelectionStrategy\": {\n \"serviceConfigIds\": [\n \"2016-07-16r1\"\n ]\n },\n \"serviceName\": \"endpointsapis.appspot.com\"\n }\n\n # This is an example of getting a done `Operation` resource.\n gcurl https://servicemanagement.googleapis.com/v1/operations/rollouts.endpointsapis.appspot.com:2016-07-16r2\n {\n \"name\": \"operations/rollouts.endpointsapis.appspot.com:2016-07-16r2\",\n \"metadata\": {\n \"@type\": \"type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata\",\n \"resourceNames\": [\n \"services/endpointsapis.appspot.com/rollouts/2016-07-16r2\"\n ],\n \"steps\": [\n {\n \"description\": \"update Service Controller\",\n \"status\": \"Done\"\n }\n ],\n \"progressPercentage\": 100,\n \"startTime\": \"2016-07-16T00:56:55.737Z\",\n }\n \"done\": true,\n \"response\": {\n \"@type\": \"type.googleapis.com/google.api.servicemanagement.v1.Rollout\",\n \"rolloutId\": \"2016-07-16r2\",\n \"createTime\": \"2016-07-16T00:56:55.724Z\",\n \"serviceSelectionStrategy\": {\n \"serviceConfigIds\": [\n \"2016-07-16r1\"\n ]\n },\n \"serviceName\": \"endpointsapis.appspot.com\"\n }"]]