curl --request POST \
--url https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"reason": "<string>"
}
'import requests
url = "https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel"
payload = { "reason": "<string>" }
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({reason: '<string>'})
};
fetch('https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reason' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel"
payload := strings.NewReader("{\n \"reason\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"externalOrderId": "<string>",
"buyerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "CREATED",
"vins": [
{
"vin": "<string>",
"brand": "<string>",
"model": "<string>",
"purchaseAmount": {
"value": 7900,
"currency": "EUR"
},
"mileage": 1,
"firstRegistrationDate": "2023-12-25",
"complianceStatus": "PENDING"
}
],
"shipmentIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"totalAmount": {
"value": 7900,
"currency": "EUR"
},
"version": 123,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"purchaseDate": "2023-12-25",
"responsibleContact": {
"firstName": "<string>",
"lastName": "<string>",
"email": "[email protected]",
"phone": "<string>"
},
"notApplied": [
"responsibleContact.lastName"
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>"
}Cancel an order.
curl --request POST \
--url https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"reason": "<string>"
}
'import requests
url = "https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel"
payload = { "reason": "<string>" }
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({reason: '<string>'})
};
fetch('https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reason' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel"
payload := strings.NewReader("{\n \"reason\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"externalOrderId": "<string>",
"buyerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "CREATED",
"vins": [
{
"vin": "<string>",
"brand": "<string>",
"model": "<string>",
"purchaseAmount": {
"value": 7900,
"currency": "EUR"
},
"mileage": 1,
"firstRegistrationDate": "2023-12-25",
"complianceStatus": "PENDING"
}
],
"shipmentIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"totalAmount": {
"value": 7900,
"currency": "EUR"
},
"version": 123,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"purchaseDate": "2023-12-25",
"responsibleContact": {
"firstName": "<string>",
"lastName": "<string>",
"email": "[email protected]",
"phone": "<string>"
},
"notApplied": [
"responsibleContact.lastName"
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>"
}Authorizations
OAuth 2.0 client_credentials grant via Keycloak service account.
Clients are provisioned per IntegrationOrganization in the
nt24-idp realm.
Headers
Client-generated unique key (UUID recommended) for this write operation.
Identical key + identical body within 24h returns the cached response.
Identical key + different body returns 422.
1 - 255Path Parameters
UUID of the seller trade partner (must be in caller's authorized list).
Body
Response
Cancelled
CREATED, INVOICE_SUBMITTED, PAYMENT_SUBMITTED, READY_FOR_PICKUP, TRANSPORT_IN_PROGRESS, TRANSPORT_COMPLETED, COMPLIANCE_VALID, CANCELLED Show child attributes
Show child attributes
The order's live shipments, oldest first. One entry for an ordinary
order; more once NT24 has split it. Each id addresses that half's
payment under
/partners/{sellerId}/orders/{uuid}/shipments/{shipmentId}/payment.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Fields of the request's responsibleContact that named something
other than what the person already recorded under that email address
says, and were therefore not written —
responsibleContact.firstName, responsibleContact.lastName,
responsibleContact.phone. responsibleContact.email is never
listed: it is the key the two were matched on.
Present only on POST /orders and PATCH /orders/{uuid}, and only
when there was something to report. Absent on every read, on a newly
recorded person and on a call that agreed with the record. Present
on a call that moved nothing, too — a body that named a different
person on the address this order's contact already holds changes
nothing AND disagrees with the record — so both the 200 of a
replayed POST /orders and a PATCH that wrote nothing can carry
it.
responsibleContact on the response carries the person the order
actually points at. Nothing here is applied: a stored contact person
is never overwritten through this API.
notApplied describes your request, not the order, so it is not
part of the order's ETag and a read of the same order reproduces
the tag the write returned.