Manage Cloud Anchors outside of your ARCore app using the ARCore Cloud Anchor Management API.
Getting started
Example operations
- List all Cloud Anchors
- Update a Cloud Anchor’s time to live to the maximum time allowed
- Delete Cloud Anchors
Authorization
Create a service account key in the Google Cloud Platform console and generate an OAuth2 token to authorize Cloud Anchor management API calls.
-
In the navigation menu of the Google Cloud Platform console , go to APIs & Services > Credentials .
-
Select the desired project, then click Create Credentials > Service account .
-
Under Service account details , type a name for the new account, then click Create .
-
On the Service account permissions page, go to the Select a role dropdown. Select Service Accounts > Service Account Token Creator , then click Continue .
-
On the Grant users access to this service account page, click Done . This takes you back to APIs & Services > Credentials .
-
On the Credentials page, scroll down to the Service Accounts section and click the name of the account you just created.
-
On the Service account details page, scroll down to the Keys section and select Add Key > Create new key .
-
Select JSON as the key type and click Create . This downloads a JSON file containing the private key to your machine. Store the downloaded JSON key file in a secure location.
Generate an OAuth2 token
arcore.management
is the OAuth scope for the Cloud Anchors Management API. By
default, oauth2l works on a token cache. The fetch
command retrieves the same
token. Use oauth2l
to generate an OAuth2
token for authorization:
oauth2l fetch --json creds.json arcore.management
To generate a new token, add a --cache=""
option to the fetch
command.
oauth2l fetch --cache="" --json creds.json arcore.management
Alternatively, call oauth2l reset
and call the fetch
command again.
oauth2l reset
oauth2l fetch --json creds.json arcore.management
List all Cloud Anchors
Get the first page of Cloud Anchors, optionally sorted by expire_time
, create_time
, or last_localize_time
.
Request:
export BEARER_TOKEN = ` ( oauth2l fetch -- json creds . json arcore . management ) `
curl - H "Authorization: Bearer $BEARER_TOKEN" \
"https://arcore.googleapis.com/v1beta2/management/anchors?page_size=50&order_by=last_localize_time %20d esc"
Response:
{
"anchors": [
{
"name": "anchors/ua-a1cc84e4f11b1287d289646811bf54d1",
"createTime": "...",
"expireTime": "...",
"lastLocalizeTime": "...",
"maximumExpireTime": "..."
},
…
{
"name": "anchors/ua-41a3d0233471917875159f6f3c25ea0e",
"createTime": "...",
"expireTime": "...",
"lastLocalizeTime": "...",
"maximumExpireTime": "..."
}
],
nextPageToken: "some-long-string"
}
If the response comes back with a nextPageToken
, there are more anchors to
list. Use the next_page_token
query parameter on the next request to retrieve
the next set of results.
Request:
curl -H "Authorization: Bearer $BEARER_TOKEN" \
"https://arcore.googleapis.com/v1beta2/management/anchors?page_size=50&order_by=last_localize_time%20desc&next_page_token=your-next-page-token-here"
When using next_page_token
, page_size
and order_by
must be consistent
across requests. page_size
defaults to 1000
and order_by
defaults to expire_time_desc
.
Update a Cloud Anchor’s time to live to the maximum time allowed
Request a single Cloud Anchor to query its lastLocalizeTime
and maximumExpireTime
.
Request:
export BEARER_TOKEN = ` ( oauth2l fetch -- json creds . json arcore . management ) `
curl - H "Authorization: Bearer $BEARER_TOKEN" \
"https://arcore.googleapis.com/v1beta2/management/anchors/your-anchor-id-here"
Response:
{
"name": "anchors/ua-f21be53fd8ea57f0169c69fbf827f6b7",
"createTime": "2020-06-29T21:00:00Z",
"expireTime": "2020-08-28T22:00:00Z",
"lastLocalizeTime": "2020-06-29T21:00:00Z",
"maximumExpireTime": "2021-06-29T21:00:00Z"
}
Once you have the anchor, update its expireTime
to its maximumExpireTime
.
Request:
curl -H "Authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" -X "PATCH" \
"https://arcore.googleapis.com/v1beta2/management/anchors/your-anchor-id-here?updateMask=expire_time" \
-d '{ expireTime: "2021-06-29T21:00:00Z" }'
Response:
{
"name": "anchors/ua-f21be53fd8ea57f0169c69fbf827f6b7",
"createTime": "2020-06-29T21:00:00Z",
"expireTime": "2021-06-29T21:00:00Z",
"lastLocalizeTime": "2020-06-29T21:00:00Z",
"maximumExpireTime": "2021-06-29T21:00:00Z"
}
Delete Cloud Anchors
Delete a single Cloud Anchor:
export BEARER_TOKEN = ` ( oauth2l fetch -- json creds . json arcore . management ) `
curl - H "Authorization: Bearer $BEARER_TOKEN" - X "DELETE" \
"https://arcore.googleapis.com/v1beta2/management/anchors/your-anchor-id-here"
Delete a batch of Cloud Anchors:
export BEARER_TOKEN = ` ( oauth2l fetch -- json creds . json arcore . management ) `
curl - H "Authorization: Bearer $BEARER_TOKEN" - H "Content-Type: application/json" - X "POST" \
"https://arcore.googleapis.com/v1beta2/management/anchors:batchDelete" \
- d '{ names: [ "anchors/your-anchor-id-here", "anchors/your-anchor-id-here" ]}'