Below are the headers required to trigger Fenix’s Order and Fulfillment API
Authentication API
Resource Name | Authentication: Authenticate external system against the Fenix Inbound data pipeline. | |||||
URL | /login | |||||
Method | POST | |||||
Headers |
| |||||
Response Body |
|
Header Name | Description |
---|---|
store_name | Name of the retailer’s store (Shopify, BigCommerce, Enterprise, etc…) which configured in the Fenix System to enable fenix post purchase experience. Note: Fenix Team provides it as part of intial Inbound Integration discussion. |
x-api-key | Note: Fenix Team provides it as part of intial Inbound Integration discussion. And, it gets rotated every 6 months. |
authToken | To authenticate the external system(_3PLs, Enterprise, etc…) which triggers the Fenix Inbound APIs Note1: To get the authToken, external systems must trigger Authentication API using user_name and password provided by the Fenix Team. Collect authToken from API response payload, then use it in further order & fulfillment APIs. Note2: External systems must refresh the authToken every 4 hours (UTC) as it get expired every 4 hours in the Fenix. |
x-identity | To authorise the external system (_3PLs, Enterprise, etc…) to pump above mentioned retailer’s (Shopify, BigCommerce, Enterprise, etc…) orders and fulfillments into the Fenix system. Note: It available as part of the Authention API response payload. And, it gets rotated every 3 months. |
content-type | Request Payload(order & fulfillment) format. Note: Fenix supported type application/json |
username & password | These are used to get authToken & x-identity from Authentication API. Note: These are belongs to external systems (_3PLs, Enterprise, etc…) which pumps retailer’s (Shopify, BigCommerce, Enterprise, etc…) order & fulfillment data into the Fenix. Note: Fenix Team provides them as part of intial Inbound Integration discussion. |
Order Create/Update API
Resource Name | Rest Endpoint to send the order data information Fenix | |||||
Resource URL | /api/v2/orders/{order_id}/created | |||||
Method | POST | |||||
Headers |
| |||||
Request Payload |
| |||||
Response Payload | NA | |||||
Response Status | 201 - Success 400 – Failure 401 - Un-Authentication |
Note: Date and time must be associated with zone (e.g., 2020-01-23T10:14:15-05:00) |
Note1: Once data is successfully inserted into the Fenix system Post Purchase Data Pipeline, retailer can see the same data in Insights, summary & details screens. And, then Fenix will use the same data to enable complete Fenix Post Purchase Experiences to the retailers and as well as their Shoppers. Note2: User can easily navigate from Insights to Summary screen by clicking on any part the KPIs(bar, pie, line , etc… charts). Note3: User can easily navigate from Summary to Details screen by clicking on order number. |
Order Cancelled API:
Ordered Item(s): Quantity | SKU1:3 |
Cancelled Item(s): Quantity | SKU1:3 |
Status | CANCELLED |
Resource Name | Rest Endpoint to send the order data information Fenix | |||||
Resource URL | /api/v2/orders/{order_id}/created | |||||
Method | POST | |||||
Headers |
| |||||
Request Payload |
| |||||
Response Payload | NA | |||||
Response Status | 201 - Success 400 – Failure 401 - Un-Authentication |
Order Partially Cancelled API:
Usecase1:
Ordered Item(s): Quantity | SKU1:3 |
Cancelled Item(s): Quantity | SKU1:1 |
Status | PARTIALLY_CANCELLED |
Usecase2:
Ordered Item(s): Quantity | SKU1:3, SKU2:2, SKU3:1 |
Cancelled Item(s): Quantity | SKU1:1, SKU2:2 |
Status | PARTIALLY_CANCELLED |
Resource Name | Rest Endpoint to send the order data information Fenix | |||||
Resource URL | /api/v2/orders/{order_id}/created | |||||
Method | POST | |||||
Headers |
| |||||
Request Payload |
| |||||
Response Payload | NA | |||||
Response Status | 201 - Success 400 – Failure 401 - Un-Authentication |
Fulfillment API
Resource Name | Rest Endpoint to send the fulfilment data Information Fenix | |||||
Resource URL | /api/v2/order/{order_id}/fulfillment/{fulfillment_id}/created | |||||
Method | POST | |||||
Headers |
| |||||
Request Payload |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Response Payload | NA |
Response Status | 201 - Success 400 – Failure 401 - Un-Authentication |
Note: Date and time must be associated with zone (e.g., 2020-01-23T10:14:15-05:00) |
Order API Request Payload Data Model:
Attribute Name | Data Type | Description |
id (*) | String | A unique identifier in the entire data model which represent the order. |
number | String | In SAAS based platforms order number would be unique idenfier as per merchants preferences. |
status (*) | String | Order Status
|
fulfillment_status | String | The order's status in terms of fulfilled line items.
Note: If it is blnk, we calculate based on the no of shipments and items |
item_quantity (*) | String(integer) | Total no of items in the order |
total_weight.value (*) | Integer | Total weight of the order |
total_weight.units (*) | String | Units for the order weight (oz,grms) |
shipping_info.title (*) | String | Shipping option selected by the shoppers in checkout. |
shipping_info.code | String | Shipping service Name |
shipping_info.price.value (*) | Integer | Shipcost paid by the customer. |
shipping_info.price.currency | String | Currency (default: USD) |
shipping_info.discount.value | Integer | Shipcost discount |
shipping_info.discount.currency | String | Currency (default: USD) |
shipping_info.source (*) | String | Source of shipping info
|
promised_delivery_date | String (offset datetime) | Promised delivery date on checkout page ("2020-01-27T00:00:00-05:00")
|
created_at | String (offset datetime) | Order created dateTime ("2020-01-22T00:00:00-05:00") |
updated_at | String (offset datetime) | Order updated dateTime ("2020-01-23T00:00:00-05:00") |
cancelled_at | String (offset datetime) | Order Canclled dateTime ("2020-01-24T00:00:00-05:00") |
cancel_reason | String | Cancelled reason |
currency | String | Currency (default: USD) |
shipping_address (*) | Object | Address to where items should be delivered |
shipping_address.first_name | String | The first name of the person associated with the shipping address |
shipping_address.last_name | String | The last name of the person associated with the shipping address |
shipping_address.address1 | String | The street address of the shipping address. |
shipping_address.address1 | String | optional additional field for the street address |
shipping_address.city | String | The city, town, or village of the shipping address |
shipping_address.company | String | The company of the person associated with the shipping address. optional |
shipping_address.country | String | CountryName |
shipping_address.zip | String | zipcode |
shipping_address.latitude | String | Optional |
shipping_address.longitude | String | Optional |
line_items (*) | List | A list of line item objects, each containing information about an item in the order |
line_item.sku (*) | String | The item's SKU |
line_item.quantity (*) | Integer | Item quantity |
line_item.title (*) | String | The title of the product. |
line_item.variant_id | String | The ID of the product variant. |
line_item.variant_title | String | The title of the product variant. |
line_item.vendor | String | The name of the item's supplier |
line_item.name | The name of the product variant | |
line_item.gift_card | boolean | Whether the item is a gift card. If true, then the item is not taxed or considered for shipping charges |
line_item.taxable | boolean | Whether the item is taxable or not. |
line_item.weight.value | integer | weight of the particular item |
line_item.weight.unit | String | oz/grms |
line_item.dimensions | ||
line_items.dimensions.length | integer | Length of the item |
line_items.dimensions.width | integer | Width of the item |
line_items.dimensions.height | integer | Height of the item. |
line_items.dimensions.grith | integer | Grith of the item. |
line_items.dimensions.thickness | integer | Thickness of the item. |
line_items.dimensions.units | String | No. of units |
price.value (*) | Integer | Price of the item |
price.currency (*) | String | Currency (default: USD) |
line_items.image_url (*) | String | Image Url. |
line_items.routing_url | String | URL where it route to the website product details page. Note1: Route to website product details page when anyone clicked on images displayed on tracking page. Note2: If it is null, there won’t be a route to websites PDP. |
properties | ARRAY | An array to pass additional information about line item |
properties.name | String | Name of the property |
properties.value | String | Value of the property |
financial_details.subtotal_price.value | Integer | The price of the order in the shop currency after discounts but before shipping, duties, taxes, and tips |
financial_details.subtotal_price.currency | Currency (default: USD) | |
financial_details.total_tax | integer | The sum of all the taxes applied to the order in the shop currency. Must be positive. |
financial_details.total_discounts | integer | The total discounts applied to the price of the order in the shop currency. |
financial_details.total_price | integer | The total prices for that item |
financial_details.taxes_included | boolean | wether taxes included or not |
financial_details.financial_status | String | paid/notpaid |
financial_details.gateway | String | payment gateway name. |
customer (*) | Object | Customer details who placed an order. Note: Fenix use this to send delivery status notifications via Email or SMS. |
customer.first_name | String | customers firstname |
customer.last_name | String | customers lastname |
customer.email (*) | String | customers email |
customer.phone (*) | String | customers.phone |
customer.tags | String | customer tags |
customer.customer_address | String | |
customer.customer_address.province_code | String | Province code of the customer address |
customer.customer_address.country_code | String | country code of customer address |
customer.customer_address.country_name | String | country name of customer address |
customer.customer_address.zip | String | zipcode of customer address |
customer.customer_address.address1 | String | address1 of customer |
customer.customer_address.address2 | String | Optional |
customer.customer_address.city | String | customer's city |
customer.customer_address.province | String | customer's province |
customer.customer_address.country | String | cusomers countryname |
checkout_token | String | A unique value which refers the checkout page that associated with the order. |
properties | ARRAY | An array to pass additional information about an order. |
properties.name | String | Name of the property |
properties.value | String | Value of the property |
Fulfillment API Request Payload Data Model:
id (*) | String | A unique identifier in the entire data model which represent the fulfillment. |
order_id (*) | String | Order Id |
shipment_status | String | Current Shipment Status
Note: Fenix will update the status based on trackhistory event from carrier. |
shipment_info (*) | Object | Shipment details through which packages has beed shipped. |
shipment_info.tracking_number (*) | String | Tracking Number which is used to track the shipment track history |
shipment_info.tracking_company (*) | String | Carrier name through which package shipped |
shipment_info.shipping_service (*) | Integer | Carrie Service thugh which package shipped |
shipment_info.shipcost.currency | String | Currency (default: USD) |
shipment_info.shipcost.value (*) | Integer | Shipcost paid by the retailer to the carrier. |
created_at | String (offset datetime) | Order created dateTime ("2020-01-22T00:00:00-05:00") |
updated_at | String (offset datetime) | Order updated dateTime ("2020-01-23T00:00:00-05:00") |
line_items (*) | List | A list of line item objects, each containing information about an item in the order |
line_item.sku (*) | String | The item's SKU |
line_item.quantity (*) | Integer | Item quantity |
line_item.title (*) | String | The title of the product. |
line_item.variant_id | String | The ID of the product variant. |
line_item.variant_title | String | The title of the product variant. |
line_item.vendor | String | The name of the item's supplier |
line_item.name | The name of the product variant | |
line_item.gift_card | boolean | Whether the item is a gift card. If true, then the item is not taxed or considered for shipping charges |
line_item.taxable | boolean | Whether the item is taxable or not. |
line_item.weight.value | integer | weight of the particular item |
line_item.weight.unit | String | oz/grms |
line_item.dimensions | ||
line_items.dimensions.length | integer | Length of the item |
line_items.dimensions.width | integer | Width of the item |
line_items.dimensions.height | integer | Height of the item. |
line_items.dimensions.grith | integer | Grith of the item. |
line_items.dimensions.thickness | integer | Thickness of the item. |
line_items.dimensions.units | String | No. of units |
price.value (*) | Integer | Price of the item |
price.currency (*) | String | Currency (default: USD) |
line_items.image_url (*) | String | Image Url. |
line_items.routing_url | String | URL where it route to the website product details page. Note1: Route to website product details page when anyone clicked on images displayed on tracking page. Note2: If it is null, there won’t be a route to websites PDP. |
properties | ARRAY | An array to pass additional information about line item |
properties.name | String | Name of the property |
properties.value | String | Value of the property |