Overview
The Order Imports resource creates an import job to batch load a file of orders into the Cordial database from an external location.
Only the JSONL file type is permissible for imports using this API endpoint. Compared to CSV, the JSONL file format allows for greater flexibility when working with large sets of multi-layered data, making it an ideal format for importing order data. You can learn more about JSONL file format here.
- API set name: ordersimport
Additional information
- This resource uses the JSON request information to define the host location of the data file, the transport protocol, and the host login authentication information.
- This resource is not a collection of imports—it's a resource that initiates import processing by creating an import job.
- Import status information is available through the Jobs Widget using the returned jobID.
Columns, headers, and nullMarker parameters will be disregarded when the import file type is JSONL. Please see below for examples of how updates are handled.
Example JSONL file
{"orderID":"20190225-b23","email":"jsmith@example.com","properties":{"a_num": 1},"purchaseDate":"2019-01-25T00:00:00+0000","items":[{"productID":"123id","description":"Blue shirt","sku":"123SKU","category":"Shirts","name":"Blue button down","qty":1,"itemPrice":49.00}]} {"orderID":"51190447-b10","email":"mjoy@example.com","properties":{"a_num": 1},"purchaseDate":"2019-02-12T00:00:00+0000","items":[{"productID":"456id","description":"Khaki pants","sku":"456SKU","category":"Pants","name":"Fashionable khaki pants","qty":1,"itemPrice":29.99}]}
The JSONL file can store multiple orders, each starting on a new line after the preceding order.
All order attribute field names are provided by default as part of the schema. For a full list of order attributes view the article on adding orders via the API.
Related collections
The following collections are associated with the Orders Collection.
Collection | Association |
---|---|
products | A product record will be created or updated in the products collection each time an order is placed. |
POST /ordersimport
Method | URI Path |
---|---|
POST | /ordersimport |
Creates an import job using the JSON body information. |
Parameters
Parameter | Type | Required | Description | Example |
---|---|---|---|---|
confirmEmail | optional | Email address to send an administrative alert that the import job has been completed. | joesmith@example.com | |
suppressTriggers | boolean | optional | If "true", will suppress any triggered messages set to fire based on updates to values in the import. Default is "true". | false |
source |
object | required | See parameters for source below |
"source":{} |
Source Parameters | ||||
transport | string | required | Transport options include HTTPS, HTTP, FTP, SFTP, S3, GCS. | https |
url | url | if transport = HTTPS | URL or location of the import file. | http://files.example.com/file.jsonl |
port | string | if transport = ftp or sftp, and not using default | The port number for the server. | 44 |
server | string | if transport = FTP or SFTP | domain | example.com |
username | string | if transport = FTP or SFTP | An account username for gaining access to the file location. | myusername |
password | string | if transport = FTP or SFTP | The account password for the above user name. | Msm1th$99! |
path | string | optional if transport = ftp, sftp, S3 or GCS | optional directory path to the file | /files/file.jsonl OR ./files/file.jsonl OR files/file.jsonl |
aws_access_key_id | string | if transport = S3 | public aws id | WIfdavFHS8adsfhad98df |
aws_secret_access_key | string | if transport = S3 | secret aws key | dudhKDDHE476383kdsdhdka |
aws_bucket | string | if transport = S3 | aws bucket name | my_bucket |
aws_region | string | if transport = S3 | aws region | us-west-2 |
bucket | string | if transport = GCS | Defines the bucket name if transport is Google Cloud Storage. Be sure to use the same name from the setup process in Cordial marketplace. | name_used_in_marketplace_setup |
Example JSON request for HTTP
The following will initiate an import job to load a JSONL file from a secure HTTP location. A confirmation email will be sent the email address provided once the job is complete. The JSON response will provide a jobID for checking job status if needed.
{ "source": { "transport": "https", "url": "https://example.com/orders-import.jsonl" }, "confirmEmail": "jsmith@example.com", "suppressTriggers": true, "hasHeader": true }
The use of "hasHeader": true parameter is currently required in order to satisfy file type validation checks.
Example JSON request for FTP or SFTP
The following will initiate an import job to load a JSONL file via a secure FTP connection. A confirmation email will be sent the email address provided once the job is complete. The JSON response will provide a jobID for checking job status if needed.
{ "source": { "transport": "sftp",
"server": "example.com", "username": "myusername", "password": "Msm1th$99!", "path": "./files/orders-import.jsonl" }, "confirmEmail": "jsmith@example.com" }
Example JSON request for S3
The following will initiate an import job to load a JSNL file via an S3 connection. A confirmation email will be sent the email address provided once the job is complete. The JSON response will provide a jobID for checking job status if needed.
{ "source": { "transport": "s3", "aws_access_key_id": "AAAAAAAAAAAAAAAAAAAA", "aws_secret_access_key": "dudhKDDHE476383kdsdhdkasKDHDKDeiuealskjD", "aws_bucket": "some-bucket", "aws_region": "us-west-2", "path": "folder/orders-import.jsonl" }, "confirmEmail": "jsmith@example.com" }
Example JSON request for Google Cloud Storage
The following will initiate an import job to load a JSNL file via a GCS connection. A confirmation email will be sent the email address provided once the job is complete. The JSON response will provide a jobID for checking job status if needed.
Your Google Could Storage integration must be enabled in the Cordial Marketplace.
{ "source": { "transport": "gcs", "bucket": "same_name_used_in_marketplace_setup", "path": "/folder/orders-import.jsonl" }, "confirmEmail": "msmith@example.com" }
API response body
JobID will be provided if no errors are detected.
Job status can be looked up:
- Via the API with a GET /v2/jobs/{id} call.
- Via the UI by navigating to the jobs page.
To access the jobs page in the UI, click on the icon at the top of the system header.
Example request URIs
The following URI in conjunction with the JSON will perform the POST.
http://<path>/ordersimport
Examples of how updates are handled
When updating an order record:
- If providing an attribute key with a value, the attribute will be updated with the new value in the database.
- If providing an attribute key with an empty string, the attribute will be updated with the empty string in the database.
- If an attribute key is not provided, the attribute will be ignored and not updated in the database.
Note in the JSONL import example below:
- The itemPrice attribute with the value "39.99" will update the attribute in the database to "39.99".
- The description attribute with an empty string value will update the attribute in the database to an empty string.
- The category attribute has been left out entirely and will retain the same value currently in the database.
Example order record before import
{ "orderID": "20190225-b23", "properties": { "a_num": 1 }, "purchaseDate": "2019-01-25T00:00:00+0000", "items": [ { "productID": "123id", "description": "Blue Shirt", "sku": "123SKU", "category": "Shirts", "name": "Blue button down", "qty": 1, "itemPrice": 49, "amount": 49 }]
}
Example JSONL to be imported
{"orderID":"20190225-b23","email":"jsmith@example.com","properties":{"a_num": 1},"purchaseDate":"2019-01-25T00:00:00+0000","items":[{"productID":"123id","description":"","sku":"123SKU","name":"Blue button down","qty":1,"itemPrice":39.99}]}
Example product record after import
{ "orderID": "20190225-b23", "properties": { "a_num": 1 }, "purchaseDate": "2019-01-25T00:00:00+0000", "items": [ { "productID": "123id", "description": "", "sku": "123SKU", "category": "Shirts", "name": "Blue button down", "qty": 1, "itemPrice": 39.99, "amount": 39.99 }]
}
Comments
0 comments
Please sign in to leave a comment.