CPS Orders API Edit the file on GitHub
CPS orders API allows Skroutz Merchants to retrieve information about their CPS orders as well as to reject them without accessing Merchants Panel.
Table of Contents
Setup
Obtaining an API token
In order to be able to use the API, you need to generate an API token from within CPS orders settings page in Merchants Panel (Merchants > Παραγγελίες καταστήματος > Αυτόματη διαχείριση).
There can only be one active API key per shop at a certain time. Creating a new API key will expire any previous one.
Authorization
Pass in a valid API token in the Authorization
header, prefixed with Bearer
as in the following curl example.
A specific Accept
header is also required.
curl -X GET https://api.skroutz.gr/merchants/cps/orders/1234567 \ -H 'Accept: application/vnd.skroutz+json; version=3.0' \ -H 'Authorization: Bearer your_access_token_here'
Endpoints
Retrieve a single order
To fetch a specific order, you have to provide the order code
with which you have originally identified
your order in your shop, as a URL parameter.
When an order is in a state that can be rejected, reject_options
attribute is included in the
response, providing all the available options for issuing "reject" requests for the order.
GET /merchants/cps/orders/:code
GET https://api.skroutz.gr/merchants/cps/orders/1234567
View ResponseStatus: 200
{
"order": {
"code": "1234567",
"date": "2019-11-28T13:24:37+02:00",
"revenue": 46.61,
"commission": 4.66,
"state": "Προς χρέωση",
"charged": false,
"charged_at": null,
"refunded_at": null,
"line_items": [
{
"product_id": "BM7300LEA35-BLA",
"name": "GUESS ACCESSORIES-REVERSIBLE AND ADJUSTABLE BELT ΖΩΝΗ ΑΝΔΡΙΚΟ BM7300LEA35, ΜΑΥΡΟ, ΑΝΔΡΑΣ",
"quantity": 1,
"unit_price": 46.61,
"commission_rate": 0.1,
"commission": 4.66
},
{
"product_id": "BM7300LEA49-BLA",
"name": "BELT ΖΩΝΗ ΑΝΔΡΙΚΟ BM7300LEA49, ΚΑΦΕ, ΑΝΔΡΑΣ",
"quantity": 3,
"unit_price": 95.11,
"commission_rate": 0.18,
"commission": 17.12
}
],
"reject_options": [
{
"name": "user_cancel",
"description": "Ακύρωση παραγγελίας από τον πελάτη",
"requires_additional_comment": false
},
{
"name": "user_return",
"description": "Υπαναχώρηση πελάτη",
"requires_additional_comment": false
},
{
"name": "undelivered",
"description": "Δεν κατέστη δυνατή η παράδοση της παραγγελίας",
"requires_additional_comment": false
},
{
"name": "unpaid",
"description": "Δεν ολοκληρώθηκε η πληρωμή",
"requires_additional_comment": false
},
{
"name": "unavailable_items",
"description": "Έλλειψη διαθεσιμότητας",
"requires_additional_comment": false
},
{
"name": "shop_staff_order",
"description": "Παραγγελία από προσωπικό του καταστήματος",
"requires_additional_comment": false
},
{
"name": "invoice_39a",
"description": "Παραγγελία με τιμολόγιο 39Α",
"requires_additional_comment": false
},
{
"name": "reduced_vat",
"description": "Παραγγελία με καθεστώς μειωμένου Φ.Π.Α",
"requires_additional_comment": false
},
{
"name": "other",
"description": "Άλλο",
"requires_additional_comment": true
}
]
}
}
Example
curl -X GET https://api.skroutz.gr/merchants/cps/orders/1234567 \ -H 'Accept: application/vnd.skroutz+json; version=3.0' \ -H 'Authorization: Bearer your_access_token_here'
Reject a single order
In order to reject an order, you must include a reject reason. The reject reason can be either one of the predefined ones we support or it can be a custom one that the user wants to provide.
Reject order with a predefined reason
The available predefined rejection reasons are provided in the reject_options
field when retrieving a single order.
POST /merchants/cps/orders/:code/reject
POST https://api.skroutz.gr/merchants/cps/orders/1234567/reject
View Response Params{
"reason": {
"name": "user_cancel"
}
}
Example
curl -X POST https://api.skroutz.gr/merchants/cps/orders/1234567/reject \ -H 'Accept: application/vnd.skroutz+json; version=3.0' \ -H 'Content-Type: application/json; charset=utf-8' \ -H 'Authorization: Bearer your_access_token_here' \ -d '{ "reason": { "name": "user_cancel" } }'
Reject order with custom reason
In case you want to reject an order with a reject reason other than the ones provided in the reject_options
field,
then you have to use the reject option other
and include also a comment
, where you will explain
your rejection.
The
comment
attribute is mandatory when using theother
reject option
POST /merchants/cps/orders/:code/reject
POST https://api.skroutz.gr/merchants/cps/orders/1234567/reject
View Response Params{
"reason": {
"name": "other",
"comment": "Our store is closed for personal reasons"
}
}
Example
curl -X POST https://api.skroutz.gr/merchants/cps/orders/1234567/reject \ -H 'Accept: application/vnd.skroutz+json; version=3.0' \ -H 'Content-Type: application/json; charset=utf-8' \ -H 'Authorization: Bearer your_access_token_here' \ -d '{ "reason": { "name": "other", "comment": "Our store is closed for personal reasons" } }'
Error handling
In case of errors, the response will have a representative HTTP status code
in the 4xx
or 5xx
range. The body would contain an array of errors
.
For example, if you try to reject an order that is already rejected, you will
get a 422
HTTP status code (Unprocessable Entity), with the following body:
{
"errors": [
{
"code": "order_status",
"messages": [
"Order already rejected."
]
}
]
}
Order object attributes appendix
Order object
Name | Type | Description |
---|---|---|
code |
String | Order code |
date |
Date String in formatYYYY-MM-DDTHH:MM:SS+HH:M |
Order creation date |
revenue |
Double | Total order price in euros |
commission |
Double | Total order commission in euros |
state |
String | The current state of the order |
rejection_reason |
String | The declined reason of the order, if it has been previously rejected |
charged |
Boolean | Whether the order has already been charged |
charged_at |
Date String in formatYYYY-MM-DDTHH:MM:SS+HH:M |
Order charge date (if has been charged) |
refunded_at |
Date String in formatYYYY-MM-DDTHH:MM:SS+HH:M |
Order refund date (if has been refunded) |
line_items |
Array | Order line items (products) |
reject_options |
Object | Reject options (available for orders at a rejectable state) |
Order line items array
Name | Type | Description |
---|---|---|
line_items[_].product_id |
String | Item id in shop |
line_items[_].name |
String | Item product name |
line_items[_].quantity |
Integer | Item quantity |
line_items[_].unit_price |
Double | Price per item unit in euros |
line_items[_].commission_rate |
Double | Commission rate per item (from 0.0 - 100.0 ) |
line_items[_].commission |
Double | Commission per item in euros |
Reject options
Available reject reasons to use when rejecting an order. These options are returned only when the order is at a rejectable state.
Name | Type | Description |
---|---|---|
reject_options.name |
String | The rejection reason name to use |
reject_options.description |
String | A human readable label |
reject_options.requires_additional_comment |
Boolean | Whether or not comment is required |
Possible values
Name | Description | Requires Additional Comment |
---|---|---|
user_cancel |
Ακύρωση παραγγελίας από τον πελάτη |
False |
user_return |
Υπαναχώρηση πελάτη |
False |
undelivered |
Δεν κατέστη δυνατή η παράδοση της παραγγελίας |
False |
unpaid |
Δεν ολοκληρώθηκε η πληρωμή |
False |
unavailable_items |
Έλλειψη διαθεσιμότητας |
False |
shop_staff_order |
Παραγγελία από προσωπικό του καταστήματος |
False |
invoice_39a |
Παραγγελία με τιμολόγιο 39Α |
False |
reduced_vat |
Παραγγελία με καθεστώς μειωμένου Φ.Π.Α |
False |
other |
Άλλο |
True |