コードサンプル

以下のリクエストは、Policy API を使用したポリシー管理を示しています。ご利用の前に Chrome Policy API の概要を をご覧ください。

以下に示すすべてのリクエストでは次の変数を使用します。

  • $TOKEN - OAuth 2 トークン
  • $CUSTOMER - 顧客の ID またはリテラル my_customer

プリンタ ポリシーのスキーマを一覧表示する

プリンタのポリシーにのみ関連するスキーマを一覧表示するには、filter を適用します。 Schema Service の一覧表示リクエストに追加します。ページ分けは、 pageSize パラメータと pageToken パラメータを使用して結果を出力できます。

リクエストする

  curl -X GET \
  -H "Authorization: Bearer $TOKEN" \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas?filter=chrome.printers&pageSize=2"

レスポンス

{
  "policySchemas": [
    {
      "name": "customers/C0202nabg/policySchemas/chrome.printers.AllowForUsers",
      "policyDescription": "Allows a printer for users in a given organization.",
      "additionalTargetKeyNames": [
        {
          "key": "printer_id",
          "keyDescription": "Id of printer as visible in Admin SDK printers API."
        }
      ],
      "definition": {
        "messageType": [
          {
            "name": "AllowForUsers",
            "field": [
              {
                "name": "allowForUsers",
                "number": 1,
                "label": "LABEL_OPTIONAL",
                "type": "TYPE_BOOL"
              }
            ]
          }
        ]
      },
      "fieldDescriptions": [
        {
          "field": "allowForUsers",
          "description": "Controls whether a printer is allowed for users in a given organization."
        }
      ],
      "schemaName": "chrome.printers.AllowForUsers"
    },
    {
      "name": "customers/C0202nabg/policySchemas/chrome.printers.AllowForDevices",
      "policyDescription": "Allows a printer for devices in a given organization.",
      "additionalTargetKeyNames": [
        {
          "key": "printer_id",
          "keyDescription": "Id of printer as visible in Admin SDK printers API."
        }
      ],
      "definition": {
        "messageType": [
          {
            "name": "AllowForDevices",
            "field": [
              {
                "name": "allowForDevices",
                "number": 1,
                "label": "LABEL_OPTIONAL",
                "type": "TYPE_BOOL"
              }
            ]
          }
        ]
      },
      "fieldDescriptions": [
        {
          "field": "allowForDevices",
          "description": "Controls whether a printer is allowed for devices in a given organization."
        }
      ],
      "schemaName": "chrome.printers.AllowForDevices"
    }
  ],
  "nextPageToken": "AEbDN_obE8A98T8YhIeU9VCIZhEBylLBwZRQpGu_DUug-mU4bnzcDx30UnO2xMuuImvfVpmeuXRF6VhJ4OmZpZ4H6EaRvu2qMOPxVN_u"
}

スキーマを検索する

スキーマで filter= パラメータを使用して複雑な検索クエリを作成できます。 サービスリスト リクエスト。たとえば、名前が「.」を含むスキーマを検索する場合は、 「printer」という単語を検索対象にします。適用可能な説明文に記載 次の値をフィルタ name=printers AND description=devices に追加します。

ポリシー スキーマを一覧表示する方法を学習する。

リクエストする

  curl -X GET \
  -H "Authorization: Bearer $TOKEN" \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas?filter=name=printers%20AND%20description=devices"

レスポンス

{
  "policySchemas": [
    {
      "name": "customers/C0202nabg/policySchemas/chrome.printers.AllowForDevices",
      "policyDescription": "Allows a printer for devices in a given organization.",
      "additionalTargetKeyNames": [
        {
          "key": "printer_id",
          "keyDescription": "Id of printer as visible in Admin SDK printers API."
        }
      ],
      "definition": {
        "messageType": [
          {
            "name": "AllowForDevices",
            "field": [
              {
                "name": "allowForDevices",
                "number": 1,
                "label": "LABEL_OPTIONAL",
                "type": "TYPE_BOOL"
              }
            ]
          }
        ]
      },
      "fieldDescriptions": [
        {
          "field": "allowForDevices",
          "description": "Controls whether a printer is allowed for devices in a given organization."
        }
      ],
      "schemaName": "chrome.printers.AllowForDevices"
    }
  ]
}

特定のスキーマを取得する

上記の結果には、サポートされているポリシー スキーマのリストが表示されます。各スキーマには スキーマを識別する name フィールド。将来的には 特定のスキーマを直接読み取るには、 リクエスト URL のスキーマ名を指定します。

chrome.printers.AllowForUsers スキーマの例を見てみましょう。

リクエストする

  curl -X GET \
  -H "Authorization: Bearer $TOKEN" \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas/chrome.printers.AllowForUsers"

レスポンス

{
  "name": "customers/C0202nabg/policySchemas/chrome.printers.AllowForUsers",
  "policyDescription": "Allows a printer for users in a given organization.",
  "additionalTargetKeyNames": [
    {
      "key": "printer_id",
      "keyDescription": "Id of printer as visible in Admin SDK printers API."
    }
  ],
  "definition": {
    "messageType": [
      {
        "name": "AllowForUsers",
        "field": [
          {
            "name": "allowForUsers",
            "number": 1,
            "label": "LABEL_OPTIONAL",
            "type": "TYPE_BOOL"
          }
        ]
      }
    ]
  },
  "fieldDescriptions": [
    {
      "field": "allowForUsers",
      "description": "Controls whether a printer is allowed for users in a given organization."
    }
  ],
  "schemaName": "chrome.printers.AllowForUsers"
}

上記のポリシー スキーマ レスポンスは、アプリケーションの chrome.printers.AllowForUsers ポリシー:フィールド additionalTargetKeyNames に注目してください。 このフィールドにより、ポリシーで追加の Key-Value の指定が必須になっていることがわかります。 注意する必要があります特に、このポリシーでは、常に プリンタの ID を指定します。

ポリシーの値を読み取る

特定のプリンタのポリシー chrome.printers.AllowForUsers を読み取ります。 リクエストでプリンタ ID を指定するためにフィールド additionalTargetKeys を使用していることに注目してください。

ポリシーは組織部門またはグループから読み取ることができます。

レスポンスでは、sourceKey フィールドに注目してください。 ポリシーの値の取得元である組織部門またはグループ。対象 次のような場合があります。

  • 移行元の組織部門が この組織部門でポリシーがローカルに適用されています。
  • 移行元の組織部門が 送信元の組織からポリシーが継承されていることを意味します。 単位。
  • sourceKey が存在しない場合、またはレスポンスが空の場合は、ポリシーが 顧客に対して設定されておらず、デフォルトのシステム値になっています。

Google グループの場合、sourceKey は以前アクセスされていたグループと 必要があります。

次の例は、組織部門の場合です。グループ リクエストは targetResource だけは "groups/" です。、 「orgunits/」指定します。

リクエストする

  curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        policyTargetKey: {
          targetResource: "orgunits/04fatzly4jbjho9",
          additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
        },
        policySchemaFilter: "chrome.printers.AllowForDevices"
    }' \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies:resolve"

レスポンス

{
  "resolvedPolicies": [
    {
      "targetKey": {
        "targetResource": "orgunits/03ph8a2z1xdnme9"
        "additionalTargetKeys": {"printer_id":"0gjdgxs208tpef"}
      },
      "value": {
        "policySchema": "chrome.users.AllowForDevices",
        "value": {
          "allowForDevices": true
        }
      },
      "sourceKey": {
        "targetResource": "orgunits/03ph8a2z3qhz81k"
      }
    }
  ]
}

ターゲット リソース内のすべてのエンティティは、 リクエストからの additionalTargetKeys。たとえば、additionalTargetKeys の場合、 が省略されていると、 ターゲット リソースを指定します。

複数のポリシーを読み取る

スキーマの名前空間をアスタリスクで指定(例:chrome.printers.* など)により、 特定の Namespace でこの名前空間の下にあるすべてのポリシーの値を 組織部門またはグループ。詳細: ポリシー スキーマ

次の例は、組織部門の場合です。グループ リクエストは targetResource だけは "groups/" です。、 「orgunits/」指定します。

リクエストする

  curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        policyTargetKey: {
          targetResource: "orgunits/04fatzly4jbjho9",
        },
        policySchemaFilter: "chrome.printers.*"
    }' \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies:resolve"

レスポンス

{
  "resolvedPolicies": [
    {
      "targetKey": {
        "targetResource": "orgunits/04fatzly4jbjho9",
        "additionalTargetKeys": {
          "printer_id": "0gjdgxs0xd59y1"
        }
      },
      "value": {
        "policySchema": "chrome.printers.AllowForUsers",
        "value": {
          "allowForUsers": false
        }
      }
    },
    {
      "targetKey": {
        "targetResource": "orgunits/04fatzly4jbjho9",
        "additionalTargetKeys": {
          "printer_id": "0gjdgxs0xd59y1"
        }
      },
      "value": {
        "policySchema": "chrome.printers.AllowForDevices",
        "value": {
          "allowForDevices": false
        }
      }
    },
    //...
  ],
  "nextPageToken": "AEbDN_pFvDeGSbQDkvMxr4UA0Ew7UEUw8aJyw95VPs2en6YxMmFcWQ9OQQEIeSkjnWFCQNyz5GGoOKQGEd50e2z6WqvM2w7sQz6TMxVOBD_4NmEHRWtIJCYymeYXWHIrNH29Ezl1wkeyYBAOKnE="
}

ポリシーの値を変更

ポリシー スキーマのレスポンスに示されているように、ポリシー chrome.printers.AllowForUsers allowForUsers という名前のフィールドが 1 つあります。このフィールドはブール値型です。例 ポリシーの値は {allowForUsers: false} または {allowForUsers: true}。このケースではフィールドが 1 つだけで、 他のポリシーには複数のフィールドを含めることができます。

変更リクエストでは、updateMask を指定する必要があります。更新のマスクリスト: 変更するフィールドを指定します。ポリシーがローカルに適用されている場合は、 組織部門に適用した場合、更新マスクで一覧表示されないフィールドは 変更されることはありません。ポリシーがローカルに適用されていない場合は、 組織部門、および更新マスクで一覧表示されないすべてのフィールドは、 必要に応じて親組織部門から値をコピーする。 ポリシー全体がローカルで適用されます。

次の例は、組織部門の場合です。グループ リクエストは、 targetResource だけは "groups/" です。、 「orgunits/」指定します。ここでは、以下のユーザーに対してプリンタ 0gjdgxs208tpef を禁止します。 組織部門 ID 04fatzly4jbjho9 のユーザー:

リクエストする

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        requests: [{
                policyTargetKey: {
                        targetResource: "orgunits/04fatzly4jbjho9",
                        additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
                        },
                policyValue: {
                        policySchema: "chrome.printers.AllowForUsers",
                        value: {allowForUsers: false}
                        },
                updateMask: {paths: "allowForUsers"}
                }]
      }' \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"

レスポンス

正常なレスポンスは空です。

{}

リストや配列など、複数の値のフィールドに「LABEL_REPEATED」のマークが付きます ラベルです。複数値フィールドにデータを入力するには、次の JSON 配列形式を使用します。 [value1, value2, value3, ...]

たとえば、アプリと拡張機能パッケージのソース URL を "test1.com"、"test2.com"次のリクエストを送信する必要があります。

リクエストする

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d "{
        requests: [
          {
            policy_target_key: {
              target_resource: 'orgunits/03ph8a2z28rz85a'
            },
            updateMask: {
              paths: ['extensionInstallSources']
            },
            policy_value: {
              policy_schema: 'chrome.users.appsconfig.AppExtensionInstallSources', 
              value: {
                extensionInstallSources: ['test1.com', 'test2.com', 'test3.com']
              }
            }
          }
        ]
      }" \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"

レスポンス

正常なレスポンスは空です。

{}

NullableDuration フィールドを含むすべてのポリシーには、2 つのバージョンがあります。 元のバージョンでは NullableDuration の入力として文字列のみを受け入れ、 非推奨です。期間タイプを できます。たとえば、ユーザー セッションの最大時間を 10 分に設定するには、次のようにします。 次のリクエストを送信する必要があります。

リクエストする

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d "{
        requests: [
          {
            policy_target_key: {
              target_resource: 'orgunits/03ph8a2z28rz85a'
            },
            updateMask: {
              paths: ['sessionDurationLimit']
            },
            policy_value: {
              policy_schema: 'chrome.users.SessionLengthV2',
              value: {
                sessionDurationLimit: {
                  duration: 10
                }
              }
            }
          }
        ]
      }" \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"

レスポンス

正常なレスポンスは空です。

{}

複数のポリシーを一度に変更する

batchModify メソッドを使用すると、複数のポリシー変更を同時に送信できます。 ただし、すべてのポリシーをバッチ処理できるわけではありません。詳しくは バッチ アップデートのポリシーをご覧ください。

この例では、同じリクエストで 2 つの異なるリクエストを変更します。 ポリシー(chrome.printers.AllowForDeviceschrome.printers.AllowForUsers) コピーします。

次の例は、組織部門の場合です。グループ リクエストは targetResource だけは "groups/" です。、 「orgunits/」指定します。

リクエストする

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        requests: [{
                policyTargetKey: {
                        targetResource: "orgunits/04fatzly4jbjho9",
                        additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
                        },
                policyValue: {
                        policySchema: "chrome.printers.AllowForDevices",
                        value: {allowForDevices: true}
                        },
                updateMask: {paths: "allowForDevices"}
                },
                {
                policyTargetKey: {
                        targetResource: "orgunits/04fatzly4jbjho9",
                        additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
                        },
                policyValue: {
                        policySchema: "chrome.printers.AllowForUsers",
                        value: {allowForUsers: true}
                        },
                updateMask: {paths: "allowForUsers"}
                }]
      }' \
  "https://chromepolicy.googleapis.com/v1/customers/C0202nabg/policies/orgunits:batchModify"

レスポンス

正常なレスポンスは空です。

{}

組織部門のポリシー値を継承する

batchInherit メソッドを使用すると、組織部門のポリシーのステータスを 「ローカルで適用」継承されます。ローカル値はクリアされ、ポリシーは 親組織部門から値を継承します(該当する場合)。

batchInherit メソッドを使用すると、複数のポリシー継承を送信して、 同時に使用できます。ただし、すべてのポリシーをバッチ処理できるわけではありません。 詳しくは バッチ アップデートのポリシーをご覧ください。

リクエストする

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        requests: [{
                policyTargetKey: {
                        targetResource: "orgunits/04fatzly12wd3ox",
                        additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
                        },
                policySchema: "chrome.printers.AllowForUsers"
                }]
      }' \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchInherit"

レスポンス

正常なレスポンスは空です。

{}

グループ内のポリシー値を削除する

batchDelete メソッドを使用すると、グループからポリシーを削除できます。ローカル値は消去されます。

batchDelete メソッドを使用すると、複数のポリシー削除通知を送信できます。 同時に使用できます。ただし、すべてのポリシーをバッチ処理できるわけではありません。 詳しくは、 バッチ アップデートのポリシー

リクエストする

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        requests: [{
                policyTargetKey: {
                        targetResource: "groups/04fatzly12wd3ox",
                        additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
                        },
                policySchema: "chrome.printers.AllowForUsers"
                }]
      }' \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/groups:batchDelete"

レスポンス

正常なレスポンスは空です。

{}

グループの優先順位を一覧表示する

listGroupPriorityOrdering メソッドを使用すると、アプリのグループの優先順位をリストできます。

返されるグループ ID の順序によって、 その設定がアプリに適用されます。後の IDポリシーは ID がリスト内の前にあるポリシーでオーバーライドされます。

グループの優先度は、組織部門の優先度よりも高いことに注意してください。

このリクエストでは、「exampleapp」の優先順位が返されます。 Chrome ユーザーアプリ。

リクエストする

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        policyTargetKey: {
                additionalTargetKeys: {"app_id":"chrome:exampleapp"}
                },
        policyNamespace: 'chrome.users.apps'
      }' \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/groups:listGroupPriorityOrdering"

レスポンス

{
  "policyTargetKey": {
    "additionalTargetKeys": {
      "app_id": "chrome:exampleapp"
    }
  },
  "policyNamespace": "chrome.users.apps",
  "groupIds": [
    "03ep43zb2k1nodu",
    "01t3h5sf2k52kol",
    "03q5sasy2ihwnlz"
  ]
}

グループの優先順位を更新する

updateGroupPriorityOrdering メソッドを使用すると、アプリのグループの優先順位を更新できます。

リクエストに含まれるグループ ID の順序は、 その設定がアプリに適用されます。後の IDポリシーは ID がリスト内の前にあるポリシーでオーバーライドされます。リクエストは アプリに現在適用されているすべてのグループ ID が含まれます。

グループの優先度は、組織部門の優先度よりも高いことに注意してください。

このリクエストでは、「exampleapp」の優先順位を設定しています。 Chrome ユーザーアプリ。

リクエストする

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        policyTargetKey: {
                additionalTargetKeys: {"app_id":"chrome:exampleapp"}
                },
        policyNamespace: 'chrome.users.apps',
        groupIds: ['03ep43zb2k1nodu', '01t3h5sf2k52kol', '03q5sasy2ihwnlz']
      }' \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/groups:updateGroupPriorityOrdering"

レスポンス

正常なレスポンスは空です。

{}

確認が必要なポリシーの処理

一部のポリシー スキーマで「notices」が特定のフィールドの特定の値だけを 確認する必要があります

ポリシー chrome.users.PluginVmAllowd の例:

{
  "name": "customers/C0202nabg/policySchemas/chrome.users.PluginVmAllowed",
  "policyDescription": "Parallels Desktop.",
  # ...
  "fieldDescriptions": [
    {
      "field": "pluginVmAllowed",
      "description": "N/A",
      "knownValueDescriptions": [
        {
          "value": "true",
          "description": "Allow users to use Parallels Desktop."
        },
        {
          "value": "false",
          "description": "Do not allow users to use Parallels Desktop."
        }
      ]
    },
    {
      "field": "ackNoticeForPluginVmAllowedSetToTrue",
      "description": "This field must be set to true to acknowledge the notice message associated with the field 'plugin_vm_allowed' set to value 'true'. Please see the notices listed with this policy for more information."
    }
  ],
  "notices": [
    {
      "field": "pluginVmAllowed",
      "noticeValue": "true",
      "noticeMessage": "By enabling Parallels Desktop, you agree to the Parallels End-User License Agreement specified at https://www.parallels.com/about/legal/eula/. Warning: Device identifiers may be shared with Parallels. Please see privacy policy for more details at https://www.parallels.com/about/legal/privacy/. The minimum recommended configuration includes an i5 processor, 16 GB RAM, and 128 GB storage: https://support.google.com/chrome/a/answer/10044480.",
      "acknowledgementRequired": true
    }
  ],
  "supportUri": "...",
  "schemaName": "chrome.users.PluginVmAllowed"
}

上記の例では、フィールド pluginVmAllowed の値を true に設定すると、次のようになります。 acknowledgementRequired の通知に関連付けられている。適切な このフィールドの値を true に設定した場合は、 確認フィールド ackNoticeForPluginVmAllowedSetToTruetrue に送信し、 そうしないと、リクエストでエラーが発生します。

この例では、次の一括変更リクエストを送信する必要があります。

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d "{
  'requests': [
    {
      'policyTargetKey': {
        'targetResource': 'orgunits/03ph8a2z10ybbh2'
      },
      'policyValue': {
        'policySchema': 'chrome.users.PluginVmAllowed',
        'value': {
          'pluginVmAllowed': true,
          'ackNoticeForPluginVmAllowedSetToTrue': true
        }
      },
      'updateMask': {
        'paths': [
          'pluginVmAllowed',
          'ackNoticeForPluginVmAllowedSetToTrue'
        ]
      }
    }
  ]
}" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"

ファイル ポリシーの設定

一部のポリシーでフィールドのタイプが UploadedFile になっている場合は、 構成ファイルを API サーバーに送信し、ポリシーの BatchModify リクエストで使用する URL を取得します。

この例では、ファイルをアップロードして chrome.users.Wallpaper を設定します。 JPEG ファイル。

ファイルのアップロード

リクエストする

curl -X POST \
  -H "Content-Type: image/jpeg" \
  -H "Authorization: Bearer $TOKEN" \
  -T "/path/to/the/file" \
  "https://chromepolicy.googleapis.com/upload/v1/customers/$CUSTOMER/policies/files:uploadPolicyFile?policy_field=chrome.users.Wallpaper.wallpaperImage"

レスポンス

成功した場合、レスポンスにはファイルにアクセスするための URL が含まれます。

{
  "downloadUri": "https://storage.googleapis.com/chromeos-mgmt/0gjdgxs370bkl6/ChromeOsWallpaper/32ac50ab-b5ae-4bba-afa8-b6b443912897"
}

ファイル ポリシーを設定する

リクエストする

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        requests: [{
                policyTargetKey: {
                        targetResource: "orgunits/04fatzly4jbjho9",
                        },
                policyValue: {
                        policySchema: "chrome.users.Wallpaper",
                        value: {
                          wallpaperImage: {downloadUri: "https://storage.googleapis.com/chromeos-mgmt/0gjdgxs370bkl6/ChromeOsWallpaper/32ac50ab-b5ae-4bba-afa8-b6b443912897"}
                          }
                        },
                updateMask: {paths: "wallpaperImage"}
                }]
      }' \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"

レスポンス

正常なレスポンスは空になります。

{}