Transformations par lots
Regroupez n'importe quel nombre d'instances[] dans une seule requête. Le moteur les traite par lot et renvoie une réponse par requête. Cet exemple protège toutes les instances de la configuration d'exemple en un seul appel, avec le rôle HR Specialist.
curl -X POST "$KUSTODYAN_ENGINE_URL/transform" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"rightsContexts": [{
"guid": "11111111-1111-1111-1111-111111111111",
"evidences": [{ "name": "role", "value": "HR Specialist" }]
}],
"processingContexts": [{
"guid": "22222222-2222-2222-2222-222222222222",
"evidences": [{ "name": "action", "value": "protect" }]
}],
"requests": [{
"guid": "33333333-3333-3333-3333-333333333333",
"rightsContext": "11111111-1111-1111-1111-111111111111",
"processingContext": "22222222-2222-2222-2222-222222222222",
"instances": [
{ "className": "employees", "propertyName": "first_name", "value": "Laura" },
{ "className": "employees", "propertyName": "last_name", "value": "Smith" },
{ "className": "employees", "propertyName": "email", "value": "laura.smith@company.com" },
{ "className": "salaries", "propertyName": "iban", "value": "CH9300762011623852957" },
{ "className": "salaries", "propertyName": "annual_salary", "value": "120000" }
]
}]
}'Réponse :
{
"responses": [{
"request": "33333333-3333-3333-3333-333333333333",
"rightsContext": "11111111-1111-1111-1111-111111111111",
"processingContext": "22222222-2222-2222-2222-222222222222",
"instances": [
{ "className": "employees", "propertyName": "first_name", "value": "EgkCwvPv4cZJ6ECAzG6zKQ==" },
{ "className": "employees", "propertyName": "last_name", "value": "5GVVTV8-AB" },
{ "className": "employees", "propertyName": "email", "value": "7d7341c0-6941-3f60-baf9-ffcc6c18eead@company.com" },
{ "className": "salaries", "propertyName": "iban", "value": "ZW0556459705462108999" },
{ "className": "salaries", "propertyName": "annual_salary", "value": "120000" }
]
}]
}Les quatre instances protégées sont renvoyées transformées. annual_salary est renvoyée inchangée (120000), car HR Specialist dispose du droit Read dessus et qu'elle n'a aucun Transformer. En tant qu'IT Manager, qui n'a aucun droit sur ce champ, la valeur est remplacée par la chaîne littérale "null" (la requête réussit tout de même, sans erreur par instance).
Le traitement par lot réduit les allers-retours réseau et permet au moteur d'optimiser entre les instances. Préférez quelques gros appels plutôt que de nombreux petits.
Déprotéger le même lot
Pour récupérer les valeurs d'origine, renvoyez les valeurs protégées avec action: unprotect, en tant que rôle disposant du droit Transform (ici, HR Specialist) :
{
"rightsContexts": [{
"guid": "11111111-1111-1111-1111-111111111111",
"evidences": [{ "name": "role", "value": "HR Specialist" }]
}],
"processingContexts": [{
"guid": "22222222-2222-2222-2222-222222222222",
"evidences": [{ "name": "action", "value": "unprotect" }]
}],
"requests": [{
"guid": "44444444-4444-4444-4444-444444444444",
"rightsContext": "11111111-1111-1111-1111-111111111111",
"processingContext": "22222222-2222-2222-2222-222222222222",
"instances": [
{ "className": "employees", "propertyName": "first_name", "value": "EgkCwvPv4cZJ6ECAzG6zKQ==" },
{ "className": "employees", "propertyName": "last_name", "value": "5GVVTV8-AB" },
{ "className": "employees", "propertyName": "email", "value": "7d7341c0-6941-3f60-baf9-ffcc6c18eead@company.com" },
{ "className": "salaries", "propertyName": "iban", "value": "ZW0556459705462108999" },
{ "className": "salaries", "propertyName": "annual_salary", "value": "120000" }
]
}]
}La réponse renvoie le texte en clair d'origine : Laura, Smith, laura.smith@company.com et CH9300762011623852957. annual_salary reste 120000 du début à la fin, car elle est stockée telle quelle et n'est jamais transformée.