Target Data Model API
Target data models define the structure of the output data in all nuvo pipelines. They ensure that the mapped and transformed data is organized according to the desired format and schema required by the destination system.
Within a target data model, you can define the name of each column at both a UI-based level (label
) and a technical level (key
). Additionally, you can apply required
, unique
, and regex
validations, as well as specify the column type (e.g., float, int, date, currency, etc.).
This ensures that the pipeline’s output not only has the correct structure but also that the values are in the correct format.
Use this base URL and add the corresponding endpoint respectively:
Base URL
api-gateway.getnuvo.com/dp/api/v1/
Create
Endpoint
POST /tdm/
Payload
Attributes
name
The name of the TDM
columns
List of all columns in your TDM
key
The column key used to uniquely identify each column
label
The name of the column as displayed to users in the interface
columnType
The type of the column, defining which data type and format is expected for this column. Learn more about column types here
mappingValidation
advancedValidations
url
The endpoint that recevies the data
method
The REST API method to use for the request
headers
The list of key-value pairs that define the headers for the request
authentication
Defines your refresh token endpoint to obtain a new access token after the previous one has expired. This mechanism is more secure and allows you to re-authenticate every time you need to obtain a new access token
refresh_url
The endpoint to retrieve the access token from
method
The REST API method to use for the request
headers
The list of key-value pairs that define the headers for the request
payloadConfiguration
Defines which columns' data is sent to the endpoint and the size of the batches the data is sent in
columns
The list of columns that are sent to the endpoint
batchSize
The size of the badges that are sent to the endpoint. The default is 25.000 rows per badge.
triggerConfiguration
Defines which columns trigger sending the data to the endpoint for validation
columns
The list of columns that trigger sending the data to the endpoint
permissions
Defines whether the TDM should be available to all your sub-organizations or only for internal use
level
PUBLIC
: The TDM can also be used by sub-organizationsPRIVATE
: The TDM can only be used by users within your organization
Payload
{
"name": "string",
"columns": [
{
"key": "string",
"label": "string",
"columnType": "string",
"mappingValidation": {
"logic": "mapped('column_name')",
"errorMessage": "Column has to be mapped."
},
"dataValidations": [
{
"logic": "row.column_name !== ''",
"errorMessage": "Column is required."
},
{
"logic": "regex(row.column_name, { expression: '^[^@]+@[^@]+$' })",
"errorMessage": "Invalid format."
},
{
"logic": "unique(['column_name'])",
"errorMessage": "The column_name must be unique across all entries."
}
]
}
],
"advancedValidations": [
{
"url": "string",
"method": "string",
"headers": {},
"authentication":{
"refresh_url": "string",
"method": "string",
"headers": {}
},
"payloadConfiguration":{
"columns": [],
"batchSize": 25000
}
"triggerConfiguration":{
"columns": []
}
}
],
"permissions": {
"level": "PUBLIC"
}
}
Response
Attributes
id
The ID of the TDM
name
The name of the TDM
columns
List of all columns in your TDM
key
The column key used to uniquely identify each column
label
The name of the column as displayed to users in the interface
columnType
The type of the column, defining which data type and format is expected for this column. Learn more about column types here
mappingValidation
advancedValidations
url
The endpoint that recevies the data
method
The REST API method to use for the request
headers
The list of key-value pairs that define the headers for the request
authentication
Defines your refresh token endpoint to obtain a new access token after the previous one has expired. This mechanism is more secure and allows you to re-authenticate every time you need to obtain a new access token
refresh_url
The endpoint to retrieve the access token from
method
The REST API method to use for the request
headers
The list of key-value pairs that define the headers for the request
payloadConfiguration
Defines which columns' data is sent to the endpoint and the size of the batches the data is sent in
columns
The list of columns that are sent to the endpoint
batchSize
The size of the badges that are sent to the endpoint. The default is 25.000 rows per badge.
triggerConfiguration
Defines which columns trigger sending the data to the endpoint for validation
columns
The list of columns that trigger sending the data to the endpoint
permissions
Defines whether the TDM should be available to all your sub-organizations or only for internal use
level
PUBLIC
: The TDM can also be used by sub-organizationsPRIVATE
: The TDM can only be used by users within your organization
created_at
The date and time when the TDM was first created
created_by
Information about whom created the TDM
id
The ID of the user or sub-organization who created the TDM
name
The name of the user or sub-organization who created the TDM
identifier
The identifier of the user or sub-organization who created the TDM
type
Defines the type of user who created the TDM:
USER
: A user of your organizationSUB_ORG
: A sub-organization that is part of your organization
updated_at
The date and time when the TDM was last updated
updated_by
Information about whom last updated the TDM
id
The ID of the user or sub-organization who last updated the TDM
name
The name of the user or sub-organization who last updated the TDM
identifier
The identifier of the user or sub-organization who last updated the TDM
type
Defines the type of user who last updated the TDM:
USER
: A user of your organizationSUB_ORG
: A sub-organization that is part of your organization
Response
{
"data": {
"id": "string",
"name": "string",
"columns": [
{
"key": "string",
"label": "string",
"columnType": "string",
"mappingValidation": {
"logic": "mapped('column_name')",
"errorMessage": "Column has to be mapped."
},
"dataValidations": [
{
"logic": "row.column_name !== ''",
"errorMessage": "Column is required."
},
{
"logic": "regex(row.column_name, { expression: '^[^@]+@[^@]+$' })",
"errorMessage": "Invalid format."
},
{
"logic": "unique(['column_name'])",
"errorMessage": "The column_name must be unique across all entries."
}
]
}
],
"advancedValidations": [
{
"url": "string",
"method": "string",
"headers": {},
"authentication":{
"refresh_url": "string",
"method": "string",
"headers": {}
},
"payloadConfiguration":{
"columns": [],
"batchSize": 25000
}
"triggerConfiguration":{
"columns": []
}
}
],
"permissions": {
"level": "PUBLIC"
},
"created_at": "2022-03-07 12:48:28.653",
"created_by": {
"id": "string",
"name": "string",
"identifier": "string",
"type": "USER"
},
"updated_at": "2022-03-07 12:48:28.653",
"updated_by": {
"id": "string",
"name": "string",
"identifier": "string",
"type": "USER"
}
}
}
Example
curl -X 'POST' 'https://api-gateway.getnuvo.com/dp/api/v1/tdm' \
-H 'accept: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "New TDM name",
"columns": [
{
"key": "company_name",
"label": "Company name",
"columnType": "string",
"mappingValidation": {
"logic": "mapped('company_name')",
"errorMessage": "Column has to be mapped."
},
"dataValidations": [
{
"logic": "row.company_name !== ''",
"errorMessage": "Column is required."
},
{
"logic": "regex(row.company_name, { expression: '^[a-zA-Z ]*$' })",
"errorMessage": "Invalid format."
},
{
"logic": "unique(['company_name'])",
"errorMessage": "The company name must be unique across all entries."
}
]
}
],
"advancedValidations": [
{
"url": "https://your-endpoint.com",
"method": "POST",
"headers": {},
"authentication":{
"refresh_url": "https://your-authentication-endpoint.com",
"method": "POST",
"headers": {}
},
"payloadConfiguration":{
"columns": ['company_name'],
"batchSize": 25000
}
"triggerConfiguration":{
"columns": ['company_name']
}
}
],
"permissions": {
"level": "PUBLIC"
}
}'
Update
Endpoint
PUT /tdm/{id}
Payload
Attributes
name
The name of the TDM
columns
List of all columns in your TDM
key
The column key used to uniquely identify each column
label
The name of the column as displayed to users in the interface
columnType
The type of the column, defining which data type and format is expected for this column. Learn more about column types here
mappingValidation
advancedValidations
url
The endpoint that recevies the data
method
The REST API method to use for the request
headers
The list of key-value pairs that define the headers for the request
authentication
Defines your refresh token endpoint to obtain a new access token after the previous one has expired. This mechanism is more secure and allows you to re-authenticate every time you need to obtain a new access token
refresh_url
The endpoint to retrieve the access token from
method
The REST API method to use for the request
headers
The list of key-value pairs that define the headers for the request
payloadConfiguration
Defines which columns' data is sent to the endpoint and the size of the batches the data is sent in
columns
The list of columns that are sent to the endpoint
batchSize
The size of the badges that are sent to the endpoint. The default is 25.000 rows per badge.
triggerConfiguration
Defines which columns trigger sending the data to the endpoint for validation
columns
The list of columns that trigger sending the data to the endpoint
permissions
Defines whether the TDM should be available to all your sub-organizations or only for internal use
level
PUBLIC
: The TDM can also be used by sub-organizationsPRIVATE
: The TDM can only be used by users within your organization
Payload
{
"name": "string",
"columns": [
{
"key": "string",
"label": "string",
"columnType": "string",
"mappingValidation": {
"logic": "mapped('column_name')",
"errorMessage": "Column has to be mapped."
},
"dataValidations": [
{
"logic": "row.column_name !== ''",
"errorMessage": "Column is required."
},
{
"logic": "regex(row.column_name, { expression: '^[^@]+@[^@]+$' })",
"errorMessage": "Invalid format."
},
{
"logic": "unique(['column_name'])",
"errorMessage": "The column_name must be unique across all entries."
}
]
}
],
"advancedValidations": [
{
"url": "string",
"method": "string",
"headers": {},
"authentication":{
"refresh_url": "string",
"method": "string",
"headers": {}
},
"payloadConfiguration":{
"columns": [],
"batchSize": 25000
}
"triggerConfiguration":{
"columns": []
}
}
],
"permissions": {
"level": "PUBLIC"
}
}
Response
Attributes
id
The ID of the TDM
name
The name of the TDM
columns
List of all columns in your TDM
key
The column key used to uniquely identify each column
label
The name of the column as displayed to users in the interface
columnType
The type of the column, defining which data type and format is expected for this column. Learn more about column types here
mappingValidation
advancedValidations
url
The endpoint that recevies the data
method
The REST API method to use for the request
headers
The list of key-value pairs that define the headers for the request
authentication
Defines your refresh token endpoint to obtain a new access token after the previous one has expired. This mechanism is more secure and allows you to re-authenticate every time you need to obtain a new access token
refresh_url
The endpoint to retrieve the access token from
method
The REST API method to use for the request
headers
The list of key-value pairs that define the headers for the request
payloadConfiguration
Defines which columns' data is sent to the endpoint and the size of the batches the data is sent in
columns
The list of columns that are sent to the endpoint
batchSize
The size of the badges that are sent to the endpoint. The default is 25.000 rows per badge.
triggerConfiguration
Defines which columns trigger sending the data to the endpoint for validation
columns
The list of columns that trigger sending the data to the endpoint
permissions
Defines whether the TDM should be available to all your sub-organizations or only for internal use
level
PUBLIC
: The TDM can also be used by sub-organizationsPRIVATE
: The TDM can only be used by users within your organization
created_at
The date and time when the TDM was first created
created_by
Information about whom created the TDM
id
The ID of the user or sub-organization who created the TDM
name
The name of the user or sub-organization who created the TDM
identifier
The identifier of the user or sub-organization who created the TDM
type
Defines the type of user who created the TDM:
USER
: A user of your organizationSUB_ORG
: A sub-organization that is part of your organization
updated_at
The date and time when the TDM was last updated
updated_by
Information about whom last updated the TDM
id
The ID of the user or sub-organization who last updated the TDM
name
The name of the user or sub-organization who last updated the TDM
identifier
The identifier of the user or sub-organization who last updated the TDM
type
Defines the type of user who last updated the TDM:
USER
: A user of your organizationSUB_ORG
: A sub-organization that is part of your organization
Response
{
"data": {
"id": "string",
"name": "string",
"columns": [
{
"key": "string",
"label": "string",
"columnType": "string",
"mappingValidation": {
"logic": "mapped('column_name')",
"errorMessage": "Column has to be mapped."
},
"dataValidations": [
{
"logic": "row.column_name !== ''",
"errorMessage": "Column is required."
},
{
"logic": "regex(row.column_name, { expression: '^[^@]+@[^@]+$' })",
"errorMessage": "Invalid format."
},
{
"logic": "unique(['column_name'])",
"errorMessage": "The column_name must be unique across all entries."
}
]
}
],
"advancedValidations": [
{
"url": "string",
"method": "string",
"headers": {},
"authentication":{
"refresh_url": "string",
"method": "string",
"headers": {}
},
"payloadConfiguration":{
"columns": [],
"batchSize": 25000
}
"triggerConfiguration":{
"columns": []
}
}
],
"permissions": {
"level": "PUBLIC"
},
"created_at": "2022-03-07 12:48:28.653",
"created_by": {
"id": "string",
"name": "string",
"identifier": "string",
"type": "USER"
},
"updated_at": "2022-03-07 12:48:28.653",
"updated_by": {
"id": "string",
"name": "string",
"identifier": "string",
"type": "USER"
}
}
}
Example
curl -X 'PUT' 'https://api-gateway.getnuvo.com/dp/api/v1/tdm/${tdm_id}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-d '{
"name": "NEW TDM name",
"columns": [
{
"key": "company_name",
"label": "Company name",
"columnType": "string",
"mappingValidation": {
"logic": "mapped('company_name')",
"errorMessage": "Column has to be mapped."
},
"dataValidations": [
{
"logic": "row.company_name !== ''",
"errorMessage": "Column is required."
},
{
"logic": "regex(row.company_name, { expression: '^[a-zA-Z ]*$' })",
"errorMessage": "Invalid format."
},
{
"logic": "unique(['company_name'])",
"errorMessage": "The company name must be unique across all entries."
}
]
}
],
"advancedValidations": [
{
"url": "https://your-endpoint.com",
"method": "POST",
"headers": {},
"authentication":{
"refresh_url": "https://your-authentication-endpoint.com",
"method": "POST",
"headers": {}
},
"payloadConfiguration":{
"columns": ['company_name'],
"batchSize": 25000
}
"triggerConfiguration":{
"columns": ['company_name']
}
}
],
"permissions": {
"level": "PRIVATE"
}
}'
Read by ID
Endpoint
GET /tdm/{id}
Response
Attributes
id
The ID of the TDM
name
The name of the TDM
columns
List of all columns in your TDM
key
The column key used to uniquely identify each column
label
The name of the column as displayed to users in the interface
columnType
The type of the column, defining which data type and format is expected for this column. Learn more about column types here
mappingValidation
advancedValidations
url
The endpoint that recevies the data
method
The REST API method to use for the request
headers
The list of key-value pairs that define the headers for the request
authentication
Defines your refresh token endpoint to obtain a new access token after the previous one has expired. This mechanism is more secure and allows you to re-authenticate every time you need to obtain a new access token
refresh_url
The endpoint to retrieve the access token from
method
The REST API method to use for the request
headers
The list of key-value pairs that define the headers for the request
payloadConfiguration
Defines which columns' data is sent to the endpoint and the size of the batches the data is sent in
columns
The list of columns that are sent to the endpoint
batchSize
The size of the badges that are sent to the endpoint. The default is 25.000 rows per badge.
triggerConfiguration
Defines which columns trigger sending the data to the endpoint for validation
columns
The list of columns that trigger sending the data to the endpoint
permissions
Defines whether the TDM should be available to all your sub-organizations or only for internal use
level
PUBLIC
: The TDM can also be used by sub-organizationsPRIVATE
: The TDM can only be used by users within your organization
created_at
The date and time when the TDM was first created
created_by
Information about whom created the TDM
id
The ID of the user or sub-organization who created the TDM
name
The name of the user or sub-organization who created the TDM
identifier
The identifier of the user or sub-organization who created the TDM
type
Defines the type of user who created the TDM:
USER
: A user of your organizationSUB_ORG
: A sub-organization that is part of your organization
updated_at
The date and time when the TDM was last updated
updated_by
Information about whom last updated the TDM
id
The ID of the user or sub-organization who last updated the TDM
name
The name of the user or sub-organization who last updated the TDM
identifier
The identifier of the user or sub-organization who last updated the TDM
type
Defines the type of user who last updated the TDM:
USER
: A user of your organizationSUB_ORG
: A sub-organization that is part of your organization
Response
{
"data": {
"id": "string",
"name": "string",
"columns": [
{
"key": "string",
"label": "string",
"columnType": "string",
"mappingValidation": {
"logic": "mapped('column_name')",
"errorMessage": "Column has to be mapped."
},
"dataValidations": [
{
"logic": "row.column_name !== ''",
"errorMessage": "Column is required."
},
{
"logic": "regex(row.column_name, { expression: '^[^@]+@[^@]+$' })",
"errorMessage": "Invalid format."
},
{
"logic": "unique(['column_name'])",
"errorMessage": "The column_name must be unique across all entries."
}
]
}
],
"advancedValidations": [
{
"url": "string",
"method": "string",
"headers": {},
"authentication":{
"refresh_url": "string",
"method": "string",
"headers": {}
},
"payloadConfiguration":{
"columns": [],
"batchSize": 25000
}
"triggerConfiguration":{
"columns": []
}
}
],
"permissions": {
"level": "PUBLIC"
},
"created_at": "2022-03-07 12:48:28.653",
"created_by": {
"id": "string",
"name": "string",
"identifier": "string",
"type": "USER"
},
"updated_at": "2022-03-07 12:48:28.653",
"updated_by": {
"id": "string",
"name": "string",
"identifier": "string",
"type": "USER"
}
}
}
Example
curl -X 'GET' 'https://api-gateway.getnuvo.com/dp/api/v1/tdm/${tdmId}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN'
Read all
To further refine the response you can use query parameters like sort
, filters
, pagination
and options
. Look at a more detailed explanation here.
Endpoint
GET /tdm/
Response
Attributes
id
The ID of the TDM
name
The name of the TDM
permissions
Defines whether the TDM should be available to all your sub-organizations or only for internal use
level
PUBLIC
: The TDM can also be used by sub-organizationsPRIVATE
: The TDM can only be used by users within your organization
created_at
The date and time when the TDM was first created
created_by
Information about whom created the TDM
id
The ID of the user or sub-organization who created the TDM
name
The name of the user or sub-organization who created the TDM
identifier
The identifier of the user or sub-organization who created the TDM
type
Defines the type of user who created the TDM:
USER
: A user of your organizationSUB_ORG
: A sub-organization that is part of your organization
updated_at
The date and time when the TDM was last updated
updated_by
Information about whom last updated the TDM
id
The ID of the user or sub-organization who last updated the TDM
name
The name of the user or sub-organization who last updated the TDM
identifier
The identifier of the user or sub-organization who last updated the TDM
type
Defines the type of user who last updated the TDM:
USER
: A user of your organizationSUB_ORG
: A sub-organization that is part of your organization
pagination
An object containing metadata about the result
total
The number of entries in the data array
offset
The offset set in the request parameters
limit
The limit set in the request parameters
Response
{
"data": [
{
"id": "string",
"name": "string",
"permissions": {
"level": "PUBLIC"
},
"created_at": "2022-03-07 12:48:28.653",
"created_by": {
"id": "string",
"name": "string",
"identifier": "string",
"type": "USER"
},
"updated_at": "2022-03-07 12:48:28.653",
"updated_by": {
"id": "string",
"name": "string",
"identifier": "string",
"type": "USER"
}
}
],
"pagination": {
"total": 0,
"offset": 0,
"limit": 0
}
}
Example
curl -X 'GET' 'https://api-gateway.getnuvo.com/dp/api/v1/tdm' \
-H 'accept: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN'
Delete
Endpoint
DELETE /tdm/{id}
Response
Attributes
message
Message confirming the deletion of the TDM or providing an error message
Response
{
"data": {
"message": "string"
}
}
Example
curl -X 'DELETE' 'https://api-gateway.getnuvo.com/dp/api/v1/tdm/${tdmId}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN'