Nesting Requests
You can pass multiple payloads within your request to the protect and unprotect endpoints, mixing together data formats and transformation types. In order to do that, your requests need to be structured in the following manner:
TOP LEVEL ATTRIBUTES
user
(required) Choose a user to impersonate from the list of pre-configured roles.
arguments
(optional) A nesting element used for passing multiple protection requests as an array.
NESTED ATTRIBUTES
The following attributes have to be provided for every payload sent:
id
(optional) ID or label of a single for logging purposes. It will be appended to the query_id
field.
data
(required) Input data to transform.
data_element
(required) Data element to apply when transforming data. Consult the Policy Definition section for the list of supported data elements and their characteristics.
encoding
(optional) Type of encoding used for input (and output) data. Note that all encodings are supported for all data elements with the exception of utf8
that cannot be used with encryption data elements. Accepts: [ hex | base64 | utf8 ]
. Defaults to utf8
.
external_iv
(optional) Provide your custom initialization vector to introduce additional variance in the output. The IV may be a number, letter, special character, or a combination of those. Learn more about the IVs in the Key Concepts section. Note that to unprotect the data back to its original value, the external_iv
has to be provided in the payload.
SAMPLE REQUEST
curl --location 'https://api.playground.protegrity.com/v1/private/protect' \
--header 'x-api-key: <Group_API_Key>' \
--header 'Content-Type: application/json' \
--header 'Authorization: <JWT_TOKEN>' \
--data '{
"user": "admin",
"arguments": [
{
"id": "id1",
"data_element": "city",
"data": [
"Phoenix"
]
},
{
"external_iv": "LOB_1",
"data_element": "name",
"data": [
"Ava O’Connor",
"Peregrine Wojcik"
]
}
]
}'
import requests
import json
JWT_Token = "<JWT_TOKEN>"
API_Key = "<Group_API_Key>"
url = 'https://api.playground.protegrity.com/v1/private/protect'
headers = { 'x-api-key': API_Key, 'Content-Type': 'application/json', 'Authorization': JWT_Token }
data = {
"user": "admin",
"arguments": [
{
"id": "id1",
"data_element": "city",
"data": [
"Phoenix"
]
},
{
"external_iv": "LOB_1",
"data_element": "name",
"data": [
"Ava O’Connor",
"Peregrine Wojcik"
]
}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.text)
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.io.OutputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class APIRequest { public static void main(String[] args) {
try {
String JWT_Token = "<JWT_TOKEN>"
String API_Key = "<Group_API_Key>"
URI uri = new URI("https://api.playground.protegrity.com/v1/private/protect");
URL url = uri.toURL();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("x-api-key", API_Key);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", JWT_Token); conn.setDoOutput(true);
String jsonInputString = "\"user\": \"admin\",\"arguments\": {\"id\": \"id1\",\"data_element\": \"city\",\"data\": [ \"Phoenix\"]},{\"external_iv\": \"LOB_1\",\"data_element\": \"name\",\"data\": [\"Ava O’Connor\",\"Peregrine Wojcik\"]}";
try (OutputStream os = conn.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}
try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"))) {
StringBuilder response = new StringBuilder();
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
System.out.println(response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
fetch('https://api.playground.protegrity.com/v1/private/protect',
{ method: 'POST',
headers: { 'x-api-key': '<Group_API_Key>', 'Content-Type': 'application/json', 'Authorization': '<JWT_TOKEN>' },
body: JSON.stringify({
"user": "admin",
"arguments": [
{
"id": "id1",
"data_element": "city",
"data": [
"Phoenix"
]
},
{
"external_iv": "LOB_1",
"data_element": "name",
"data": [
"Ava O’Connor",
"Peregrine Wojcik"
]
}
]
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"io"
"fmt"
"strings"
"net/http"
)
func main() {
JWT_Token := "<JWT_TOKEN>"
API_Key := "<Group_API_Key>"
url := "https://api.playground.protegrity.com/v1/private/protect"
data := strings.NewReader(`{
"user": "admin",
"arguments": [
{
"id": "id1",
"data_element": "city",
"data": [
"Phoenix"
]
},
{
"external_iv": "LOB_1",
"data_element": "name",
"data": [
"Ava O’Connor",
"Peregrine Wojcik"
]
}
]
}`)
req, err := http.NewRequest("POST", url, data)
if err != nil {
fmt.Println(err)
return
}
req.Header.Set("x-api-key", API_Key)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", JWT_Token)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
SAMPLE RESPONSE
{
"results": [
{
"encoding": "utf8",
"id": "id1",
"results": [
"pGPtJxg"
],
"success": true
},
{
"encoding": "utf8",
"results": [
"otO D’vawbCO",
"JKWTkOMDK zPAgFlO"
],
"success": true
}
],
"success": true
}
Last modified February 19, 2025