[Source feeds] Update a source configuration.
https://api.wetransform.com/sender/source/{sourceId}
| Parameter | Description | Pattern |
|---|---|---|
{sourceId} |
The source UUID to update |
[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12} |
name
*
string
The name of the source.
data_extractor
*
string
The selected data extractor.
Possible values: upload, url, ftp, sftp, custom, email, api_fetcher
"url"
url
*
object
Describes the URL data extractor.
url.url
string
The URL to which the request is sent.
"https:\/\/example.com"
url.method
string
The HTTP method to use for the request.
Possible values: GET, POST, PUT, DELETE, PATCH
"GET"
url.headers
array
Headers to send along with the request.
Should be an array of hashes, where the key is the header name and the value is the header value.
{
"headers": {
"Authorization": "Bearer 1234567890"
}
}
Can be useful if an Authorization header is required.
url.cookies
array
Cookies to send along with the request.
Should be an array of hashes, where the key is the cookie name and the value is the cookie value.
{
"cookies": {
"session_id": "0987654321"
}
}
Please note that cookies are stateless, we won't change their value based on the response.
url.content_type
*
string
The content type of the body.
Possible values: application/json, application/xml, text/plain, application/x-www-form-urlencoded, multipart/form-data
"application\/json"
url.body
*
string
The body of the request, encoded in the right format.
"{\"foo\":\"bar\"}"
ftp
*
object
Describes the FTP data extractor.
ftp.host
string
The FTP host.
"ftp.example.com"
ftp.port
*
integer
The FTP port.
21
ftp.username
string
The FTP username.
"username"
ftp.password
string
The FTP password.
"password"
ftp.path
string
The FTP path.
It can contain wildcards, we will take the first matching file.
"*.csv"
ftp.is_ssl
*
boolean
Whether to use SSL or not.
false
sftp
*
object
Describes the SFTP data extractor.
sftp.host
string
The SFTP host to connect to.
"example.com"
sftp.port
integer
The SFTP port to connect to.
22
sftp.username
string
The username to use for the SFTP connection.
"username"
sftp.password
*
string
The password to use for the SFTP connection.
"password"
sftp.path
string
The path to the file or directory to send.
The path can contain wildcards, e.g. /path/to/files/*.csv, we will take the first file that matches the pattern.
"\/path\/to\/files\/file.csv"
sftp.private_key
*
string
The key to use for the SFTP connection.
custom
*
object
Describes the custom data extractor.
custom.custom_data_extractor_id
*
string
The custom data extractor's ID.
This or handle must be set.
"13ba0ac2-e6bb-4b07-8bd9-7a16e9017acc"
custom.handle
*
string
The custom data extractor's handle.
This or customDataExtractorId must be set.
"my-export"
custom.metadata
array
Metadata attached to the custom data extractor.
custom.metadata[].name
string
"date"
custom.metadata[].value
*
string
"2023-01-01"
* are nullable.
{
"name": null,
"data_extractor": "url",
"url": {
"url": "https:\/\/example.com",
"method": "GET",
"headers": {
"Authorization": "Bearer 1234567890"
},
"cookies": {
"secret": "0987654321"
},
"content_type": "application\/json",
"body": "{\"foo\":\"bar\"}"
},
"ftp": {
"host": "ftp.example.com",
"port": 21,
"username": "username",
"password": "password",
"path": "*.csv",
"is_ssl": false
},
"sftp": {
"host": "example.com",
"port": 22,
"username": "username",
"password": "password",
"path": "\/path\/to\/files\/file.csv",
"private_key": null
},
"custom": null
}
Copy
success
boolean
Always true on successful responses.
true
payload
object
Payload of the requested resource.
payload.source_id
*
string
The source ID.
payload.name
*
string
The name of the source.
payload.data_extractor
*
string
The selected data extractor.
Possible values: upload, url, ftp, sftp, custom, email, api_fetcher
"url"
payload.url
*
object
Describes the URL data extractor.
payload.url.url
string
The URL to which the request is sent.
"https:\/\/example.com"
payload.url.method
string
The HTTP method to use for the request.
Possible values: GET, POST, PUT, DELETE, PATCH
"GET"
payload.url.headers
array
Headers to send along with the request.
Should be an array of hashes, where the key is the header name and the value is the header value.
{
"headers": {
"Authorization": "Bearer 1234567890"
}
}
Can be useful if an Authorization header is required.
payload.url.cookies
array
Cookies to send along with the request.
Should be an array of hashes, where the key is the cookie name and the value is the cookie value.
{
"cookies": {
"session_id": "0987654321"
}
}
Please note that cookies are stateless, we won't change their value based on the response.
payload.url.content_type
*
string
The content type of the body.
Possible values: application/json, application/xml, text/plain, application/x-www-form-urlencoded, multipart/form-data
"application\/json"
payload.url.body
*
string
The body of the request, encoded in the right format.
"{\"foo\":\"bar\"}"
payload.ftp
*
object
Describes the FTP data extractor.
payload.ftp.host
string
The FTP host.
"ftp.example.com"
payload.ftp.port
*
integer
The FTP port.
21
payload.ftp.username
string
The FTP username.
"username"
payload.ftp.password
string
The FTP password.
"password"
payload.ftp.path
string
The FTP path.
It can contain wildcards, we will take the first matching file.
"*.csv"
payload.ftp.is_ssl
*
boolean
Whether to use SSL or not.
false
payload.sftp
*
object
Describes the SFTP data extractor.
payload.sftp.host
string
The SFTP host to connect to.
"example.com"
payload.sftp.port
integer
The SFTP port to connect to.
22
payload.sftp.username
string
The username to use for the SFTP connection.
"username"
payload.sftp.password
*
string
The password to use for the SFTP connection.
"password"
payload.sftp.path
string
The path to the file or directory to send.
The path can contain wildcards, e.g. /path/to/files/*.csv, we will take the first file that matches the pattern.
"\/path\/to\/files\/file.csv"
payload.sftp.private_key
*
string
The key to use for the SFTP connection.
payload.custom
*
object
Describes the custom data extractor.
payload.custom.custom_data_extractor_id
*
string
The custom data extractor's ID.
This or handle must be set.
"c32fef5b-6ace-46fe-a987-0eb733fd0814"
payload.custom.handle
*
string
The custom data extractor's handle.
This or customDataExtractorId must be set.
"my-export"
payload.custom.metadata
array
Metadata attached to the custom data extractor.
payload.custom.metadata[].name
string
"date"
payload.custom.metadata[].value
*
string
"2023-01-01"
product
*
object
A product needed.
Not null if user requires to buy a specific product (permission or limitation) in order to access a feature.
product.requirement
*
string
Whether the user requested a features s/he doesn't have access to,
or the user needs greater limits.
Possible values: permission, limitation
"permission"
product.permission
*
object
The required permission.
You will need to know which permission is needed in order to fill up search filters in the shop.
product.permission.description
*
string
A human-understandable name for the permission.
product.permission.name
string
A technical permission name (ex: ORGANISATION_UPDATE_SETTINGS).
Possible values depend on the context, check the domain's metadata endpoint.
"X_SOURCE_FORMAT_XML"
product.limitation_type
*
string
The limitation that needs to be increased (ex: number of columns).
product.limitation_needed_value
*
integer
The needed resource quantity (if receiver uses 9 columns in a template, this value is 9).
product.limitation_current_value
*
integer
The current value of the limitation (if receiver is allowed to use 10 columns, this value is 10).
product.limitation_object
*
object
The limitation type in a readable format, for example, "lines per file".
product.is_cta
*
boolean
Whether a Call To Action should be displayed.
It may not be displayed if:
- the limitation is on the membership role
- the limitation is on the customer role
- the user is a sender
template_handle
*
string
Handle of the template currently in context, if any.
Many endpoints (and frontend components) require a template_handle. It is
exposed here so consumers — most notably the AI agent — can reuse it
instead of having to ask the user for it again.
"new-hires"
source_id
*
string
UUID of the source currently in context, if any.
Many endpoints (and frontend components) require a source_id (the source
UUID, not its database id). It is exposed here so consumers — most notably
the AI agent — can reuse it instead of having to ask the user for it again.
"9e7060d4-9314-4783-883a-8702471ccd39"
debug
array
Debug information.
Contains logs about business logic explaining state of the response payload.
Provided in development & admin modes only.
* are nullable.
{
"success": true,
"payload": {
"source_id": null,
"name": null,
"data_extractor": "url",
"url": {
"url": "https:\/\/example.com",
"method": "GET",
"headers": {
"Authorization": "Bearer 1234567890"
},
"cookies": {
"secret": "0987654321"
},
"content_type": "application\/json",
"body": "{\"foo\":\"bar\"}"
},
"ftp": {
"host": "ftp.example.com",
"port": 21,
"username": "username",
"password": "password",
"path": "*.csv",
"is_ssl": false
},
"sftp": {
"host": "example.com",
"port": 22,
"username": "username",
"password": "password",
"path": "\/path\/to\/files\/file.csv",
"private_key": null
},
"custom": null
},
"product": {
"requirement": "permission",
"permission": {
"name": "X_SOURCE_FORMAT_XML",
"description": "Can import XML files"
},
"limitation_type": null,
"limitation_needed_value": null,
"limitation_current_value": null,
"limitation_object": null,
"is_cta": false
},
"template_handle": "new-hires",
"source_id": "9e7060d4-9314-4783-883a-8702471ccd39",
"debug": []
}
Copy
The client sent an unexpected request.
It happens if the client sent an invalid JSON payload, or if the JSON payload cannot be mapped to the expected request object.
success
boolean
Always false on error responses.
false
payload
object
Context about the error, if any.
product
*
object
A product needed.
Not null if user requires to buy a specific product (permission or limitation) in order to access a feature.
product.requirement
*
string
Whether the user requested a features s/he doesn't have access to,
or the user needs greater limits.
Possible values: permission, limitation
"permission"
product.permission
*
object
The required permission.
You will need to know which permission is needed in order to fill up search filters in the shop.
product.permission.description
*
string
A human-understandable name for the permission.
product.permission.name
string
A technical permission name (ex: ORGANISATION_UPDATE_SETTINGS).
Possible values depend on the context, check the domain's metadata endpoint.
"X_SOURCE_FORMAT_XML"
product.limitation_type
*
string
The limitation that needs to be increased (ex: number of columns).
product.limitation_needed_value
*
integer
The needed resource quantity (if receiver uses 9 columns in a template, this value is 9).
product.limitation_current_value
*
integer
The current value of the limitation (if receiver is allowed to use 10 columns, this value is 10).
product.limitation_object
*
object
The limitation type in a readable format, for example, "lines per file".
product.is_cta
*
boolean
Whether a Call To Action should be displayed.
It may not be displayed if:
- the limitation is on the membership role
- the limitation is on the customer role
- the user is a sender
template_handle
*
string
Handle of the template currently in context, if any.
Many endpoints (and frontend components) require a template_handle. It is
exposed here so consumers — most notably the AI agent — can reuse it
instead of having to ask the user for it again.
"new-hires"
source_id
*
string
UUID of the source currently in context, if any.
Many endpoints (and frontend components) require a source_id (the source
UUID, not its database id). It is exposed here so consumers — most notably
the AI agent — can reuse it instead of having to ask the user for it again.
"9e7060d4-9314-4783-883a-8702471ccd39"
debug
array
Debug information.
Contains logs about business logic explaining state of the response payload.
Provided in development & admin modes only.
* are nullable.
{
"success": false,
"payload": [],
"product": {
"requirement": "permission",
"permission": {
"name": "X_SOURCE_FORMAT_XML",
"description": "Can import XML files"
},
"limitation_type": null,
"limitation_needed_value": null,
"limitation_current_value": null,
"limitation_object": null,
"is_cta": false
},
"template_handle": "new-hires",
"source_id": "9e7060d4-9314-4783-883a-8702471ccd39",
"debug": []
}
Copy
User is well authenticated, but not authorized to access the resource.
It can happen if user is trying to use a feature that s/he didn't pay for, access someone else's resource, etc.
These issues are normally fixed by the frontend, which should render features and resources user has access to.
success
boolean
Always false on error responses.
false
payload
object
Context about the error, if any.
product
*
object
A product needed.
Not null if user requires to buy a specific product (permission or limitation) in order to access a feature.
product.requirement
*
string
Whether the user requested a features s/he doesn't have access to,
or the user needs greater limits.
Possible values: permission, limitation
"permission"
product.permission
*
object
The required permission.
You will need to know which permission is needed in order to fill up search filters in the shop.
product.permission.description
*
string
A human-understandable name for the permission.
product.permission.name
string
A technical permission name (ex: ORGANISATION_UPDATE_SETTINGS).
Possible values depend on the context, check the domain's metadata endpoint.
"X_SOURCE_FORMAT_XML"
product.limitation_type
*
string
The limitation that needs to be increased (ex: number of columns).
product.limitation_needed_value
*
integer
The needed resource quantity (if receiver uses 9 columns in a template, this value is 9).
product.limitation_current_value
*
integer
The current value of the limitation (if receiver is allowed to use 10 columns, this value is 10).
product.limitation_object
*
object
The limitation type in a readable format, for example, "lines per file".
product.is_cta
*
boolean
Whether a Call To Action should be displayed.
It may not be displayed if:
- the limitation is on the membership role
- the limitation is on the customer role
- the user is a sender
template_handle
*
string
Handle of the template currently in context, if any.
Many endpoints (and frontend components) require a template_handle. It is
exposed here so consumers — most notably the AI agent — can reuse it
instead of having to ask the user for it again.
"new-hires"
source_id
*
string
UUID of the source currently in context, if any.
Many endpoints (and frontend components) require a source_id (the source
UUID, not its database id). It is exposed here so consumers — most notably
the AI agent — can reuse it instead of having to ask the user for it again.
"9e7060d4-9314-4783-883a-8702471ccd39"
debug
array
Debug information.
Contains logs about business logic explaining state of the response payload.
Provided in development & admin modes only.
* are nullable.
{
"success": false,
"payload": [],
"product": {
"requirement": "permission",
"permission": {
"name": "X_SOURCE_FORMAT_XML",
"description": "Can import XML files"
},
"limitation_type": null,
"limitation_needed_value": null,
"limitation_current_value": null,
"limitation_object": null,
"is_cta": false
},
"template_handle": "new-hires",
"source_id": "9e7060d4-9314-4783-883a-8702471ccd39",
"debug": []
}
Copy
A violation happens when a property value does not respect the expected constraints.
If a user is making a mistake in a form and frontend is not able to detect it (because of the constraint being tied to some business logic for example), the API will return the invalid properties with the right error messages.
Note: examples are hardcoded in english (no access to the translator in a DTO).
success
boolean
Always false on error responses.
false
payload
object
Context about the error, if any.
payload.error
object
payload.error.code
string
A translation key for the given message.
"exception.violation"
payload.error.message
string
The translated version of the message.
Click on "Example" to get its translated value.
payload.violations
array
payload.violations[].property_path
string
Property having an invalid value.
"title"
payload.violations[].invalid_value
*
The invalid value.
""
payload.violations[].message
string
An error message describing the violation.
"This value should not be blank"
product
*
object
A product needed.
Not null if user requires to buy a specific product (permission or limitation) in order to access a feature.
product.requirement
*
string
Whether the user requested a features s/he doesn't have access to,
or the user needs greater limits.
Possible values: permission, limitation
"permission"
product.permission
*
object
The required permission.
You will need to know which permission is needed in order to fill up search filters in the shop.
product.permission.description
*
string
A human-understandable name for the permission.
product.permission.name
string
A technical permission name (ex: ORGANISATION_UPDATE_SETTINGS).
Possible values depend on the context, check the domain's metadata endpoint.
"X_SOURCE_FORMAT_XML"
product.limitation_type
*
string
The limitation that needs to be increased (ex: number of columns).
product.limitation_needed_value
*
integer
The needed resource quantity (if receiver uses 9 columns in a template, this value is 9).
product.limitation_current_value
*
integer
The current value of the limitation (if receiver is allowed to use 10 columns, this value is 10).
product.limitation_object
*
object
The limitation type in a readable format, for example, "lines per file".
product.is_cta
*
boolean
Whether a Call To Action should be displayed.
It may not be displayed if:
- the limitation is on the membership role
- the limitation is on the customer role
- the user is a sender
template_handle
*
string
Handle of the template currently in context, if any.
Many endpoints (and frontend components) require a template_handle. It is
exposed here so consumers — most notably the AI agent — can reuse it
instead of having to ask the user for it again.
"new-hires"
source_id
*
string
UUID of the source currently in context, if any.
Many endpoints (and frontend components) require a source_id (the source
UUID, not its database id). It is exposed here so consumers — most notably
the AI agent — can reuse it instead of having to ask the user for it again.
"9e7060d4-9314-4783-883a-8702471ccd39"
debug
array
Debug information.
Contains logs about business logic explaining state of the response payload.
Provided in development & admin modes only.
* are nullable.
{
"success": false,
"payload": {
"error": {
"code": "exception.violation",
"message": "The provided payload contains property violations."
},
"violations": [
{
"property_path": "title",
"invalid_value": "",
"message": "This value should not be blank"
},
{
"property_path": "price",
"invalid_value": -5,
"message": "The amount should be greater than 1"
}
]
},
"product": {
"requirement": "permission",
"permission": {
"name": "X_SOURCE_FORMAT_XML",
"description": "Can import XML files"
},
"limitation_type": null,
"limitation_needed_value": null,
"limitation_current_value": null,
"limitation_object": null,
"is_cta": false
},
"template_handle": "new-hires",
"source_id": "9e7060d4-9314-4783-883a-8702471ccd39",
"debug": []
}
Copy