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]."
}Path Parameters
Body
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.
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 flow, flowId, whose finished tasks create orders),onlyIf,quantity(modeperTaskorperRow) andmapping.createTask:taskTypeId(flow, 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": "$..." }.