# Code Samples for the Chrome Management Profiles API

Visit
[Chrome Management Profiles API](https://developers.google.com/chrome/management/guides/profiles_api)
for an overview of API features.

All the requests shown in this page use the following variables:

- `$TOKEN` - OAuth 2.0 token
- `$CUSTOMER` - ID of the customer or literal `my_customer`

## List Managed Profiles

To list the managed profiles, use the
`/profiles` endpoint. You can control pagination of the results using the
`pageSize` and `pageToken` parameters. Use `orderBy` to specify the order of
the results. Specify a `filter` to further narrow down the results. A read mask
can be specified with the `fields` query parameter, note that efficiency can be
improved by listing profiles with a read mask that excludes `reportingData`
field.

#### Request

      curl -X GET \
      -H "Authorization: Bearer $TOKEN" \
      "https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/profiles?pageSize=2&orderBy=lastPolicySyncTime&filter=osPlatformType=WINDOWS+AND+affiliationState=PROFILE_ONLY&fields=chromeBrowserProfiles.name,chromeBrowserProfiles.profileId,chromeBrowserProfiles.profilePermanentId,chromeBrowserProfiles.displayName,chromeBrowserProfiles.userEmail,chromeBrowserProfiles.lastActivityTime,chromeBrowserProfiles.osPlatformType,chromeBrowserProfiles.policyCount,chromeBrowserProfiles.reportingData,chromeBrowserProfiles.identityProvider,chromeBrowserProfiles.affiliationState"

#### Response

    {
      "chromeBrowserProfiles": [
        {
          "name": "customers/<customerId>/profiles/<profilePermanentId1>",
          "profileId": "<profileId1>",
          "profilePermanentId": "<profilePermanentId1>",
          "displayName": "My profile 1",
          "userEmail": "<userEmail1>",
          "lastActivityTime": "2024-04-23T22:05:44.214362Z",
          "osPlatformType": "WINDOWS",
          "policyCount": "2",
          "reportingData": [
            {
              "browserExecutablePath": "<executablePath1>",
              "profilePath": "<profilePath1>",
              "extensionData":[
                {
                  "extensionId": "ghbmnnjooekpmoecnnnilnnbdlolhkhi",
                  "version": "1.76.1",
                  "name": "Google Docs Offline",
                  "extensionType": "EXTENSION",
                  "homepageUri": "https://chrome.google.com/webstore/detail/ghbmnnjooekpmoecnnnilnnbdlolhkhi",
                  "installationType": "NORMAL",
                  "isDisabled": true,
                  "isWebstoreExtension": true,
                  "manifestVersion": 3
                }
              ],
              "policyData":[
                {
                  "source": "MACHINE_PLATFORM",
                  "name": "AutoSelectCertificateForUrls",
                  "value": "\"********\""
                },
                {
                  "source": "USER_CLOUD",
                  "name": "BrowserThemeColor",
                  "value": "\"#00FF00\""
                }
              ]
            }
          ],
          "identityProvider": "GOOGLE_IDENTITY_PROVIDER",
          "affiliationState": "PROFILE_ONLY"
        },
        {
          "name": "customers/<customerId>/profiles/<profilePermanentId2>",
          "profileId": "<profileId2>",
          "profilePermanentId": "<profilePermanentId2>",
          "displayName": "My profile 2",
          "userEmail": "<userEmail2>",
          "lastActivityTime": "2024-04-23T22:05:44.214362Z",
          "osPlatformType": "WINDOWS",
          "policyCount": "1",
          "reportingData": [
            {
              "browserExecutablePath": "<executablePath2>",
              "profilePath": "<profilePath2>",
              "policyData":[
                {
                  "source": "USER_CLOUD",
                  "name": "CloudProfileReportingEnabled",
                  "value": "true"
                }
              ]
            }
          ],
          "identityProvider": "GOOGLE_IDENTITY_PROVIDER",
          "affiliationState": "PROFILE_ONLY"
        }
      ],
      "next_page_token": "<nextPageToken>",
      "total_size": "120"
    }

## Retrieve a Managed Profile

To retrieve a managed profile, use the
`/profiles/{profile_permanent_id}` endpoint. A read mask
can be specified with the `fields` parameter.

#### Request

      curl -X GET \
      -H "Authorization: Bearer $TOKEN" \
      "https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/profiles/<profilePermanentId1>?fields=chromeBrowserProfiles.name,chromeBrowserProfiles.profileId,chromeBrowserProfiles.profilePermanentId,chromeBrowserProfiles.displayName,chromeBrowserProfiles.userEmail,chromeBrowserProfiles.lastActivityTime,chromeBrowserProfiles.osPlatformType,chromeBrowserProfiles.policyCount,chromeBrowserProfiles.reportingData,chromeBrowserProfiles.identityProvider,chromeBrowserProfiles.affiliationState"

#### Response

    {
      "name": "customers/<customerId>/profiles/<profilePermanentId1>",
      "profileId": "<profileId1>",
      "profilePermanentId": "<profilePermanentId1>",
      "displayName": "My profile 1",
      "userEmail": "<userEmail1>",
      "lastActivityTime": "2024-04-23T22:05:44.214362Z",
      "osPlatformType": "WINDOWS",
      "policyCount": "2",
      "reportingData": [
        {
          "browserExecutablePath": "<executablePath1>",
          "profilePath": "<profilePath1>",
          "extensionData":[
            {
              "extensionId": "ghbmnnjooekpmoecnnnilnnbdlolhkhi",
              "version": "1.76.1",
              "name": "Google Docs Offline",
              "extensionType": "EXTENSION",
              "homepageUri": "https://chrome.google.com/webstore/detail/ghbmnnjooekpmoecnnnilnnbdlolhkhi",
              "installationType": "NORMAL",
              "isDisabled": true,
              "isWebstoreExtension": true,
              "manifestVersion": 3
            }
          ],
          "policyData":[
            {
              "source": "MACHINE_PLATFORM",
              "name": "AutoSelectCertificateForUrls",
              "value": "\"********\""
            },
            {
              "source": "USER_CLOUD",
              "name": "BrowserThemeColor",
              "value": "\"#00FF00\""
            }
          ]
        }
      ],
      "identityProvider": "GOOGLE_IDENTITY_PROVIDER",
      "affiliationState": "PROFILE_ONLY"
    }

## Delete the Data Collected from a Managed Profile

To delete the data collected from a managed profile, use the
`/profiles/{profile_permanent_id}` endpoint.

#### Request

      curl -X DELETE \
      -H "Authorization: Bearer $TOKEN" \
      "https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/profiles/<profilePermanentId1>"

## Issue a Remote Command to a Managed Profile

To issue a remote command to a managed profile, use the
`/profiles/{profile_permanent_id}/commands/` endpoint.

#### Request

      curl -X POST \
      -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type: application/json" \
      --data '{"command_type":"clearBrowsingData", "payload":{clearCache:true, clearCookies:true}}' \
      "https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/profiles/<profilePermanentId1>/commands"

#### Response

    {
      "name": "customers/<customerId>/profiles/<profilePermanentId1>/commands/<commandId1>",
      "commandType": "clear_browsing_data",
      "payload": {
        "clear_cache": true,
        "clear_cookies": true
      },
      "commandState": "PENDING",
      "issueTime": "2025-04-05T16:43:37.668Z",
      "validDuration": "86400s"
    }

## Retrieve a Remote Command Issued to a Managed Profile

To retrieve a remote command issued to a managed profile, use the
`/profiles/{profile_permanent_id}/commands/{command_id}` endpoint.

#### Request

      curl -X GET \
      -H "Authorization: Bearer $TOKEN" \
      "https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/profiles/<profilePermanentId1>/commands/<commandId1>"

#### Response

    {
      "name": "customers/<customerId>/profiles/<profilePermanentId1>/commands/<commandId1>",
      "commandType": "clear_browsing_data",
      "payload": {
        "clear_cache": true,
        "clear_cookies": true
      },
      "commandState": "EXECUTED_BY_CLIENT",
      "commandResult": {
        "resultType": "SUCCESS",
        "clientExecutionTime": "2025-04-05T14:01:51.082Z"
      },
      "issueTime": "2025-04-05T14:01:49.914Z",
      "validDuration": "86400s"
    }

## List Remote Commands Issued to a Managed Profile

To list remote commands issued to a managed profile, use the
`/profiles/{profile_permanent_id}/commands` endpoint.

#### Request

      curl -X GET \
      -H "Authorization: Bearer $TOKEN" \
      "https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/profiles/<profilePermanentId1>/commands?pageSize=2"

#### Response

    {
      "chromeBrowserProfileCommands": [
        {
          "name": "customers/<customerId>/profiles/<profilePermanentId1>/commands/<commandId1>",
          "commandType": "clear_browsing_data",
          "payload": {
            "clear_cache": true,
            "clear_cookies": true
          },
          "commandState": "EXECUTED_BY_CLIENT",
          "commandResult": {
            "resultType": "SUCCESS",
            "clientExecutionTime": "2025-04-05T14:01:51.082Z"
          },
          "issueTime": "2025-04-05T14:01:49.914Z",
          "validDuration": "86400s"
        },
        {
          "name": "customers/<customerId>/profiles/<profilePermanentId1>/commands/<commandId2>",
          "commandType": "clear_browsing_data",
          "payload": {
            "clear_cache": true,
            "clear_cookies": false
          },
          "commandState": "EXECUTED_BY_CLIENT",
          "commandResult": {
            "resultType": "SUCCESS",
            "clientExecutionTime": "2025-04-05T14:02:59.981Z"
          },
          "issueTime": "2025-04-05T14:02:59.192Z",
          "validDuration": "86400s"
        }
      ],
      "nextPageToken": "<nextPageToken>",
      "totalSize": "10"
    }