There are three distinct processes in the uploading of a new list to your ReachMail account via the API. If you already have a list in the ReachMail system, you can either skip part a below or retrieve your list GUID from the query to /lists/filtered/{AccountId}
a. creating the list
b. uploading the file
c. import data from the file into the list.
a. creating the list:
The first step is to POST to /lists/{AccountId} (/lists/00000000-0000-0000-0000-000000000000)
{
"Name": "test list",
"Type": "Recipient",
"GroupId": "00000000-0000-0000-0000-000000000000",
"Fields": [...]
}
The response to this call will return an id (list GUID) like:
{
"Id": "00000000-0000-0000-0000-000000000000"
}
store this ID for use in the third step.
b. uploading the file requires a POST to /data
The second step is uploading the file via data stream with the following JSON:
{
"Input": {...}
}
The response to this call is another id, the data id GUID:
{
"Id": "00000000-0000-0000-0000-000000000000"
}
c. Importing the data from the file to the list. This third and final step is the bridge between the first two steps.
This step requires the POST to /lists/import/{AccountId}/{ListId}. Remember the accountId is the account GUID, and the ListId is the GUID returned from the POST to /lists/{AccountId}. The body of the query also references the DataId GUID returned from the call in part b.
Here's the sample JSON:
{
"DataId": "00000000-0000-0000-0000-000000000000",
"FieldMappings": [{
"DestinationFieldName": "",
"SourceFieldPosition": 0,
"SourceFieldName": ""
}],
"ImportOptions": {
"Format": "CharacterSeperated",
"HeaderRow": false,
"SkipRecordsWithErrors": false,
"AllowStringTruncation": false,
"AbortImportOnError": false,
"CharacterSeperatedOptions": {
"Delimiter": "Comma"
},
"ExcelOptions": {
"WorksheetName": ""
}
}
}
The documentation page will have more information as to which fields are required and which are optional. See more here.