Using an existing import profile
In order to launch a new CSV Import with API using an existing import profile, you will need to get your profileId and know the path to the file to import
import requests
import json
url = "https://_SUBDOMAIN_.quable.com/api/imports"
payload = json.dumps({
"importProfileId": "xxx-xxx-xxxx-xxxx-xxx-xxx",
"remotePath": "sftp://host.com:2222/quable/myfile.csv"
})
headers = {
'Content-Type': 'application/hal+json',
'Authorization': 'Bearer _BEARER_'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Without import profile
In order to launch a new CSV Import with API without using an existing import profile, you will need to provide the information relative to the import usually held by the import profile and know the path to the file to import
url = "https://_SUBDOMAIN_.quable.com/api/imports"
payload = json.dumps({
"importProfile": {
"extension": "csv",
"model": "document.document_type",
"dateFormat|dateTimeSeparator"...
},
"fileId": "xxx-xxx-xxxx-xxxx-xxx-xxx"
})
headers = {
'Content-Type': 'application/hal+json',
'Authorization' : 'Bearer _BEARER_'
}
response = requests.request("POST", url, headers=headers, data=payload)
Retrieve import status
In order to get the 30 last import process, here is an example
import requests
url = "https://_SUBDOMAIN_.quable.com/api/processes?type=import&page=1&limit=30&order%5BdateCreated%5D=asc&order%5BendDate%5D=desc"
payload={}
headers = {
'Content-Type': 'application/hal+json',
'Authorization': 'Bearer _BEARER_'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
First part of the first ressource in the response body could be like this.
Take a look at status, metadata.count, metadata.report
[
{
"id": "c57b7057-56a2-4710-8c48-e45fa4aa4d9a",
"type": "import",
"status": "finished",
"documentType": "classification",
"metadata": {
"importProfile": {
"name": "ERP - Categories",
"model": "classification",
"description": "",
"locales": [
"en_GB",
"es_ES",
"fr_FR"
],
"mappings": [],
"endOfLine": "\\n",
"encoding": "UTF-8",
"emptyValueStrategy": "ignore",
"dateFormat": "DD/MM/YYYY",
"dateTimeSeparator": "%20",
"enclosure": "\\\"",
"fieldSeparator": ";",
"multiValueSeparator": "|",
"numberFormat": ".",
"timeFormat": "hh:mm:ss",
"extension": "csv"
},
"count": {
"blocs": 1,
"duplicates": 0,
"errors": 2,
"items": 222,
"lines": 222
},
"report": {
"info": 220,
"error": 20,
"status": "error"
}
}
Second part of the first ressource in the response body could be like this.
Take a look at the files.id while filtering on type:import
This fileId will be used to download the CSV file that has been imported
"files": [
{
"id": "4604b202-c7f2-430d-969c-bcd06d6502ca",
"status": "available",
"type": "import",
"isDownloadable": true
},
{
"id": "a47fb9d4-1f69-4dbc-8c15-3f7c8cda437d",
"status": "available",
"type": "import_report",
"isDownloadable": true
}
],
"dateCreated": "2021-02-16T15:56:41+00:00",
"startDate": "2021-02-16T15:56:41+00:00",
"endDate": "2021-02-16T15:57:20+00:00"
Let's download the source file
The following call will return the CSV content.
import requests
url = "https://_SUBDOMAIN_.quable.com/api/files/YOUR-FILE-ID/download"
payload={}
headers = {
'Content-Type': 'application/hal+json',
'Authorization': 'Bearer _BEARER_'
}
response = requests.request("GET", url, headers=headers, data=payload)