Generic JSLT Templates for all endpoints
Below is a generic request payload for all the endpoints which needs to be configured in Marketplace
follow this to create/edit jslt templates: https://cmcom.atlassian.net/wiki/x/bAA2jg
- Customers:
{
"email_address": .data.customers.edges[0].node.defaultEmailAddress.emailAddress,
"customer_since": split(.data.customers.edges[0].node.createdAt, "T")[0],
"order_count": .data.customers.edges[0].node.numberOfOrders,
"total_spent": .data.customers.edges[0].node.amountSpent.currencyCode + " " + .data.customers.edges[0].node.amountSpent.amount,
"name": .data.customers.edges[0].node.displayName,
"phone_number": .data.customers.edges[0].node.defaultPhoneNumber.phoneNumber
}
- OrderDetails:
{
"details_view": [
{
"display_as": "details",
"data": {
"date": format-time(parse-time(.data.orders.edges[0].node.processedAt, "yyyy-MM-dd'T'HH:mm:ssX"), "dd-MM-yyyy HH:mm"),
"status": lowercase(.data.orders.edges[0].node.displayFulfillmentStatus),
"payment_status": lowercase(.data.orders.edges[0].node.displayFinancialStatus),
"shipment_status": lowercase(.data.orders.edges[0].node.displayFulfillmentStatus),
"": "<div class=\"panel_button\"><div><a href=\"http://yourwebsite.com\" target=\"_blank\">Edit order</a></div></div>"
}
},
{
"display_as": "columns",
"caption": "products",
"data": [for (.data.orders.edges[0].node.lineItems.edges)
{
"product": .node.title,
"quantity": string(.node.quantity),
"price": .node.originalTotalSet.shopMoney.currencyCode + " " + .node.originalTotalSet.shopMoney.amount
}
]
},
{
"display_as": "rows",
"caption": "invoices",
"data": [for (.data.orders.edges[0].node.transactions)
{
"shipment": .id,
"status": if (.status == "SUCCESS") "Paid" else "Not paid",
"amount": .amountSet.shopMoney.currencyCode + " " + .amountSet.shopMoney.amount
}
]
},
{
"display_as": "rows",
"caption": "Empty",
"data": []
}
]
}
- Search:
let customers = if (.data.customers.edges)
[for (.data.customers.edges)
{
"email_address": .node.defaultEmailAddress.emailAddress,
"name": .node.displayName,
"phone_number": if(.node.defaultPhoneNumber.phoneNumber) .node.defaultPhoneNumber.phoneNumber else "",
"order_count": .node.numberOfOrders,
"total_spent": .node.amountSpent.currencyCode + " " + .node.amountSpent.amount
}
]
else []
let orders = if (.data.customers.edges)
flatten([for (.data.customers.edges)
let cust_email = .node.defaultEmailAddress.emailAddress
let cust_name = .node.displayName
if (.node.orders.edges)
[for (.node.orders.edges)
{
"email_address": $cust_email,
"name": $cust_name,
"order_number": split(.node.id, "/")[-1],
"order_date": .node.processedAt,
"revenue": .node.currentTotalPriceSet.shopMoney.currencyCode + " " + .node.currentTotalPriceSet.shopMoney.amount
}
]
else []
])
else []
{
"customers": $customers,
"orders": $orders
}
4.Orders:
let orderEdges = .data.customers.edges[0].node.orders.edges
{
"orders": if ($orderEdges)
[for ($orderEdges)
{
"order_number": string(.node.number),
"list_view": {
"order_number": string(.node.number),
"date": format-time(parse-time(.node.processedAt, "yyyy-MM-dd'T'HH:mm:ssX"), "dd-MM-yyyy HH:mm"),
"status": lowercase(.node.displayFinancialStatus)
}
}
]
else []
}