POST /api/v2/jobs/users-exports
エンドポイントを使用して、接続 に関連付けられているすべてのユーザー、またはテナント内のすべてのユーザーをエクスポートするジョブを作成できます。
エクスポートできるユーザープロファイルフィールドのリストについては、「ユーザープロファイル構造 」を参照してください。
ジョブを作成するときは、次の情報を提供する必要があります。
ユーザーをエクスポートする接続のID (オプション)
エクスポートファイルの形式(CSVまたはJSON互換)
エクスポートするユーザーレコードの最大数(オプション、省略するとすべてのレコードがエクスポートされます)
エクスポートに含めるユーザー関連フィールド(ユーザーIDや名前など)
有効なManagement APIアクセストークン も必要です。
要求本文を作成する
必要に応じて、Auth0 Dashboard でconnection_id
とAuth0テナントドメイン名を見つけます。以下の要求本文を含む新しいテキストファイルを作成します。
{
"connection_id" : "connection_id" ,
"format" : "csv" ,
"limit" : 20 ,
"fields" :[
{
"name" : "user_id"
},
{
"name" : "email"
},
{
"name" : "user_metadata.country"
}
]
}
connection_id
をデータベース接続IDで更新するか、削除してテナント内のすべてのユーザーをエクスポートします。
要求例
必要なスコープ:read:users
cURL
C#
Go
Java
Node.JS
Obj-C
PHP
Python
Ruby
Swift
curl --request POST \
--url 'https://{yourDomain}/api/v2/jobs/users-exports' \
--header 'authorization: Bearer {yourMgmtAPIAccessToken}' \
--header 'content-type: application/json' \
--data '{"connection_id": "{yourConnectionId}", "format": "csv", "limit": 5, "fields": [{"name": "email"}, { "name": "identities[0].connection", "export_as": "provider" }]}'
応答はこのようになっているはずです。
{
"type" : "users_export" ,
"status" : "pending" ,
"connection_id" : "con_0000000000000001" ,
"format" : "csv" ,
"limit" : 5 ,
"fields" : [
{
"name" : "user_id"
},
{
"name" : "name"
},
{
"name" : "email"
},
{
"name" : "identities[0].connection" ,
"export_as" : "provider"
}
],
"connection" : "Username-Password-Authentication" ,
"created_at" : "2017-11-02T23:34:03.803Z" ,
"id" : "job_coRQCC3MHztpuTlo"
}
エクスポートされたCSVにユーザーメタデータを含める
ユーザーデータをCSV形式でエクスポートし、メタデータ情報を含める場合は、エクスポートする各メタデータフィールドを指定します。最大30個のフィールドをエクスポートできます。
app_metadata
またはuser_metadata
全体をCSV形式でエクスポートすることはできません。メタデータオブジェクトのフィールドを明確に指定する必要があります。app_metadata
またはuser_metadata
を単一のオブジェクトとしてエクスポートするには、JSON互換の形式で要求ボディのfields
パラメーターに目的のフィールドを含めます。例:{"name":"app_metadata"}
最大30個のフィールドしかエクスポートできないため、ユーザーデータに多くのフィールドがある場合は、JSON形式を使用することをお勧めします。
たとえば、メタデータが次のように構造化されている場合。
{
"consent" : {
"given" : true ,
"date" : "01/23/2019" ,
"text_details" : "{yourURL}"
}
}
エクスポート要求(3つのフィールドすべて)は次のようになります。
cURL
C#
Go
Java
Node.JS
Obj-C
PHP
Python
Ruby
Swift
curl --request POST \
--url 'https://{yourDomain}/api/v2/jobs/users-exports' \
--header 'authorization: Bearer {yourMgmtAPIAccessToken}' \
--header 'content-type: application/json' \
--data '{"connection_id": "{yourConnectionId}", "format": "csv", "limit": 5, "fields": [{"name": "email"}, {"name": "user_metadata.consent.given"}, {"name": "user_metadata.consent.date"}, {"name": "user_metadata.consent.text_details"}]}'
ユーザーエクスポートのCSVファイルでは、CSVインジェクションのリスクを軽減するために、OWASP標準に準拠して以下のように文字列データ型のエスケープ処理を行います。
二重引用符の前に二重引用符を付加します。
文字列の先頭に一重引用符を付加します。
文字列を二重引用符で囲みます。
これは、Auth0が生成するISO 8601形式の日付には適用されません。
JSON互換形式
データをJSON互換形式でエクスポートする場合は、ルートプロパティのみを指定する必要があります。個々の内部プロパティは自動的に含められるため、名前を付ける必要はありません。
Auth0のエクスポートファイルは、エクスポートファイルのサイズが大きいためNDJSON 形式を使用しますが、インポート機能ではJSONファイルが必要です。
Auth0によって生成されたエクスポートを使用してユーザーをインポートする前に、任意のライブラリ(jq など)を使用して、ファイルをNDJSONからJSONに変換する必要があります。
この場合、前に使用したのと同じ例では、要求は次のようになります。
cURL
C#
Go
Java
Node.JS
Obj-C
PHP
Python
Ruby
Swift
curl --request POST \
--url 'https://{yourDomain}/api/v2/jobs/users-exports' \
--header 'authorization: Bearer {yourMgmtAPIAccessToken}' \
--header 'content-type: application/json' \
--data '{"connection_id": "{yourConnectionId}", "format": "json", "limit": 5, "fields": [{"name": "email"}, {"name": "user_metadata.consent"}]}'
エクスポートステータスの確認
ユーザーをエクスポートするジョブを作成したら、Get a Jobエンドポイント を使用してそのステータスを確認できます。
ジョブのID(ジョブの作成時に応答で受け取ったID)を指定します。以下のサンプル要求を使用している場合は、プレースホルダー{yourJobId}
をIDの値に置き換えます。
必要なスコープ: create:users
, read:users
, create:passwords_checking_job
cURL
C#
Go
Java
Node.JS
Obj-C
PHP
Python
Ruby
Swift
curl --request GET \
--url 'https://{yourDomain}/api/v2/jobs/%7ByourJobId%7D' \
--header 'authorization: Bearer {yourMgmtAPIAccessToken}'
次のような応答が返されます。
{
"type" : "users_export" ,
"status" : "completed" ,
"connection_id" : "con_lCvO...a" ,
"format" : "csv" ,
"limit" : 5 ,
"fields" : [
{
"name" : "user_id"
},
{
"name" : "name"
},
{
"name" : "email"
},
{
"name" : "identities[0].connection" ,
"export_as" : "provider"
}
],
"location" : "pus3-auth0-export-users-us-east-2.s3.us-east-2.amazonaws.com/job_coRQCC3MHztpuTlo/auth0docs2.csv.gz?Expires=1509725589&Key-Pair-Id=APKAJPL62IJALBDMSSCA&Signature=l2JaFXP~BATnfagb64PK-qbX9QaZREDYNW0q5QeHuV-MaDpZjpABDXfHHLh2SsCMQz~UO-QsCSfI81l0lvCKzZPZL6cZHK7f~ixlZOK~MHKJuvMqsUZMbNluNAwhFmgb2fZ86yrB1c-l2--H3lMELAk7hKUwwSrNBlsfbMgQ-i41nMNnsYdy3AVlNVQkwZyx~w-IEHfJDHsqyjia-jfDbIOLQvr8~D9PwZ-xOzROxDwgxrt3undtz80bkgP5hRKOAbHC7Y-iKWa2bzNZYHqzowTrlh7Ta60cblJR46NfF9cNqn9jqRGVv-lsvUD9FxnImCCk~DL6npJnzNLjHvn4-CaWq6KdQnwWgCnZ3LZkxXDVWLLIQQaoc6i~xbuGnnbtKRePFSnpqbt2mAUYasdxTOWuUVK8wHhtfZmRYtCpwZcElXFO9Qs~PTroYZEiS~UHH5byMLt2x4ChkHnTG7pIhLAHN~bCOLk8BN2lOkDBUASEVtuJ-1i6cKCDqI2Ro9YaKZcCYzeQvKwziX6cgnMchmaZW77~RMOGloi2EffYE31OJHKiSVRK7RGTykaYN5S2Sg7W0ZOlLPKBtCGRvGb8rJ6n3oPUiOC3lSp7v0~dkx1rm-jO8mKWZwVtC0~4DVaXsn8KXNbj0LB4mjKaDHwXs16uH1-aCfFnMK7sZC2VyCU_" ,
"connection" : "Username-Password-Authentication" ,
"created_at" : "2017-11-02T23:34:03.803Z" ,
"id" : "job_coRQCC3MHztpuTlo"
}
エクスポートデータの検索
location パラメータの値として提供されたURLを使用することで、エクスポートファイルにアクセスできます。テナントの名前は、ファイルの名前でもあります。たとえば、テナント名がauth0docs
の場合、ファイルはauth0docs.csv
またはauth0docs.json
になります。URLに移動すると、ファイルのダウンロードが自動的に開始されます。
ダウンロードリンクは60秒間有効です。この期間が経過した場合、ジョブが期限切れになる前に24時間以内に再度呼び出すことができます。
ジョブのクリーンアップ
ジョブ関連データはすべて24時間後に自動的に削除され、その後はアクセスできなくなります。そのため、選択したストレージメカニズムを使用してジョブの結果を保存することを強くお勧めします 。