Updating the client state

The following examples shows you how to update the client state for the API client calling the Devices API.

REST

To update the client state, call devices.clientStates.patch() with a customer name and ClientState object.

Python HTTP

The following example shows a helper function to update the client state using the Python HTTP library:

  """Sample script to demonstrate the use of the Update method in the Devices API.""" 
 import 
  
 json 
 import 
  
 pprint 
 from 
  
 six.moves 
  
 import 
 urllib 
 import 
  
 google.auth.transport.requests 
 from 
  
 google.oauth2 
  
 import 
 service_account 
 SCOPES 
 = 
 [ 
 'https://www.googleapis.com/auth/cloud-identity.devices' 
 ] 
 BASE_URL 
 = 
 'https://cloudidentity.googleapis.com/v1/' 
 # Change this to the location of the service account key 
 SA_FILE 
 = 
 '' 
 # Enter the administrator to call as here. 
 ADMIN_EMAIL 
 = 
 '' 
 # Enter the Device User Resource Name. You can get this from the value 
 # of the name field in the results of a List method call 
 RESOURCE_NAME 
 = 
 '' 
 # Enter the Client ID, which is in the format <customer-id>-<somestring> 
 # Where 'customer-id' is your customer id. 
 CLIENT_ID 
 = 
 '' 
 if 
 not 
 SA_FILE 
 : 
 print 
 ( 
 'Please specify the location of the service account key file' 
 ) 
 if 
 not 
 ADMIN_EMAIL 
 : 
 print 
 ( 
 'Please specify the email of the administrator to call as' 
 ) 
 if 
 not 
 RESOURCE_NAME 
 : 
 print 
 ( 
 'Please specify the Device User Resource Name to be approved' 
 ) 
 if 
 not 
 CLIENT_ID 
 : 
 print 
 ( 
 'Please specify your client id, which is your customer-id, followed by' 
 ' a hyphen, folowed by any string' 
 ) 
 if 
 not 
 SA_FILE 
 or 
 not 
 ADMIN_EMAIL 
 or 
 not 
 RESOURCE_NAME 
 or 
 not 
 CLIENT_ID 
 : 
 exit 
 ( 
 - 
 1 
 ) 
 def 
  
 create_delegated_credentials 
 ( 
 user_email 
 ): 
 credentials 
 = 
 service_account 
 . 
 Credentials 
 . 
 from_service_account_file 
 ( 
 SA_FILE 
 , 
 scopes 
 = 
 [ 
 'https://www.googleapis.com/auth/cloud-identity.devices' 
 ]) 
 delegated_credentials 
 = 
 credentials 
 . 
 with_subject 
 ( 
 user_email 
 ) 
 return 
 delegated_credentials 
 ###################################################################### 
 # AUTHENTICATE the service account and retrieve an oauth2 access token 
 request 
 = 
 google 
 . 
 auth 
 . 
 transport 
 . 
 requests 
 . 
 Request 
 () 
 dc 
 = 
 create_delegated_credentials 
 ( 
 ADMIN_EMAIL 
 ) 
 dc 
 . 
 refresh 
 ( 
 request 
 ) 
 print 
 ( 
 'Access token: ' 
 + 
 dc 
 . 
 token 
 + 
 ' 
 \n 
 ' 
 ) 
 ############################### 
 # Update the client state 
 header 
 = 
 { 
 'authorization' 
 : 
 'Bearer ' 
 + 
 dc 
 . 
 token 
 , 
 'Content-Type' 
 : 
 'application/json' 
 } 
 body 
 = 
 { 
 'customId' 
 : 
 'abcd' 
 , 
 'assetTags' 
 : 
 [ 
 'efgh' 
 , 
 'ijkl' 
 ], 
 'healthScore' 
 : 
 'GOOD' 
 , 
 'scoreReason' 
 : 
 'all ok' 
 , 
 'managed' 
 : 
 'MANAGED' 
 , 
 'complianceState' 
 : 
 'COMPLIANT' 
 } 
 update_clientstate_url 
 = 
 BASE_URL 
 + 
 RESOURCE_NAME 
 + 
 '/clientStates/' 
 + 
 CLIENT_ID 
 + 
 '?updateMask=' 
 + 
 'customId,assetTags,healthScore,scoreReason,managed,complianceState' 
 serialized_body 
 = 
 json 
 . 
 dumps 
 ( 
 body 
 , 
 separators 
 = 
 ( 
 ',' 
 , 
 ':' 
 )) 
 request 
 = 
 urllib 
 . 
 request 
 . 
 Request 
 ( 
 update_clientstate_url 
 , 
 serialized_body 
 , 
 headers 
 = 
 header 
 ) 
 request 
 . 
 get_method 
 = 
 lambda 
 : 
 'PATCH' 
 try 
 : 
 contents 
 = 
 urllib 
 . 
 request 
 . 
 urlopen 
 ( 
 request 
 ) 
 except 
 urllib 
 . 
 error 
 . 
 HTTPError 
 as 
 e 
 : 
 if 
 e 
 . 
 code 
 == 
 404 
 : 
 print 
 ( 
 'The resource was not found' 
 ) 
 else 
 : 
 print 
 ( 
 'Permission denied. Did you provide the correct client id?' 
 ) 
 exit 
 ( 
 - 
 1 
 ) 
 update_response 
 = 
 json 
 . 
 loads 
 ( 
 contents 
 . 
 read 
 ()) 
 pp 
 = 
 pprint 
 . 
 PrettyPrinter 
 ( 
 indent 
 = 
 4 
 ) 
 pp 
 . 
 pprint 
 ( 
 update_response 
 [ 
 'response' 
 ]) 
 
Create a Mobile Website
View Site in Mobile | Classic
Share by: