[Kassa Compleet] The JSON Schema of a «POST /v1/orders/» request

https://s3-eu-west-1.amazonaws.com/wl1-apidocs/api.kassacompleet.nl/index.html#Reference
It differs from the Ginger Payments schema.

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Order",
    "definitions": {
        "order_line": {
            "type": "object",
            "properties": {
                "id": {
                    "description": "Order line identifier",
                    "type": "string",
                    "readOnly": true
                },
                "type": {
                    "description": "Type: physical, discount or shipping_fee",
                    "type": "string",
                    "enum": ["physical", "discount", "shipping_fee"]
                },
                "ean": {
                    "description": "Internation article number",
                    "type": "string"
                },
                "merchant_order_line_id": {
                    "description": "Merchant's internal order line identifier",
                    "type": "string"
                },
                "name": {
                    "description": "Name, usually a short description",
                    "type": "string"
                },
                "url": {
                    "description": "Item product page URI",
                    "type": "string",
                    "format": "uri"
                },
                "image_url": {
                    "description": "Item image URI",
                    "type": "string",
                    "format": "uri"
                },
                "currency": {
                    "description": "Currency code (ISO 4217)",
                    "type": "string",
                    "enum": ["EUR"]
                },
                "amount": {
                    "description": "Amount for a single item (including VAT) in cents",
                    "type": "integer"
                },
                "quantity": {
                    "type": "integer"
                },
                "discount_rate": {
                    "description": "Percentage of discount, multiplied by 100 and provided as an integer. i.e. 11.57% should be sent as 1157",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10000
                },
                "vat_percentage": {
                    "description": "Percentage of tax rate, multiplied by 100 and provided as an integer. i.e. 17.50% should be sent as 1750",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10000
                }
            },
            "required": ["merchant_order_line_id", "name", "quantity", "amount", "vat_percentage", "currency"],
            "additionalProperties": false
        },
        "customer": {
            "type": "object",
            "properties": {
                "merchant_customer_id": {
                    "description": "Merchant's internal customer identifier",
                    "type": ["string", "null"]
                },
                "email_address": {
                    "type": ["string", "null"],
                    "format": "email"
                },
                "first_name": {
                    "type": ["string", "null"]
                },
                "last_name": {
                    "type": ["string", "null"]
                },
                "address_type": {
                    "type": ["string", "null"],
                    "enum": ["customer", "delivery", "billing"]
                },
                "address": {
                    "type": ["string", "null"]
                },
                "postal_code": {
                    "type": ["string", "null"]
                },
                "housenumber": {
                    "type": ["string", "null"]
                },
                "country": {
                    "description": "ISO 3166-1 alpha-2 country code",
                    "type": ["string", "null"],
                    "pattern": "^[a-zA-Z]{2}$"
                },
                "locale": {
                    "description": "POSIX locale without codeset and modifier",
                    "type": ["string", "null"],
                    "pattern": "^[a-zA-Z]{2}(_[a-zA-Z]{2})?$"
                },
                "phone_numbers": {
                    "type": ["array", "null"],
                    "items": { "type": "string" }
                },
                "ip_address": {
                    "description": "Customer's IP address",
                    "type": "string",
                    "format": "ipv4"
                }
            },
            "additionalProperties": false
        },
        "client": {
            "type": "object",
            "properties": {
                "user_agent": {
                    "description": "HTTP user agent",
                    "type": ["string", "null"],
                    "readOnly": true
                },
                "platform_name": {
                    "description": "Name of the software used to connect to the API, e.g. Magento Community Edition",
                    "type": ["string", "null"]
                },
                "platform_version": {
                    "description": "Version of the software used to connect to the API, e.g. 1.9.2.2",
                    "type": ["string", "null"]
                }
            },
            "additionalProperties": false
        }
    },

    "type": "object",
    "properties": {
        "id": {
            "description": "Order identifier",
            "type": "string",
            "readOnly": true
        },
        "refund_of_order_id": {
            "description": "Order identifier of the original order, if this is a refund",
            "type": "string",
            "readOnly": true
        },
        "chargeback_of_order_id": {
            "description": "Order identifier of the original order, if this is a chargeback",
            "type": "string",
            "readOnly": true
        },
        "project_id": {
            "description": "Project identifier",
            "type": "string",
            "readOnly": true
        },
        "merchant_order_id": {
            "description": "Merchant's internal order identifier",
            "type": ["string", "null"]
        },
        "created": {
            "description": "Date & time (ISO 8601 / RFC 3339)",
            "type": "string",
            "format": "date-time",
            "readOnly": true
        },
        "modified": {
            "description": "Date & time (ISO 8601 / RFC 3339)",
            "type": ["string", "null"],
            "format": "date-time",
            "readOnly": true
        },
        "completed": {
            "description": "Date & time (ISO 8601 / RFC 3339)",
            "type": ["string", "null"],
            "format": "date-time",
            "readOnly": true
        },
        "expiration_period": {
            "description": "Time interval (ISO 8601 / RFC 3339)",
            "type": ["string", "null"]
        },
        "currency": {
            "description": "Currency code (ISO 4217)",
            "type": "string",
            "enum": ["EUR"]
        },
        "amount": {
            "description": "Order amount (including VAT)",
            "type": "integer",
            "minimum": 1
        },
        "description": {
            "type": "string"
        },
        "status": {
            "type": "string",
            "enum": ["new", "processing", "error", "completed", "cancelled", "expired", "see-transactions"],
            "readOnly": true
        },
        "flags": {
            "type": "array",
            "items": {
                "type": "string",
                "enum": ["is-test", "has-refunds", "is-refund", "has-chargebacks", "is-chargeback"],
                "readOnly": true
            },
            "readOnly": true
        },
        "transactions": {
            "$ref": "transactions.json#"
        },
        "return_url": {
            "description": "Your customer will be redirected here after payment",
            "type": ["string", "null"],
            "format": "uri"
        },
        "webhook_url": {
            "description": "Used for transaction updates",
            "type": "string",
            "format": "uri"
        },
        "order_lines": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/order_line",
                "required": ["currency", "amount", "description", "quantity"]
            },
            "uniqueItems": false
        },
        "customer": {
            "$ref": "#/definitions/customer"
        },
        "client": {
            "$ref": "#/definitions/client"
        },
        "extra": {
            "type": "object"
        }
    },
    "required": ["currency", "amount"],
    "additionalProperties": false
}

See also: