Membuat dan memperbarui izin pengguna

Halaman ini menjelaskan cara membuat, memperbarui, dan mencabut izin pengguna.

Aplikasi Anda mencatat artefak izin dan izin secara terpisah. Consent Management API menyimpan data sensitif terkait izin pengguna sebagai ConsentArtifact. ConsentArtifact dapat mencakup stempel waktu tanda tangan dan gambar tanda tangan atau dokumen lain yang berfungsi sebagai "bukti" izin.

Consent Management API menyimpan data izin yang tidak sensitif sebagai objek Consent. Consent mencakup ID pengguna buram, kebijakan izin yang diberikan oleh pengguna, dan status kebijakan izin.

Karena izin dan artefak izin memiliki jalur resource yang berbeda, izinnya dapat ditetapkan secara terpisah untuk meminimalkan akses ke data izin sensitif dalam artefak izin.

Izin mendukung durasi habis masa berlaku yang memungkinkan Anda mengonfigurasi kapan izin habis masa berlakunya dan tidak lagi valid. Durasi habis masa berlaku dapat ditetapkan ke tanggal tertentu atau jangka waktu, seperti satu tahun.

Selama pembuatan penyimpanan izin, Anda dapat mengonfigurasi durasi habis masa berlaku default untuk penyimpanan izin. Selama pembuatan izin, Anda dapat mengonfigurasi durasi kedaluwarsa untuk izin tersebut. Durasi habis masa berlaku yang ditetapkan selama pembuatan izin menggantikan durasi default yang ditetapkan untuk penyimpanan izin.

Izin dapat dibuat dalam status ACTIVE atau DRAFT. Izin dalam status ACTIVE digunakan oleh Consent Management API untuk membuat penentuan akses. Izin dalam status DRAFT hanya digunakan dalam penentuan akses jika ditentukan dalam permintaan penentuan akses. Anda dapat mengubah status dari DRAFT menjadi ACTIVE atau REJECTED dengan memperbarui izin.

Untuk mencatat izin pengguna, buat artefak izin menggunakan metode projects.locations.datasets.consentStores.consentArtifacts.create lalu tautkan artefak izin ke izin yang dibuat menggunakan metode projects.locations.datasets.consentStores.consents.create.

Contoh di halaman ini mengasumsikan bahwa Anda telah membuat penyimpanan izin dan mengonfigurasi kebijakan izin.

Artefak izin menyimpan data sensitif yang berkaitan dengan izin pengguna. Artefak izin dapat mencakup informasi kontak pengguna, stempel waktu tanda tangan, dan gambar tanda tangan atau dokumen lain yang berfungsi sebagai "bukti" izin.

Untuk membuat artefak izin, gunakan metode projects.locations.datasets.consentStores.consentArtifacts.create. Buat permintaan POST dan tentukan informasi berikut dalam permintaan:

  • Nama toko izin induk.
  • ID pengguna yang unik dan buram yang mewakili pengguna yang memberikan izin.
  • Tanda tangan pengguna, yang secara opsional mencakup gambar tanda tangan, stempel waktu, dan metadata lainnya. Gambar ini dapat ditentukan sebagai lokasi gambar di Cloud Storage atau sebagai string byte mentah.
  • Tanda tangan wali atau saksi opsional.
  • Gambar atau dokumen opsional yang berfungsi sebagai "bukti" izin, seperti gambar tanda tangan, gambar yang merekam layar alur izin seluler, atau dokumen PDF yang ditandatangani. Gambar ini dapat ditentukan sebagai lokasi di Cloud Storage atau sebagai string byte mentah.
  • ID untuk informasi izin yang ditampilkan kepada pengguna.
  • Metadata opsional yang terkait dengan izin pengguna.
  • Token akses.

Contoh berikut menunjukkan permintaan POST menggunakan curl:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/consent+json; charset=utf-8" \
    --data "{
       'user_id': 'USER_ID',
       'user_signature' : {
         'user_id': 'USER_ID',
         'image': {
           'gcs_uri': 'gs://IMG_URI' },
         'signature_time': {
           'seconds': EPOCH_SECONDS },
      },
       'consent_content_screenshots': [
         { 'raw_bytes': 'BASE_64_IMAGE' }],
       'consent_content_version': 'v1',
       'metadata': {'client': 'mobile'}
    }" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts"

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_RESOURCE_ID",
  "userId": "USER_ID",
  "userSignature": {
    "userId": "USER_ID",
    "signatureTime": "SIGNATURE_TIME"
  },
  "consentContentVersion": "v1",
  "metadata": {
    "client": "mobile"
  }
}

Contoh berikut menunjukkan permintaan POST menggunakan Windows PowerShell:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/consent+json; charset=utf-8" `
  -Body "{
       'user_id': 'USER_ID',
       'user_signature' : {
         'user_id': 'USER_ID',
         'image': {
           'gcs_uri': 'gs://IMG_URI' },
         'signature_time': {
           'seconds': EPOCH_SECONDS }
      },
       'consent_content_screenshots': [
         { 'raw_bytes': 'BASE_64_IMAGE' }],
       'consent_content_version': 'v1',
       'metadata': {'client': 'mobile'}
    }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts" | Select-Object -Expand Content

Jika permintaan berhasil, server akan menampilkan respons berikut dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_RESOURCE_ID",
  "userId": "USER_ID",
  "userSignature": {
    "userId": "USER_ID",
    "signatureTime": "SIGNATURE_TIME"
  },
  "consentContentVersion": "v1",
  "metadata": {
    "client": "mobile"
  }
}

Izin menyimpan data yang tidak sensitif, termasuk ID pengguna yang tidak transparan, kebijakan izin yang diberikan oleh pengguna, dan apakah kebijakan izin saat ini valid.

Untuk membuat izin, gunakan metode projects.locations.datasets.consentStores.consents.create. Buat permintaan POST dan tentukan informasi berikut dalam permintaan:

  • Nama toko izin induk.
  • ID pengguna yang unik dan buram yang mewakili pengguna yang memberikan izin.
  • Hingga 10 kebijakan izin, masing-masing dengan serangkaian nilai atribut RESOURCE dan aturan otorisasi yang dinyatakan dalam Common Expression Language (CEL) yang menjelaskan maksud pengguna dengan definisi atribut yang dibuat sebelumnya. Batasan berikut berlaku untuk CEL:
    • Anda hanya dapat menentukan maksimum 10 operator logika per kebijakan.
    • Anda hanya dapat menggunakan operator AND (&&), OR (||), dan IN.
  • Jalur REST ke artefak izin yang sesuai (ditampilkan setelah pembuatan artefak izin).
  • Status izin opsional, baik DRAFT maupun ACTIVE. Jika Anda tidak menentukan status, izin akan dibuat dalam status ACTIVE.
  • Durasi habis masa berlaku opsional untuk izin, yang ditentukan sebagai tanggal atau jangka waktu. Nilai ini harus diberikan dalam detik dan diberi akhiran huruf s. Misalnya, 86000s. Nilai ini menggantikan durasi masa berlaku yang dikonfigurasi untuk penyimpanan izin. Jika Anda tidak mengonfigurasi masa berlaku, resource akan mewarisi durasi masa berlaku default dari penyimpanan izin. Jika durasi habis masa berlaku tidak ditentukan untuk resource atau toko, masa berlaku resource izin tidak akan habis.
  • Token akses.

Contoh berikut menunjukkan permintaan POST menggunakan curl:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/consent+json; charset=utf-8" \
    --data "{
       \"user_id\": \"USER_ID\",
       \"policies\": [{
         \"resource_attributes\": [{
           \"attribute_definition_id\": \"data_identifiable\",
           \"values\": [\"identifiable\"]
         }],
         \"authorization_rule\": {
           \"expression\": \"requester_identity == 'clinical-admin'\",
        }
       },
       {
         \"resource_attributes\": [{
           \"attribute_definition_id\": \"data_identifiable\",
           \"values\": [\"de-identified\"]
         }],
         \"authorization_rule\": {
           \"expression\": \"requester_identity in ['internal-researcher', 'external-researcher']\"
          }
       }],
       \"consent_artifact\": \"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID\",
       \"ttl\": \"EXPIRATION_DURATION\"
    }" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents"

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
  "userId": "USER_ID",
  "policies": [
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "identifiable"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity == 'clinical-admin'"
      }
    },
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "de-identified"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
      }
    }
  ],
  "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
  "state": "CONSENT_STATE",
  "stateChangeTime": "STATE_CHANGE_TIME",
  "expireTime": "EXPIRE_TIME"
}

Contoh berikut menunjukkan permintaan POST menggunakan Windows PowerShell:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/consent+json; charset=utf-8" `
  -Body "{
       'user_id': 'USER_ID',
       'policies': [{
         'resource_attributes': [{
           'attribute_definition_id': 'data_identifiable',
           'values': ['identifiable']
         }],
         'authorization_rule': {
           'expression': 'requester_identity == \'clinical-admin\'',
        }
       },{
         'resource_attributes': [{
           'attribute_definition_id': 'data_identifiable',
           'values': ['de-identified']
         }],
         'authorization_rule': {
           'expression': 'requester_identity in [\'internal-researcher\', \'external-researcher\']'
          }
       }],
       'consent_artifact': 'projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID',
       'ttl': 'EXPIRATION_DURATION'
    }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents" | Select-Object -Expand Content

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
  "userId": "USER_ID",
  "policies": [
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "identifiable"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity == 'clinical-admin'"
      }
    },
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "de-identified"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
      }
    }
  ],
  "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
  "state": "CONSENT_STATE",
  "stateChangeTime": "STATE_CHANGE_TIME",
  "expireTime": "EXPIRE_TIME"
}

Contoh berikut menunjukkan cara mendapatkan izin. Untuk informasi selengkapnya, lihat projects.locations.datasets.consentStores.consents.get.

Untuk mendapatkan izin, buat permintaan GET dan tentukan informasi berikut dalam permintaan:

  • Nama set data induk
  • Nama penyimpanan izin
  • Nama izin
  • Token akses

Contoh berikut menunjukkan permintaan GET menggunakan curl:

curl -X GET \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID"

Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
  "userId": "USER_ID",
  "policies": [
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "identifiable"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity == 'clinical-admin'"
      }
    },
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "de-identified"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
      }
    }
  ],
  "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
  "state": "CONSENT_STATE",
  "stateChangeTime": "STATE_CHANGE_TIME",
  "revisionCreateTime": "REVISION_CREATE_TIME",
  "expireTime": "EXPIRE_TIME"
}

Contoh berikut menunjukkan permintaan GET menggunakan Windows PowerShell:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-RestMethod `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID" | ConvertTo-Json

Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
  "userId": "USER_ID",
  "policies": [
    {
      "resourceAttributes": "",
      "authorizationRule": "@{expression=requester_identity == 'clinical-admin'}"
    },
    {
      "resourceAttributes": "",
      "authorizationRule": "@{expression=requester_identity in ['internal-researcher', 'external-researcher']}"
    }
  ],
  "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
  "state": "CONSENT_STATE",
  "stateChangeTime": "STATE_CHANGE_TIME",
  "revisionCreateTime": "REVISION_CREATE_TIME",
  "expireTime": "EXPIRE_TIME"
}

Contoh berikut menunjukkan cara mencantumkan izin di penyimpanan izin.

Untuk mencantumkan izin di penyimpanan izin, gunakan metode projects.locations.datasets.consentStores.consents.list.

Untuk mencantumkan izin di penyimpanan izin, buat permintaan GET dan tentukan informasi berikut:

  • Nama penyimpanan izin induk
  • Filter penelusuran opsional untuk mengambil izin berdasarkan ID pengguna, status, waktu pembuatan, atau artefak izin
  • Token akses

Contoh berikut menunjukkan permintaan GET menggunakan curl.

curl -X GET \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents"

Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:

{
  "consents": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
      "userId": "USER_ID",
      "policies": [
        {
          "resourceAttributes": [
            {
              "attributeDefinitionId": "data_identifiable",
              "values": [
                "identifiable"
              ]
            }
          ],
          "authorizationRule": {
            "expression": "requester_identity == 'clinical-admin'"
          }
        },
        {
          "resourceAttributes": [
            {
              "attributeDefinitionId": "data_identifiable",
              "values": [
                "de-identified"
              ]
            }
          ],
          "authorizationRule": {
            "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
          }
        }
      ],
      "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
      "state": "CONSENT_STATE",
      "stateChangeTime": "STATE_CHANGE_TIME",
      "revisionCreateTime": "REVISION_CREATE_TIME",
      "expireTime": "EXPIRE_TIME"
    },
    {
      ...
    }
  ]
}

Untuk mencantumkan izin di penyimpanan izin, buat permintaan GET dan tentukan informasi berikut:

  • Nama set data induk
  • Filter penelusuran opsional untuk mengambil izin berdasarkan ID pengguna, status, waktu pembuatan, atau artefak izin
  • Token akses

Contoh berikut menunjukkan permintaan GET menggunakan Windows PowerShell.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents" | Select-Object -Expand Content

Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:

{
  "consents": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
      "userId": "USER_ID",
      "policies": [
        {
          "resourceAttributes": [
            {
              "attributeDefinitionId": "data_identifiable",
              "values": [
                "identifiable"
              ]
            }
          ],
          "authorizationRule": {
            "expression": "requester_identity == 'clinical-admin'"
          }
        },
        {
          "resourceAttributes": [
            {
              "attributeDefinitionId": "data_identifiable",
              "values": [
                "de-identified"
              ]
            }
          ],
          "authorizationRule": {
            "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
          }
        }
      ],
      "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
      "state": "CONSENT_STATE",
      "stateChangeTime": "STATE_CHANGE_TIME",
      "revisionCreateTime": "REVISION_CREATE_TIME",
      "expireTime": "EXPIRE_TIME"
    },
    {
      ...
    }
  ]
}

Anda juga dapat mencantumkan revisi izin tertentu menggunakan metode projects.locations.datasets.consentStores.consents.listRevisions.

Memperbarui izin

Anda mungkin perlu memperbarui status izin dari waktu ke waktu. Anda dapat melakukannya dengan mengubah status izin. Setiap pembaruan dan perubahan status menghasilkan revisi baru izin. Revisi sebelumnya dapat diakses dengan menambahkan @{revision_id} ke nama resource izin.

Memperbarui izin

Untuk memperbarui kolom userId, policies, consentArtifact, atau revokeConsentArtifact izin aktif atau draf, gunakan metode projects.locations.datasets.consentStores.consents.patch. Revisi baru dilakukan dengan perubahan dan ditetapkan ke status saat ini.

Untuk memperbarui izin, buat permintaan PATCH dan tentukan informasi berikut dalam permintaan:

  • Jalur REST izin yang akan diperbarui
  • Kolom yang akan diperbarui
  • Mask update
  • Token akses

Contoh berikut menunjukkan permintaan PATCH menggunakan curl yang memperbarui artefak izin:

curl -X PATCH \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/consent+json; charset=utf-8" \
    --data "{
       \"consentArtifact\": \"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID\"
       }" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID?updateMask=consentArtifact"

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
  "userId": "USER_ID",
  "policies": [
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "identifiable"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity == 'clinical-admin'"
      }
    },
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "de-identified"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
      }
    }
  ],
  "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
  "state": "ACTIVE",
  "stateChangeTime": "STATE_CHANGE_TIME",
  "revisionCreateTime": "REVISION_CREATE_TIME",
  "expireTime": "EXPIRE_TIME"
}

Contoh berikut menunjukkan permintaan PATCH menggunakan Windows PowerShell yang mengupdate artefak izin:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Patch `
  -Headers $headers `
  -ContentType: "application/consent+json; charset=utf-8" `
  -Body "{
       'consentArtifact': 'projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID'
    }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID?updateMask=consentArtifact" | Select-Object -Expand Content

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
  "userId": "USER_ID",
  "policies": [
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "identifiable"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity == 'clinical-admin'"
      }
    },
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "de-identified"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
      }
    }
  ],
  "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
  "state": "ACTIVE",
  "stateChangeTime": "STATE_CHANGE_TIME",
  "revisionCreateTime": "REVISION_CREATE_TIME",
  "expireTime": "EXPIRE_TIME"
}

Mengaktifkan izin

Untuk mengubah status izin dari DRAFT menjadi ACTIVE setelah pengguna menyetujui izin, gunakan metode projects.locations.datasets.consentStores.consents.activateConsent. Revisi baru dilakukan dengan status ACTIVE. Jika status izin adalah ACTIVE, izin tersebut disertakan dalam permintaan penentuan akses.

Untuk mengaktifkan izin, buat permintaan POST dan tentukan informasi berikut dalam permintaan:

  • Jalur REST izin yang akan diaktifkan
  • Jalur REST ke artefak opsional untuk mendokumentasikan alasan izin diaktifkan
  • Token akses

Contoh berikut menunjukkan permintaan POST menggunakan curl:

curl -X POST \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/consent+json; charset=utf-8" \
    --data "{
       'consent_artifact': 'projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userConsentArtifacts/CONSENT_ARTIFACT_RESOURCE_ID' \
       }" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID:activate"

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
  "userId": "USER_ID",
  "policies": [
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "identifiable"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity == 'clinical-admin'"
      }
    },
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "de-identified"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
      }
    }
  ],
  "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
  "state": "ACTIVE",
  "stateChangeTime": "STATE_CHANGE_TIME",
  "expireTime": "EXPIRE_TIME"
}

Contoh berikut menunjukkan permintaan POST menggunakan Windows PowerShell:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/consent+json; charset=utf-8" `
  -Body "{
       'consent_artifact': '/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userConsentArtifacts/CONSENT_ARTIFACT_ID'
    }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID:activate" | Select-Object -Expand Content

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
  "userId": "USER_ID",
  "policies": [
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "identifiable"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity == 'clinical-admin'"
      }
    },
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "de-identified"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
      }
    }
  ],
  "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
  "state": "ACTIVE",
  "stateChangeTime": "STATE_CHANGE_TIME",
  "expireTime": "EXPIRE_TIME"
}

Mencabut dan menolak izin

Untuk mengubah status izin dari DRAFT menjadi REJECTED, misalnya, jika pengguna menunjukkan bahwa izin tidak dapat diterima, gunakan metode projects.locations.datasets.consentStores.consents.reject. Jika status izin adalah REJECTED, izin tidak disertakan dalam permintaan penentuan akses.

Untuk mengubah status izin dari ACTIVE menjadi REVOKED, misalnya jika pengguna meminta untuk membatalkan izin yang sebelumnya diberikan, gunakan metode projects.locations.datasets.consentStores.consents.revoke. Revisi baru dilakukan dengan status REVOKED. Izin dengan status REVOKED tidak disertakan dalam permintaan penentuan akses. Anda dapat membuat artefak opsional yang terkait dengan izin untuk mendokumentasikan alasan izin dicabut. Mencabut izin tidak akan menghapus izin tersebut.

Untuk mencabut izin, buat permintaan POST dan tentukan informasi berikut dalam permintaan:

  • Jalur REST izin yang akan dicabut
  • Jalur REST ke artefak opsional untuk mendokumentasikan alasan pencabutan izin
  • Token akses

Contoh berikut menunjukkan permintaan POST menggunakan curl:

curl -X POST \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/consent+json; charset=utf-8" \
    --data "{}" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID:revoke"

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
  "userId": "USER_ID",
  "policies": [
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "identifiable"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity == 'clinical-admin'"
      }
    },
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "de-identified"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
      }
    }
  ],
  "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
  "state": "REVOKED",
  "stateChangeTime": "STATE_CHANGE_TIME",
  "expireTime": "EXPIRE_TIME"
}

Contoh berikut menunjukkan permintaan POST menggunakan Windows PowerShell:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/consent+json; charset=utf-8" `
  -Body "{}" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID:revoke" | Select-Object -Expand Content

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID",
  "userId": "USER_ID",
  "policies": [
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "identifiable"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity == 'clinical-admin'"
      }
    },
    {
      "resourceAttributes": [
        {
          "attributeDefinitionId": "data_identifiable",
          "values": [
            "de-identified"
          ]
        }
      ],
      "authorizationRule": {
        "expression": "requester_identity in ['internal-researcher', 'external-researcher']"
      }
    }
  ],
  "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID",
  "state": "REVOKED",
  "stateChangeTime": "STATE_CHANGE_TIME",
  "expireTime": "EXPIRE_TIME"
}