User profiles import

Use this feature to UPSERT or DELETE user profiles in your datamart.

How-to

Use the bulk import endpoints to create a document import with theUSER_PROFILEdocument type and APPLICATION_X_NDJSON mime type. Only ndjson data is supported for user profiles.

Then, create an execution with your user profile import commands formatted in ndjson .

User profile import command

Each line in the uploaded file can have the following properties:

field

type

description

operation

Enum

Either UPSERT or DELETE

compartment_id

String (Optional)

The Compartment ID, acting as a user identifier in correlation with user_account_id

user_account_id

String (Optional)

The User Account ID, acting as an identifier in correlation with compartment_id

email_hash

String (Optional)

The Email Hash, acting as an identifier

user_agent_id

String (Optional)

The User Agent ID, acting as an identifier

force_replace

Boolean (Optional)

Mandatory when the operation is UPSERT. If true, then the User Profile will be completely replaced by the object passed in the user_profile field. If false, the object passed in the user_profile field will be merged with the existing User Profile of the User Point.

merge_objects

Boolean (Optional)

Only considered if force_replace is false.

Manage the comportement between two objects with a same property.

If false (default value), the new object overrides the existing one.

If true the new object is merged in deep to the existing one (see example).

user_profile

JSON Object (Optional)

Mandatory when operation == UPSERT.

JSON Object representing the User Profile. Please refer to the user profile object for more information.

Example

# Create the document import
curl -X POST \
  https://api.mediarithmics.com/v1/datamarts/<DATAMART_ID>/document_imports \
  -H 'Authorization: <YOUR_API_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
	"document_type": "USER_PROFILE",
	"mime_type": "APPLICATION_X_NDJSON",
	"encoding": "utf-8",
	"name": "<YOUR_DOCUMENT_IMPORT_NAME>"
}'
# Create the execution
curl -X POST \
  https://api.mediarithmics.com/v1/datamarts/<DATAMART_ID>/document_imports/<DOCUMENT_IMPORT_ID>/executions \
  -H 'Authorization: <API_TOKEN>' \
  -H 'Content-Type: application/x-ndjson' \
  -d '{ 
        "operation": "UPSERT",
        "compartment_id": "<COMPARTMENT_ID>", 
        "user_account_id": "<USER_ACCOUNT_ID>",
        "force_replace": false,
        "user_profile": {
              this": "is",
              "a":"test"
        }
      }'

You can, of course, upload multiple user profiles at once. Note the uploaded data is in ndjson and not json. That means the different profiles are not separated by commas, but by a line separator \n

When importing profiles with identifiers, only one identifier is allowed per line. For example, you shouldn't specify the user agent ID if the Email Hash is already used in a line.

More details on merge_objects behavior :

# Stored profile:
{
  "my_property_1": "value1",
  "my_property_2": "value1",
  "my_array_property": ["value1"]
  "my_array_object_property": [
    {
      "my_sub_array_object_property_1": "value1",
      "my_sub_array_object_property_2": "value1"
    }
  ],
  "my_object_property": {
    "my_sub_object_property_1": "value1",
    "my_sub_object_property_2": "value1"
  }    
}


# New profile in request payload
curl -X POST \
  https://api.mediarithmics.com/v1/datamarts/<DATAMART_ID>/document_imports/<DOCUMENT_IMPORT_ID>/executions \
  -H 'Authorization: <API_TOKEN>' \
  -H 'Content-Type: application/x-ndjson' \
  -d '{ 
        "operation": "UPSERT",
        "compartment_id": "<COMPARTMENT_ID>", 
        "user_account_id": "<USER_ACCOUNT_ID>",
        "force_replace": false,
        "merge_objects": true,
        "user_profile": {
          "my_property_2": "value2",
          "my_property_3": "value3",
          "my_array_property": ["value2"]
          "my_array_object_property": [
            {
              "my_sub_array_object_property_2": "value2"
              "my_sub_array_object_property_3": "value3"
            }
          ],
          "my_object_property": {
            "my_sub_object_property_2": "value2"
            "my_sub_object_property_3": "value3"
          }    
        }
      }'

# New saved profile:
{
  "my_property_1": "value1",
  "my_property_2": "value2", # override scalar property
  "my_property_3": "value3",
  "my_array_property": ["value1","value2"] # merge arrays
  "my_array_object_property": [ # merge arrays
    {
      "my_sub_array_object_property_1": "value1"
      "my_sub_array_object_property_2": "value1"
    },
    {
      "my_sub_array_object_property_2": "value2"
      "my_sub_array_object_property_3": "value3"
    }
  ],
  "my_object_property": { # merge objects
    "my_sub_object_property_1": "value1"
    "my_sub_object_property_2": "value2" # override scalar property within object
    "my_sub_object_property_3": "value3"
  }    
}

Last updated