Import users from applications
This type of pipeline imports users from an application into the workspace's data warehouse. It is available only for source application connections that support users.
Create pipeline
Create a source pipeline to import users from an application.
Request
-
name
string RequiredThe pipeline's name.
Must be a non-empty string with a maximum of 60 characters. -
connection
int RequiredThe ID of the connection from which to read the users. It must be a source application that can import users.
-
target
string RequiredThe entity on which the pipeline operates, which must be
Possible values:"User"in order to create a pipeline that imports users."User". -
enabled
booleanIndicates if the pipeline is enabled once created.
-
filter
nullable objectThe filter applied to the application users. If it's not null, only the application users that match the filter will be included, otherwise all users will be included.
See the filters documentation for more details.
-
filter.logical
string Required Possible values:"and"or"or". -
filter.conditions
array of object RequiredA filter's condition.
-
property
string RequiredThe name or path of the property. If the property has a
jsontype, it can include a json path. -
operator
string RequiredThe condition's operator. The allowed values depend on the property's type.
Possible values:"is","is not","is less than","is less than or equal to","is greater than","is greater than or equal to","is between","is not between","contains","does not contain","is one of","is not one of","starts with","ends with","is before","is on or before","is after","is on or after","is true","is false","is empty","is not empty","is null","is not null","exists"or"does not exist". -
values
array of stringThe values the operator applies to, if any. These depend on both the operator and the property's type, including whether they're present and how many there are.
-
-
-
incremental
booleanDetermines whether users are imported incrementally:
true: imports only users who were created or updated since the last import.false: imports all users, regardless of previous imports.
-
transformation
object RequiredThe mapping or function responsible for transforming application users into identities linked to the pipeline. Once the identity resolution process is complete, the identities associated with all pipelines are merged into profiles.
One of either a mapping or a function must be provided, but not both. The one that is not provided can be either missing or set to null.
-
transformation.mapping
nullable object with string values Conditionally RequiredThe transformation mapping. A key represents a property path in the profile schema, and its corresponding value is an expression. This expression can reference property paths from the source schema of the application.
-
transformation.function
nullable object Conditionally RequiredThe transformation function. A JavaScript or Python function that given an application user, returns an identity.
-
transformation.function.source
string RequiredThe source code of the JavaScript or Python function.
Must be a non-empty string with a maximum of 50000 characters. -
transformation.function.language
string RequiredThe language of the function.
Possible values:"JavaScript"or"Python". -
transformation.function.preserveJSON
booleanSpecifies whether JSON values are passed to and returned from the function as strings, keeping their original format without any encoding or decoding.
-
transformation.function.inPaths
array of string RequiredThe paths of the properties that will be passed to the function. At least one path must be present.
-
transformation.function.outPaths
array of string RequiredThe paths of the properties that may be returned by the function. At least one path must be present.
-
-
-
inSchema
schema RequiredThe schema for the properties used in the filter, as well as the input properties for the transformation.
When importing users from apps, this should be a subset of the application's destination schema.
-
outSchema
schema RequiredThe schema for the output properties of the transformation.
When importing users from apps, this should be a subset of the profile schema.
Response
-
id
intThe ID of the pipeline.
curl https://example.com/v1/pipelines \ -H "Authorization: Bearer api_xxxxxxx" \ --json '{ "name": "Import newsletter subscribers", "connection": 230527183, "target": "User", "enabled": true, "filter": { "logical": "and", "conditions": [ { "property": "country", "operator": "is", "values": [ "US" ] } ] }, "incremental": true, "transformation": { "function": { "source": "const transform = (user) => { ... }", "language": "JavaScript", "preserveJSON": false, "inPaths": [ "email", "firstName", "lastName" ], "outPaths": [ "email", "first_name", "last_name" ] } }, "inSchema": { "kind": "object", "properties": [ { "name": "email", "type": { "kind": "string" } }, { "name": "firstName", "type": { "kind": "string" }, "nullable": true }, { "name": "lastName", "type": { "kind": "string" }, "nullable": true }, { "name": "country", "type": { "kind": "string", "maxLength": 2 }, "nullable": true } ] }, "outSchema": { "kind": "object", "properties": [ { "name": "first_name", "type": { "kind": "string", "maxLength": 100 }, "readOptional": true, "description": "First name" }, { "name": "last_name", "type": { "kind": "string", "maxLength": 100 }, "readOptional": true, "description": "Last name" }, { "name": "email", "type": { "kind": "string", "maxLength": 254 }, "readOptional": true, "description": "Email" } ] } }' {
"id": 705981339
}Update pipeline
Update a source pipeline that imports users from an application.
Request
-
:id
int RequiredThe ID of the source application pipeline to update.
-
name
string RequiredThe pipeline's name.
Must be a non-empty string with a maximum of 60 characters. -
enabled
booleanIndicates if the pipeline is enabled. Use the Set status endpoint to change only the pipeline's status.
-
filter
nullable objectThe filter applied to the application users. If it's not null, only the application users that match the filter will be included, otherwise all users will be included.
See the filters documentation for more details.
-
filter.logical
string Required Possible values:"and"or"or". -
filter.conditions
array of object RequiredA filter's condition.
-
property
string RequiredThe name or path of the property. If the property has a
jsontype, it can include a json path. -
operator
string RequiredThe condition's operator. The allowed values depend on the property's type.
Possible values:"is","is not","is less than","is less than or equal to","is greater than","is greater than or equal to","is between","is not between","contains","does not contain","is one of","is not one of","starts with","ends with","is before","is on or before","is after","is on or after","is true","is false","is empty","is not empty","is null","is not null","exists"or"does not exist". -
values
array of stringThe values the operator applies to, if any. These depend on both the operator and the property's type, including whether they're present and how many there are.
-
-
-
incremental
booleanDetermines whether users are imported incrementally:
true: imports only users who were created or updated since the last import.false: imports all users, regardless of previous imports.
-
transformation
object RequiredThe mapping or function responsible for transforming application users into identities linked to the pipeline. Once the identity resolution process is complete, the identities associated with all pipelines are merged into profiles.
One of either a mapping or a function must be provided, but not both. The one that is not provided can be either missing or set to null.
-
transformation.mapping
nullable object with string values Conditionally RequiredThe transformation mapping. A key represents a property path in the profile schema, and its corresponding value is an expression. This expression can reference property paths from the source schema of the application.
-
transformation.function
nullable object Conditionally RequiredThe transformation function. A JavaScript or Python function that given an application user, returns an identity.
-
transformation.function.source
string RequiredThe source code of the JavaScript or Python function.
Must be a non-empty string with a maximum of 50000 characters. -
transformation.function.language
string RequiredThe language of the function.
Possible values:"JavaScript"or"Python". -
transformation.function.preserveJSON
booleanSpecifies whether JSON values are passed to and returned from the function as strings, keeping their original format without any encoding or decoding.
-
transformation.function.inPaths
array of string RequiredThe paths of the properties that will be passed to the function. At least one path must be present.
-
transformation.function.outPaths
array of string RequiredThe paths of the properties that may be returned by the function. At least one path must be present.
-
-
-
inSchema
schema RequiredThe schema for the properties used in the filter, as well as the input properties for the transformation.
When importing users from apps, this should be a subset of the application's destination schema.
-
outSchema
schema RequiredThe schema for the output properties of the transformation.
When importing users from apps, this should be a subset of the profile schema.
Response
No response.curl -X PUT https://example.com/v1/pipelines/705981339 \ -H "Authorization: Bearer api_xxxxxxx" \ --json '{ "name": "Import newsletter subscribers", "enabled": true, "filter": { "logical": "and", "conditions": [ { "property": "country", "operator": "is", "values": [ "US" ] } ] }, "incremental": true, "transformation": { "function": { "source": "const transform = (user) => { ... }", "language": "JavaScript", "preserveJSON": false, "inPaths": [ "email", "firstName", "lastName" ], "outPaths": [ "email", "first_name", "last_name" ] } }, "inSchema": { "kind": "object", "properties": [ { "name": "email", "type": { "kind": "string" } }, { "name": "firstName", "type": { "kind": "string" }, "nullable": true }, { "name": "lastName", "type": { "kind": "string" }, "nullable": true }, { "name": "country", "type": { "kind": "string", "maxLength": 2 }, "nullable": true } ] }, "outSchema": { "kind": "object", "properties": [ { "name": "first_name", "type": { "kind": "string", "maxLength": 100 }, "readOptional": true, "description": "First name" }, { "name": "last_name", "type": { "kind": "string", "maxLength": 100 }, "readOptional": true, "description": "Last name" }, { "name": "email", "type": { "kind": "string", "maxLength": 254 }, "readOptional": true, "description": "Email" } ] } }' Get pipeline
Get a source pipeline that imports users from an application application.
Request
-
:id
int RequiredThe ID of the source application pipeline that imports users.
Response
-
id
intThe ID of the source application pipeline that imports users.
-
name
stringThe pipeline's name.
It is not longer than 60 characters. -
connector
stringThe code of the connection's connector.
-
connectorType
stringThe type of the connection's connector. It is always
Possible values:"Application"when the pipeline imports users from an application."Application","Database","FileStorage","MessageBroker","SDK"or"Webhook". -
connection
intThe ID of the connection from which users are read. It is a source application that supports users.
-
connectionRole
stringThe role of the pipeline's connection. It is always
Possible values:"Source"when the pipeline imports users from an application."Source"or"Destination". -
target
stringThe entity on which the pipeline operates. It is always
Possible values:"User"when the pipeline imports users from an application."User"or"Event". -
enabled
booleanIndicates if the pipeline is enabled.
-
filter
nullable objectThe filter applied to the application users. If it's not null, only the application users that match the filter will be included, otherwise all users will be included.
See the filters documentation for more details.
-
filter.logical
string Possible values:"and"or"or". -
filter.conditions
array of objectA filter's condition.
-
property
stringThe name or path of the property. If the property has a
jsontype, it can include a json path. -
operator
stringThe condition's operator. The allowed values depend on the property's type.
Possible values:"is","is not","is less than","is less than or equal to","is greater than","is greater than or equal to","is between","is not between","contains","does not contain","is one of","is not one of","starts with","ends with","is before","is on or before","is after","is on or after","is true","is false","is empty","is not empty","is null","is not null","exists"or"does not exist". -
values
array of stringThe values the operator applies to, if any. These depend on both the operator and the property's type, including whether they're present and how many there are.
-
-
-
incremental
booleanIndicates whether users are imported incrementally:
true: imports only users who were created or updated since the last import.false: imports all users, regardless of previous imports.
-
transformation
objectThe mapping or function responsible for transforming application users into user identities linked to the pipeline. Once identity resolution is completed, the user identities associated to all pipelines are merged into unified users.
One of either a mapping or a function is present, but not both. The one that is not present is null.
-
transformation.mapping
nullable object with string valuesThe transformation mapping. A key represents a property path in the profile schema, and its corresponding value is an expression. This expression can reference property paths from the source schema of the application.
-
transformation.function
nullable objectThe transformation function. A JavaScript or Python function that given an application user, returns an identity.
-
transformation.function.source
stringThe source code of the JavaScript or Python function.
It is not longer than 50000 characters. -
transformation.function.language
stringThe language of the function.
Possible values:"JavaScript"or"Python". -
transformation.function.preserveJSON
booleanSpecifies whether JSON values are passed to and returned from the function as strings, keeping their original format without any encoding or decoding.
-
transformation.function.inPaths
array of stringThe paths of the properties that will be passed to the function. It contains at least one property path.
-
transformation.function.outPaths
array of stringThe paths of the properties that may be returned by the function. It contains at least one property path.
-
-
-
inSchema
schemaThe schema for the properties used in the filter, as well as the input properties for the transformation.
-
outSchema
schemaThe schema for the output properties of the transformation.
-
running
booleanIndicates if the pipeline is running.
-
scheduleStart
nullable intThe start time of the schedule in minutes, counting from 00:00. It specifies the minute when the first scheduled run of the day begins. Subsequent runs occur based on the interval defined by the scheduler period. If the scheduler is disabled, this value is null.
-
schedulePeriod
nullable stringThe schedule period, which determines how often the import runs automatically. If it is null, the scheduler is disabled, and no automatic run will occur.
To change the schedule period, use the Set schedule period endpoint.
Possible values:"5m","15m","30m","1h","2h","3h","6h","8h","12h"or"24h".
curl https://example.com/v1/pipelines/705981339 \ -H "Authorization: Bearer api_xxxxxxx" {
"id": 705981339,
"name": "Import newsletter subscribers",
"connector": "hubspot",
"connectorType": "Application",
"connection": 1371036433,
"connectionRole": "Source",
"target": "User",
"enabled": true,
"filter": {
"logical": "and",
"conditions": [
{
"property": "country",
"operator": "is",
"values": [
"US"
]
}
]
},
"incremental": true,
"transformation": {
"mapping": {
"first_name": "contact.firstname",
"last_name": "contact.lastname",
"email": "contact.email"
}
},
"inSchema": {
"kind": "object",
"properties": [
{
"name": "email",
"type": {
"kind": "string"
}
},
{
"name": "firstName",
"type": {
"kind": "string"
},
"nullable": true
},
{
"name": "lastName",
"type": {
"kind": "string"
},
"nullable": true
},
{
"name": "country",
"type": {
"kind": "string",
"maxLength": 2
},
"nullable": true
}
]
},
"outSchema": {
"kind": "object",
"properties": [
{
"name": "first_name",
"type": {
"kind": "string",
"maxLength": 100
},
"readOptional": true,
"description": "First name"
},
{
"name": "last_name",
"type": {
"kind": "string",
"maxLength": 100
},
"readOptional": true,
"description": "Last name"
},
{
"name": "email",
"type": {
"kind": "string",
"maxLength": 254
},
"readOptional": true,
"description": "Email"
}
]
},
"running": false,
"scheduleStart": 15,
"schedulePeriod": "1h"
}