curl --request PUT \
--url https://apiweb.mile.app/api/v4/order-type/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Express Delivery",
"code": "EXP",
"description": "Same-day parcel delivery",
"draftRevision": 4,
"fields": [
{
"id": "orderNo",
"title": "Order number",
"type": "string",
"required": true,
"unique": true,
"show": true
},
{
"id": "customerName",
"title": "Customer name",
"type": "string",
"required": false,
"show": true
},
{
"id": "weight",
"title": "Weight (kg)",
"type": "number",
"required": false,
"show": true,
"min": 0
}
],
"statuses": [
{
"id": "new",
"label": "New",
"category": "new",
"order": 1,
"color": "#6C757D"
},
{
"id": "onDelivery",
"label": "On delivery",
"category": "inProgress",
"order": 2
},
{
"id": "completed",
"label": "Completed",
"category": "completed",
"order": 3
},
{
"id": "cancelled",
"label": "Cancelled",
"category": "completed",
"order": 4
}
],
"configuration": {
"uniqueBy": [
"orderNo"
],
"cancelStatusId": "cancelled"
},
"orderSteps": [
{
"id": "start",
"type": "string",
"title": "Order created",
"position": {
"x": 0,
"y": 0
},
"event": "onOrderCreated",
"next": {
"next": [
"pickup"
]
}
},
{
"id": "pickup",
"type": "string",
"title": "Pickup",
"position": {
"x": 240,
"y": 0
},
"taskTypeId": "66f1b2c3d4e5f6a7b8c9d0e1",
"assignee": {
"mode": "unassigned"
},
"hub": {
"mode": "order"
},
"quantity": {
"mode": "perOrder"
},
"taskData": [
{
"target": "title",
"source": {
"ref": "$order.values.orderNo"
}
}
],
"saveToOrder": [],
"next": {
"next": [
"done"
]
}
},
{
"id": "done",
"type": "string",
"title": "Finish",
"position": {
"x": 480,
"y": 0
},
"statusId": "completed"
}
],
"canvas": {
"viewport": {
"x": 0,
"y": 0,
"zoom": 1
}
}
}
'import requests
url = "https://apiweb.mile.app/api/v4/order-type/{id}"
payload = {
"name": "Express Delivery",
"code": "EXP",
"description": "Same-day parcel delivery",
"draftRevision": 4,
"fields": [
{
"id": "orderNo",
"title": "Order number",
"type": "string",
"required": True,
"unique": True,
"show": True
},
{
"id": "customerName",
"title": "Customer name",
"type": "string",
"required": False,
"show": True
},
{
"id": "weight",
"title": "Weight (kg)",
"type": "number",
"required": False,
"show": True,
"min": 0
}
],
"statuses": [
{
"id": "new",
"label": "New",
"category": "new",
"order": 1,
"color": "#6C757D"
},
{
"id": "onDelivery",
"label": "On delivery",
"category": "inProgress",
"order": 2
},
{
"id": "completed",
"label": "Completed",
"category": "completed",
"order": 3
},
{
"id": "cancelled",
"label": "Cancelled",
"category": "completed",
"order": 4
}
],
"configuration": {
"uniqueBy": ["orderNo"],
"cancelStatusId": "cancelled"
},
"orderSteps": [
{
"id": "start",
"type": "string",
"title": "Order created",
"position": {
"x": 0,
"y": 0
},
"event": "onOrderCreated",
"next": { "next": ["pickup"] }
},
{
"id": "pickup",
"type": "string",
"title": "Pickup",
"position": {
"x": 240,
"y": 0
},
"taskTypeId": "66f1b2c3d4e5f6a7b8c9d0e1",
"assignee": { "mode": "unassigned" },
"hub": { "mode": "order" },
"quantity": { "mode": "perOrder" },
"taskData": [
{
"target": "title",
"source": { "ref": "$order.values.orderNo" }
}
],
"saveToOrder": [],
"next": { "next": ["done"] }
},
{
"id": "done",
"type": "string",
"title": "Finish",
"position": {
"x": 480,
"y": 0
},
"statusId": "completed"
}
],
"canvas": { "viewport": {
"x": 0,
"y": 0,
"zoom": 1
} }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Express Delivery',
code: 'EXP',
description: 'Same-day parcel delivery',
draftRevision: 4,
fields: [
{
id: 'orderNo',
title: 'Order number',
type: 'string',
required: true,
unique: true,
show: true
},
{
id: 'customerName',
title: 'Customer name',
type: 'string',
required: false,
show: true
},
{
id: 'weight',
title: 'Weight (kg)',
type: 'number',
required: false,
show: true,
min: 0
}
],
statuses: [
{id: 'new', label: 'New', category: 'new', order: 1, color: '#6C757D'},
{id: 'onDelivery', label: 'On delivery', category: 'inProgress', order: 2},
{id: 'completed', label: 'Completed', category: 'completed', order: 3},
{id: 'cancelled', label: 'Cancelled', category: 'completed', order: 4}
],
configuration: {uniqueBy: ['orderNo'], cancelStatusId: 'cancelled'},
orderSteps: [
{
id: 'start',
type: 'string',
title: 'Order created',
position: {x: 0, y: 0},
event: 'onOrderCreated',
next: {next: ['pickup']}
},
{
id: 'pickup',
type: 'string',
title: 'Pickup',
position: {x: 240, y: 0},
taskTypeId: '66f1b2c3d4e5f6a7b8c9d0e1',
assignee: {mode: 'unassigned'},
hub: {mode: 'order'},
quantity: {mode: 'perOrder'},
taskData: [{target: 'title', source: {ref: '$order.values.orderNo'}}],
saveToOrder: [],
next: {next: ['done']}
},
{
id: 'done',
type: 'string',
title: 'Finish',
position: {x: 480, y: 0},
statusId: 'completed'
}
],
canvas: {viewport: {x: 0, y: 0, zoom: 1}}
})
};
fetch('https://apiweb.mile.app/api/v4/order-type/{id}', 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://apiweb.mile.app/api/v4/order-type/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Express Delivery',
'code' => 'EXP',
'description' => 'Same-day parcel delivery',
'draftRevision' => 4,
'fields' => [
[
'id' => 'orderNo',
'title' => 'Order number',
'type' => 'string',
'required' => true,
'unique' => true,
'show' => true
],
[
'id' => 'customerName',
'title' => 'Customer name',
'type' => 'string',
'required' => false,
'show' => true
],
[
'id' => 'weight',
'title' => 'Weight (kg)',
'type' => 'number',
'required' => false,
'show' => true,
'min' => 0
]
],
'statuses' => [
[
'id' => 'new',
'label' => 'New',
'category' => 'new',
'order' => 1,
'color' => '#6C757D'
],
[
'id' => 'onDelivery',
'label' => 'On delivery',
'category' => 'inProgress',
'order' => 2
],
[
'id' => 'completed',
'label' => 'Completed',
'category' => 'completed',
'order' => 3
],
[
'id' => 'cancelled',
'label' => 'Cancelled',
'category' => 'completed',
'order' => 4
]
],
'configuration' => [
'uniqueBy' => [
'orderNo'
],
'cancelStatusId' => 'cancelled'
],
'orderSteps' => [
[
'id' => 'start',
'type' => 'string',
'title' => 'Order created',
'position' => [
'x' => 0,
'y' => 0
],
'event' => 'onOrderCreated',
'next' => [
'next' => [
'pickup'
]
]
],
[
'id' => 'pickup',
'type' => 'string',
'title' => 'Pickup',
'position' => [
'x' => 240,
'y' => 0
],
'taskTypeId' => '66f1b2c3d4e5f6a7b8c9d0e1',
'assignee' => [
'mode' => 'unassigned'
],
'hub' => [
'mode' => 'order'
],
'quantity' => [
'mode' => 'perOrder'
],
'taskData' => [
[
'target' => 'title',
'source' => [
'ref' => '$order.values.orderNo'
]
]
],
'saveToOrder' => [
],
'next' => [
'next' => [
'done'
]
]
],
[
'id' => 'done',
'type' => 'string',
'title' => 'Finish',
'position' => [
'x' => 480,
'y' => 0
],
'statusId' => 'completed'
]
],
'canvas' => [
'viewport' => [
'x' => 0,
'y' => 0,
'zoom' => 1
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://apiweb.mile.app/api/v4/order-type/{id}"
payload := strings.NewReader("{\n \"name\": \"Express Delivery\",\n \"code\": \"EXP\",\n \"description\": \"Same-day parcel delivery\",\n \"draftRevision\": 4,\n \"fields\": [\n {\n \"id\": \"orderNo\",\n \"title\": \"Order number\",\n \"type\": \"string\",\n \"required\": true,\n \"unique\": true,\n \"show\": true\n },\n {\n \"id\": \"customerName\",\n \"title\": \"Customer name\",\n \"type\": \"string\",\n \"required\": false,\n \"show\": true\n },\n {\n \"id\": \"weight\",\n \"title\": \"Weight (kg)\",\n \"type\": \"number\",\n \"required\": false,\n \"show\": true,\n \"min\": 0\n }\n ],\n \"statuses\": [\n {\n \"id\": \"new\",\n \"label\": \"New\",\n \"category\": \"new\",\n \"order\": 1,\n \"color\": \"#6C757D\"\n },\n {\n \"id\": \"onDelivery\",\n \"label\": \"On delivery\",\n \"category\": \"inProgress\",\n \"order\": 2\n },\n {\n \"id\": \"completed\",\n \"label\": \"Completed\",\n \"category\": \"completed\",\n \"order\": 3\n },\n {\n \"id\": \"cancelled\",\n \"label\": \"Cancelled\",\n \"category\": \"completed\",\n \"order\": 4\n }\n ],\n \"configuration\": {\n \"uniqueBy\": [\n \"orderNo\"\n ],\n \"cancelStatusId\": \"cancelled\"\n },\n \"orderSteps\": [\n {\n \"id\": \"start\",\n \"type\": \"string\",\n \"title\": \"Order created\",\n \"position\": {\n \"x\": 0,\n \"y\": 0\n },\n \"event\": \"onOrderCreated\",\n \"next\": {\n \"next\": [\n \"pickup\"\n ]\n }\n },\n {\n \"id\": \"pickup\",\n \"type\": \"string\",\n \"title\": \"Pickup\",\n \"position\": {\n \"x\": 240,\n \"y\": 0\n },\n \"taskTypeId\": \"66f1b2c3d4e5f6a7b8c9d0e1\",\n \"assignee\": {\n \"mode\": \"unassigned\"\n },\n \"hub\": {\n \"mode\": \"order\"\n },\n \"quantity\": {\n \"mode\": \"perOrder\"\n },\n \"taskData\": [\n {\n \"target\": \"title\",\n \"source\": {\n \"ref\": \"$order.values.orderNo\"\n }\n }\n ],\n \"saveToOrder\": [],\n \"next\": {\n \"next\": [\n \"done\"\n ]\n }\n },\n {\n \"id\": \"done\",\n \"type\": \"string\",\n \"title\": \"Finish\",\n \"position\": {\n \"x\": 480,\n \"y\": 0\n },\n \"statusId\": \"completed\"\n }\n ],\n \"canvas\": {\n \"viewport\": {\n \"x\": 0,\n \"y\": 0,\n \"zoom\": 1\n }\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://apiweb.mile.app/api/v4/order-type/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Express Delivery\",\n \"code\": \"EXP\",\n \"description\": \"Same-day parcel delivery\",\n \"draftRevision\": 4,\n \"fields\": [\n {\n \"id\": \"orderNo\",\n \"title\": \"Order number\",\n \"type\": \"string\",\n \"required\": true,\n \"unique\": true,\n \"show\": true\n },\n {\n \"id\": \"customerName\",\n \"title\": \"Customer name\",\n \"type\": \"string\",\n \"required\": false,\n \"show\": true\n },\n {\n \"id\": \"weight\",\n \"title\": \"Weight (kg)\",\n \"type\": \"number\",\n \"required\": false,\n \"show\": true,\n \"min\": 0\n }\n ],\n \"statuses\": [\n {\n \"id\": \"new\",\n \"label\": \"New\",\n \"category\": \"new\",\n \"order\": 1,\n \"color\": \"#6C757D\"\n },\n {\n \"id\": \"onDelivery\",\n \"label\": \"On delivery\",\n \"category\": \"inProgress\",\n \"order\": 2\n },\n {\n \"id\": \"completed\",\n \"label\": \"Completed\",\n \"category\": \"completed\",\n \"order\": 3\n },\n {\n \"id\": \"cancelled\",\n \"label\": \"Cancelled\",\n \"category\": \"completed\",\n \"order\": 4\n }\n ],\n \"configuration\": {\n \"uniqueBy\": [\n \"orderNo\"\n ],\n \"cancelStatusId\": \"cancelled\"\n },\n \"orderSteps\": [\n {\n \"id\": \"start\",\n \"type\": \"string\",\n \"title\": \"Order created\",\n \"position\": {\n \"x\": 0,\n \"y\": 0\n },\n \"event\": \"onOrderCreated\",\n \"next\": {\n \"next\": [\n \"pickup\"\n ]\n }\n },\n {\n \"id\": \"pickup\",\n \"type\": \"string\",\n \"title\": \"Pickup\",\n \"position\": {\n \"x\": 240,\n \"y\": 0\n },\n \"taskTypeId\": \"66f1b2c3d4e5f6a7b8c9d0e1\",\n \"assignee\": {\n \"mode\": \"unassigned\"\n },\n \"hub\": {\n \"mode\": \"order\"\n },\n \"quantity\": {\n \"mode\": \"perOrder\"\n },\n \"taskData\": [\n {\n \"target\": \"title\",\n \"source\": {\n \"ref\": \"$order.values.orderNo\"\n }\n }\n ],\n \"saveToOrder\": [],\n \"next\": {\n \"next\": [\n \"done\"\n ]\n }\n },\n {\n \"id\": \"done\",\n \"type\": \"string\",\n \"title\": \"Finish\",\n \"position\": {\n \"x\": 480,\n \"y\": 0\n },\n \"statusId\": \"completed\"\n }\n ],\n \"canvas\": {\n \"viewport\": {\n \"x\": 0,\n \"y\": 0,\n \"zoom\": 1\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apiweb.mile.app/api/v4/order-type/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Express Delivery\",\n \"code\": \"EXP\",\n \"description\": \"Same-day parcel delivery\",\n \"draftRevision\": 4,\n \"fields\": [\n {\n \"id\": \"orderNo\",\n \"title\": \"Order number\",\n \"type\": \"string\",\n \"required\": true,\n \"unique\": true,\n \"show\": true\n },\n {\n \"id\": \"customerName\",\n \"title\": \"Customer name\",\n \"type\": \"string\",\n \"required\": false,\n \"show\": true\n },\n {\n \"id\": \"weight\",\n \"title\": \"Weight (kg)\",\n \"type\": \"number\",\n \"required\": false,\n \"show\": true,\n \"min\": 0\n }\n ],\n \"statuses\": [\n {\n \"id\": \"new\",\n \"label\": \"New\",\n \"category\": \"new\",\n \"order\": 1,\n \"color\": \"#6C757D\"\n },\n {\n \"id\": \"onDelivery\",\n \"label\": \"On delivery\",\n \"category\": \"inProgress\",\n \"order\": 2\n },\n {\n \"id\": \"completed\",\n \"label\": \"Completed\",\n \"category\": \"completed\",\n \"order\": 3\n },\n {\n \"id\": \"cancelled\",\n \"label\": \"Cancelled\",\n \"category\": \"completed\",\n \"order\": 4\n }\n ],\n \"configuration\": {\n \"uniqueBy\": [\n \"orderNo\"\n ],\n \"cancelStatusId\": \"cancelled\"\n },\n \"orderSteps\": [\n {\n \"id\": \"start\",\n \"type\": \"string\",\n \"title\": \"Order created\",\n \"position\": {\n \"x\": 0,\n \"y\": 0\n },\n \"event\": \"onOrderCreated\",\n \"next\": {\n \"next\": [\n \"pickup\"\n ]\n }\n },\n {\n \"id\": \"pickup\",\n \"type\": \"string\",\n \"title\": \"Pickup\",\n \"position\": {\n \"x\": 240,\n \"y\": 0\n },\n \"taskTypeId\": \"66f1b2c3d4e5f6a7b8c9d0e1\",\n \"assignee\": {\n \"mode\": \"unassigned\"\n },\n \"hub\": {\n \"mode\": \"order\"\n },\n \"quantity\": {\n \"mode\": \"perOrder\"\n },\n \"taskData\": [\n {\n \"target\": \"title\",\n \"source\": {\n \"ref\": \"$order.values.orderNo\"\n }\n }\n ],\n \"saveToOrder\": [],\n \"next\": {\n \"next\": [\n \"done\"\n ]\n }\n },\n {\n \"id\": \"done\",\n \"type\": \"string\",\n \"title\": \"Finish\",\n \"position\": {\n \"x\": 480,\n \"y\": 0\n },\n \"statusId\": \"completed\"\n }\n ],\n \"canvas\": {\n \"viewport\": {\n \"x\": 0,\n \"y\": 0,\n \"zoom\": 1\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Order Type saved",
"data": {
"_id": "6710a2f4c1d2e3f4a5b6c7d8",
"draftRevision": 5,
"hasUnpublishedChanges": true,
"checks": []
}
}{
"status": false,
"message": "Bad request - invalid parameters provided."
}{
"status": false,
"message": "Data not found"
}{
"status": false,
"message": "Bad request - invalid parameters provided."
}{
"status": false,
"message": "Internal server error, please contact [email protected]."
}Update order type
Saves the full draft of an order type. Requires permission edit/orderType.
Send the whole editable document with the draftRevision you read; the response returns the new draftRevision. Saving never publishes.
A draft whose structure is valid is stored even if it still has problems; those come back in checks (each with code, severity error or warning, and the step it concerns). Refused with 409 when the revision is stale, the name or code is taken, or the code changes while orders exist.
curl --request PUT \
--url https://apiweb.mile.app/api/v4/order-type/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Express Delivery",
"code": "EXP",
"description": "Same-day parcel delivery",
"draftRevision": 4,
"fields": [
{
"id": "orderNo",
"title": "Order number",
"type": "string",
"required": true,
"unique": true,
"show": true
},
{
"id": "customerName",
"title": "Customer name",
"type": "string",
"required": false,
"show": true
},
{
"id": "weight",
"title": "Weight (kg)",
"type": "number",
"required": false,
"show": true,
"min": 0
}
],
"statuses": [
{
"id": "new",
"label": "New",
"category": "new",
"order": 1,
"color": "#6C757D"
},
{
"id": "onDelivery",
"label": "On delivery",
"category": "inProgress",
"order": 2
},
{
"id": "completed",
"label": "Completed",
"category": "completed",
"order": 3
},
{
"id": "cancelled",
"label": "Cancelled",
"category": "completed",
"order": 4
}
],
"configuration": {
"uniqueBy": [
"orderNo"
],
"cancelStatusId": "cancelled"
},
"orderSteps": [
{
"id": "start",
"type": "string",
"title": "Order created",
"position": {
"x": 0,
"y": 0
},
"event": "onOrderCreated",
"next": {
"next": [
"pickup"
]
}
},
{
"id": "pickup",
"type": "string",
"title": "Pickup",
"position": {
"x": 240,
"y": 0
},
"taskTypeId": "66f1b2c3d4e5f6a7b8c9d0e1",
"assignee": {
"mode": "unassigned"
},
"hub": {
"mode": "order"
},
"quantity": {
"mode": "perOrder"
},
"taskData": [
{
"target": "title",
"source": {
"ref": "$order.values.orderNo"
}
}
],
"saveToOrder": [],
"next": {
"next": [
"done"
]
}
},
{
"id": "done",
"type": "string",
"title": "Finish",
"position": {
"x": 480,
"y": 0
},
"statusId": "completed"
}
],
"canvas": {
"viewport": {
"x": 0,
"y": 0,
"zoom": 1
}
}
}
'import requests
url = "https://apiweb.mile.app/api/v4/order-type/{id}"
payload = {
"name": "Express Delivery",
"code": "EXP",
"description": "Same-day parcel delivery",
"draftRevision": 4,
"fields": [
{
"id": "orderNo",
"title": "Order number",
"type": "string",
"required": True,
"unique": True,
"show": True
},
{
"id": "customerName",
"title": "Customer name",
"type": "string",
"required": False,
"show": True
},
{
"id": "weight",
"title": "Weight (kg)",
"type": "number",
"required": False,
"show": True,
"min": 0
}
],
"statuses": [
{
"id": "new",
"label": "New",
"category": "new",
"order": 1,
"color": "#6C757D"
},
{
"id": "onDelivery",
"label": "On delivery",
"category": "inProgress",
"order": 2
},
{
"id": "completed",
"label": "Completed",
"category": "completed",
"order": 3
},
{
"id": "cancelled",
"label": "Cancelled",
"category": "completed",
"order": 4
}
],
"configuration": {
"uniqueBy": ["orderNo"],
"cancelStatusId": "cancelled"
},
"orderSteps": [
{
"id": "start",
"type": "string",
"title": "Order created",
"position": {
"x": 0,
"y": 0
},
"event": "onOrderCreated",
"next": { "next": ["pickup"] }
},
{
"id": "pickup",
"type": "string",
"title": "Pickup",
"position": {
"x": 240,
"y": 0
},
"taskTypeId": "66f1b2c3d4e5f6a7b8c9d0e1",
"assignee": { "mode": "unassigned" },
"hub": { "mode": "order" },
"quantity": { "mode": "perOrder" },
"taskData": [
{
"target": "title",
"source": { "ref": "$order.values.orderNo" }
}
],
"saveToOrder": [],
"next": { "next": ["done"] }
},
{
"id": "done",
"type": "string",
"title": "Finish",
"position": {
"x": 480,
"y": 0
},
"statusId": "completed"
}
],
"canvas": { "viewport": {
"x": 0,
"y": 0,
"zoom": 1
} }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Express Delivery',
code: 'EXP',
description: 'Same-day parcel delivery',
draftRevision: 4,
fields: [
{
id: 'orderNo',
title: 'Order number',
type: 'string',
required: true,
unique: true,
show: true
},
{
id: 'customerName',
title: 'Customer name',
type: 'string',
required: false,
show: true
},
{
id: 'weight',
title: 'Weight (kg)',
type: 'number',
required: false,
show: true,
min: 0
}
],
statuses: [
{id: 'new', label: 'New', category: 'new', order: 1, color: '#6C757D'},
{id: 'onDelivery', label: 'On delivery', category: 'inProgress', order: 2},
{id: 'completed', label: 'Completed', category: 'completed', order: 3},
{id: 'cancelled', label: 'Cancelled', category: 'completed', order: 4}
],
configuration: {uniqueBy: ['orderNo'], cancelStatusId: 'cancelled'},
orderSteps: [
{
id: 'start',
type: 'string',
title: 'Order created',
position: {x: 0, y: 0},
event: 'onOrderCreated',
next: {next: ['pickup']}
},
{
id: 'pickup',
type: 'string',
title: 'Pickup',
position: {x: 240, y: 0},
taskTypeId: '66f1b2c3d4e5f6a7b8c9d0e1',
assignee: {mode: 'unassigned'},
hub: {mode: 'order'},
quantity: {mode: 'perOrder'},
taskData: [{target: 'title', source: {ref: '$order.values.orderNo'}}],
saveToOrder: [],
next: {next: ['done']}
},
{
id: 'done',
type: 'string',
title: 'Finish',
position: {x: 480, y: 0},
statusId: 'completed'
}
],
canvas: {viewport: {x: 0, y: 0, zoom: 1}}
})
};
fetch('https://apiweb.mile.app/api/v4/order-type/{id}', 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://apiweb.mile.app/api/v4/order-type/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Express Delivery',
'code' => 'EXP',
'description' => 'Same-day parcel delivery',
'draftRevision' => 4,
'fields' => [
[
'id' => 'orderNo',
'title' => 'Order number',
'type' => 'string',
'required' => true,
'unique' => true,
'show' => true
],
[
'id' => 'customerName',
'title' => 'Customer name',
'type' => 'string',
'required' => false,
'show' => true
],
[
'id' => 'weight',
'title' => 'Weight (kg)',
'type' => 'number',
'required' => false,
'show' => true,
'min' => 0
]
],
'statuses' => [
[
'id' => 'new',
'label' => 'New',
'category' => 'new',
'order' => 1,
'color' => '#6C757D'
],
[
'id' => 'onDelivery',
'label' => 'On delivery',
'category' => 'inProgress',
'order' => 2
],
[
'id' => 'completed',
'label' => 'Completed',
'category' => 'completed',
'order' => 3
],
[
'id' => 'cancelled',
'label' => 'Cancelled',
'category' => 'completed',
'order' => 4
]
],
'configuration' => [
'uniqueBy' => [
'orderNo'
],
'cancelStatusId' => 'cancelled'
],
'orderSteps' => [
[
'id' => 'start',
'type' => 'string',
'title' => 'Order created',
'position' => [
'x' => 0,
'y' => 0
],
'event' => 'onOrderCreated',
'next' => [
'next' => [
'pickup'
]
]
],
[
'id' => 'pickup',
'type' => 'string',
'title' => 'Pickup',
'position' => [
'x' => 240,
'y' => 0
],
'taskTypeId' => '66f1b2c3d4e5f6a7b8c9d0e1',
'assignee' => [
'mode' => 'unassigned'
],
'hub' => [
'mode' => 'order'
],
'quantity' => [
'mode' => 'perOrder'
],
'taskData' => [
[
'target' => 'title',
'source' => [
'ref' => '$order.values.orderNo'
]
]
],
'saveToOrder' => [
],
'next' => [
'next' => [
'done'
]
]
],
[
'id' => 'done',
'type' => 'string',
'title' => 'Finish',
'position' => [
'x' => 480,
'y' => 0
],
'statusId' => 'completed'
]
],
'canvas' => [
'viewport' => [
'x' => 0,
'y' => 0,
'zoom' => 1
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://apiweb.mile.app/api/v4/order-type/{id}"
payload := strings.NewReader("{\n \"name\": \"Express Delivery\",\n \"code\": \"EXP\",\n \"description\": \"Same-day parcel delivery\",\n \"draftRevision\": 4,\n \"fields\": [\n {\n \"id\": \"orderNo\",\n \"title\": \"Order number\",\n \"type\": \"string\",\n \"required\": true,\n \"unique\": true,\n \"show\": true\n },\n {\n \"id\": \"customerName\",\n \"title\": \"Customer name\",\n \"type\": \"string\",\n \"required\": false,\n \"show\": true\n },\n {\n \"id\": \"weight\",\n \"title\": \"Weight (kg)\",\n \"type\": \"number\",\n \"required\": false,\n \"show\": true,\n \"min\": 0\n }\n ],\n \"statuses\": [\n {\n \"id\": \"new\",\n \"label\": \"New\",\n \"category\": \"new\",\n \"order\": 1,\n \"color\": \"#6C757D\"\n },\n {\n \"id\": \"onDelivery\",\n \"label\": \"On delivery\",\n \"category\": \"inProgress\",\n \"order\": 2\n },\n {\n \"id\": \"completed\",\n \"label\": \"Completed\",\n \"category\": \"completed\",\n \"order\": 3\n },\n {\n \"id\": \"cancelled\",\n \"label\": \"Cancelled\",\n \"category\": \"completed\",\n \"order\": 4\n }\n ],\n \"configuration\": {\n \"uniqueBy\": [\n \"orderNo\"\n ],\n \"cancelStatusId\": \"cancelled\"\n },\n \"orderSteps\": [\n {\n \"id\": \"start\",\n \"type\": \"string\",\n \"title\": \"Order created\",\n \"position\": {\n \"x\": 0,\n \"y\": 0\n },\n \"event\": \"onOrderCreated\",\n \"next\": {\n \"next\": [\n \"pickup\"\n ]\n }\n },\n {\n \"id\": \"pickup\",\n \"type\": \"string\",\n \"title\": \"Pickup\",\n \"position\": {\n \"x\": 240,\n \"y\": 0\n },\n \"taskTypeId\": \"66f1b2c3d4e5f6a7b8c9d0e1\",\n \"assignee\": {\n \"mode\": \"unassigned\"\n },\n \"hub\": {\n \"mode\": \"order\"\n },\n \"quantity\": {\n \"mode\": \"perOrder\"\n },\n \"taskData\": [\n {\n \"target\": \"title\",\n \"source\": {\n \"ref\": \"$order.values.orderNo\"\n }\n }\n ],\n \"saveToOrder\": [],\n \"next\": {\n \"next\": [\n \"done\"\n ]\n }\n },\n {\n \"id\": \"done\",\n \"type\": \"string\",\n \"title\": \"Finish\",\n \"position\": {\n \"x\": 480,\n \"y\": 0\n },\n \"statusId\": \"completed\"\n }\n ],\n \"canvas\": {\n \"viewport\": {\n \"x\": 0,\n \"y\": 0,\n \"zoom\": 1\n }\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://apiweb.mile.app/api/v4/order-type/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Express Delivery\",\n \"code\": \"EXP\",\n \"description\": \"Same-day parcel delivery\",\n \"draftRevision\": 4,\n \"fields\": [\n {\n \"id\": \"orderNo\",\n \"title\": \"Order number\",\n \"type\": \"string\",\n \"required\": true,\n \"unique\": true,\n \"show\": true\n },\n {\n \"id\": \"customerName\",\n \"title\": \"Customer name\",\n \"type\": \"string\",\n \"required\": false,\n \"show\": true\n },\n {\n \"id\": \"weight\",\n \"title\": \"Weight (kg)\",\n \"type\": \"number\",\n \"required\": false,\n \"show\": true,\n \"min\": 0\n }\n ],\n \"statuses\": [\n {\n \"id\": \"new\",\n \"label\": \"New\",\n \"category\": \"new\",\n \"order\": 1,\n \"color\": \"#6C757D\"\n },\n {\n \"id\": \"onDelivery\",\n \"label\": \"On delivery\",\n \"category\": \"inProgress\",\n \"order\": 2\n },\n {\n \"id\": \"completed\",\n \"label\": \"Completed\",\n \"category\": \"completed\",\n \"order\": 3\n },\n {\n \"id\": \"cancelled\",\n \"label\": \"Cancelled\",\n \"category\": \"completed\",\n \"order\": 4\n }\n ],\n \"configuration\": {\n \"uniqueBy\": [\n \"orderNo\"\n ],\n \"cancelStatusId\": \"cancelled\"\n },\n \"orderSteps\": [\n {\n \"id\": \"start\",\n \"type\": \"string\",\n \"title\": \"Order created\",\n \"position\": {\n \"x\": 0,\n \"y\": 0\n },\n \"event\": \"onOrderCreated\",\n \"next\": {\n \"next\": [\n \"pickup\"\n ]\n }\n },\n {\n \"id\": \"pickup\",\n \"type\": \"string\",\n \"title\": \"Pickup\",\n \"position\": {\n \"x\": 240,\n \"y\": 0\n },\n \"taskTypeId\": \"66f1b2c3d4e5f6a7b8c9d0e1\",\n \"assignee\": {\n \"mode\": \"unassigned\"\n },\n \"hub\": {\n \"mode\": \"order\"\n },\n \"quantity\": {\n \"mode\": \"perOrder\"\n },\n \"taskData\": [\n {\n \"target\": \"title\",\n \"source\": {\n \"ref\": \"$order.values.orderNo\"\n }\n }\n ],\n \"saveToOrder\": [],\n \"next\": {\n \"next\": [\n \"done\"\n ]\n }\n },\n {\n \"id\": \"done\",\n \"type\": \"string\",\n \"title\": \"Finish\",\n \"position\": {\n \"x\": 480,\n \"y\": 0\n },\n \"statusId\": \"completed\"\n }\n ],\n \"canvas\": {\n \"viewport\": {\n \"x\": 0,\n \"y\": 0,\n \"zoom\": 1\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apiweb.mile.app/api/v4/order-type/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Express Delivery\",\n \"code\": \"EXP\",\n \"description\": \"Same-day parcel delivery\",\n \"draftRevision\": 4,\n \"fields\": [\n {\n \"id\": \"orderNo\",\n \"title\": \"Order number\",\n \"type\": \"string\",\n \"required\": true,\n \"unique\": true,\n \"show\": true\n },\n {\n \"id\": \"customerName\",\n \"title\": \"Customer name\",\n \"type\": \"string\",\n \"required\": false,\n \"show\": true\n },\n {\n \"id\": \"weight\",\n \"title\": \"Weight (kg)\",\n \"type\": \"number\",\n \"required\": false,\n \"show\": true,\n \"min\": 0\n }\n ],\n \"statuses\": [\n {\n \"id\": \"new\",\n \"label\": \"New\",\n \"category\": \"new\",\n \"order\": 1,\n \"color\": \"#6C757D\"\n },\n {\n \"id\": \"onDelivery\",\n \"label\": \"On delivery\",\n \"category\": \"inProgress\",\n \"order\": 2\n },\n {\n \"id\": \"completed\",\n \"label\": \"Completed\",\n \"category\": \"completed\",\n \"order\": 3\n },\n {\n \"id\": \"cancelled\",\n \"label\": \"Cancelled\",\n \"category\": \"completed\",\n \"order\": 4\n }\n ],\n \"configuration\": {\n \"uniqueBy\": [\n \"orderNo\"\n ],\n \"cancelStatusId\": \"cancelled\"\n },\n \"orderSteps\": [\n {\n \"id\": \"start\",\n \"type\": \"string\",\n \"title\": \"Order created\",\n \"position\": {\n \"x\": 0,\n \"y\": 0\n },\n \"event\": \"onOrderCreated\",\n \"next\": {\n \"next\": [\n \"pickup\"\n ]\n }\n },\n {\n \"id\": \"pickup\",\n \"type\": \"string\",\n \"title\": \"Pickup\",\n \"position\": {\n \"x\": 240,\n \"y\": 0\n },\n \"taskTypeId\": \"66f1b2c3d4e5f6a7b8c9d0e1\",\n \"assignee\": {\n \"mode\": \"unassigned\"\n },\n \"hub\": {\n \"mode\": \"order\"\n },\n \"quantity\": {\n \"mode\": \"perOrder\"\n },\n \"taskData\": [\n {\n \"target\": \"title\",\n \"source\": {\n \"ref\": \"$order.values.orderNo\"\n }\n }\n ],\n \"saveToOrder\": [],\n \"next\": {\n \"next\": [\n \"done\"\n ]\n }\n },\n {\n \"id\": \"done\",\n \"type\": \"string\",\n \"title\": \"Finish\",\n \"position\": {\n \"x\": 480,\n \"y\": 0\n },\n \"statusId\": \"completed\"\n }\n ],\n \"canvas\": {\n \"viewport\": {\n \"x\": 0,\n \"y\": 0,\n \"zoom\": 1\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Order Type saved",
"data": {
"_id": "6710a2f4c1d2e3f4a5b6c7d8",
"draftRevision": 5,
"hasUnpublishedChanges": true,
"checks": []
}
}{
"status": false,
"message": "Bad request - invalid parameters provided."
}{
"status": false,
"message": "Data not found"
}{
"status": false,
"message": "Bad request - invalid parameters provided."
}{
"status": false,
"message": "Internal server error, please contact [email protected]."
}Authorizations
Use a valid Bearer token to authenticate.
Path Parameters
Unique identifier for the order type that generated by system.
Example: 6710a2f4c1d2e3f4a5b6c7d8
Body
Name of the order type, unique in the organization. Max 100 characters.
Example: Express Delivery
Short code, 1-10 uppercase letters or digits, unique in the organization. Cannot change once the order type has orders.
Example: EXP
The draftRevision you last read. A stale value is refused with 409.
Example: 3
List of order fields. The first field is the order number: it must be type text or number, and it is always required and unique within the order type.
Each field: id (letters, digits, _, -), title, type, and optional description, required, show, unique, default, archived.
type is one of text, number, option, date, dateTime, time, phoneNumber, geolocation, reference, lineItems, user, boolean. Type-specific keys: maxLength (text, phoneNumber), min/max (number, date, dateTime, time), options (option, list of unique strings), reference (reference), columns (lineItems).
List of order statuses. Each status: id, label, category, order (integer), and optional color, publicLabel, viewAccess ({ "roles": [roleId] }, empty means every role).
category is one of new, inProgress, completed. Exactly one status must be new and at least one must be completed before the order type can be published.
Order type configuration: cancelStatusId (a status of category completed used by Cancel order; null when cancelling is not allowed) and uniqueBy (derived from the first field on save).
The order steps graph, at most 200 steps. Every step has id (lowercase letters, digits and -, max 40 characters), type, title (max 80 characters), position ({ x, y }) and next (port name to list of step ids; not used on finishOrder).
Step type:
trigger:eventisonOrderCreatedoronTaskFinished. ForonTaskFinishedalsotaskTypeId(the task type, flowId, whose finished tasks create orders),onlyIf,quantity(modeperTaskorperRow) andmapping.createTask:taskTypeId(task type, flowId),assignee(modeunassigned,userorfield),hub(modeorderorfixed),quantity(modeperOrderorperRow),taskData,saveToOrder,retry(maxAttempts1-10).condition:rules(max 20 rules, max 20 conditions each; operatorseq,neq,gt,gte,lt,lte,contains,isEmpty). Each rule is a portrule:.updateOrder:set(mapping rows) andstatus(modefixedormap).finishOrder:statusId.callWebhook:request(url,methodPOSTorPUT,headers,timeoutSec1-30,bodywithmodeorderortemplate) andsaveResponse. Portssuccessandfailed. Secret header values are never returned (value: null,hasValue: true). Mapping rows (max 50) are{ target, source }; a source is{ "value": ... }or{ "ref": "$..." }.
Optional editor layout: viewport ({ x, y, zoom }) and listOrder (list of step ids).