MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

This API is not authenticated.

User profile

Register or Create User/Customer account

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/auth/register" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"full_name\": \"consequatur\",
    \"email\": \"qkunze@example.com\",
    \"phone\": \"consequatur\",
    \"other_phone_number\": \"consequatur\",
    \"address\": \"consequatur\",
    \"city\": \"mqeopfuudtdsufvyvddqa\",
    \"region\": \"mniihfqcoynlazghdtqtq\",
    \"company_name\": \"xbajwbpilpmufinllwloa\",
    \"tin\": \"uydlsmsjuryvojcybzvrb\",
    \"primary_transport_mode\": \"consequatur\",
    \"role\": \"consequatur\",
    \"password\": \"O[2UZ5ij-e\\/dl4m{o,\",
    \"password_confirmation\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/register"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "full_name": "consequatur",
    "email": "qkunze@example.com",
    "phone": "consequatur",
    "other_phone_number": "consequatur",
    "address": "consequatur",
    "city": "mqeopfuudtdsufvyvddqa",
    "region": "mniihfqcoynlazghdtqtq",
    "company_name": "xbajwbpilpmufinllwloa",
    "tin": "uydlsmsjuryvojcybzvrb",
    "primary_transport_mode": "consequatur",
    "role": "consequatur",
    "password": "O[2UZ5ij-e\/dl4m{o,",
    "password_confirmation": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/register';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'full_name' => 'consequatur',
            'email' => 'qkunze@example.com',
            'phone' => 'consequatur',
            'other_phone_number' => 'consequatur',
            'address' => 'consequatur',
            'city' => 'mqeopfuudtdsufvyvddqa',
            'region' => 'mniihfqcoynlazghdtqtq',
            'company_name' => 'xbajwbpilpmufinllwloa',
            'tin' => 'uydlsmsjuryvojcybzvrb',
            'primary_transport_mode' => 'consequatur',
            'role' => 'consequatur',
            'password' => 'O[2UZ5ij-e/dl4m{o,',
            'password_confirmation' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/register

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

full_name   string     

Example: consequatur

email   string     

Example: qkunze@example.com

phone   string     

Example: consequatur

other_phone_number   string  optional    

Example: consequatur

address   string  optional    

Example: consequatur

city   string  optional    

Must not be greater than 100 characters. Example: mqeopfuudtdsufvyvddqa

region   string  optional    

Must not be greater than 100 characters. Example: mniihfqcoynlazghdtqtq

company_name   string  optional    

Must not be greater than 255 characters. Example: xbajwbpilpmufinllwloa

tin   string  optional    

Must not be greater than 50 characters. Example: uydlsmsjuryvojcybzvrb

primary_transport_mode   string  optional    

The code of an existing record in the transport_modes table. Example: consequatur

role   string  optional    

E.g 'admin','origin_agent', 'destination_officer','shopping_assistant', 'finance', 'supervisor', 'super_admin','client' Example: consequatur

password   string  optional    

optional Example: O[2UZ5ij-e/dl4m{o,

password_confirmation   string  optional    

Example: consequatur

Send OTP

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/auth/send_otp" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"validation_text\": \"Email or Password\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/send_otp"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "validation_text": "Email or Password"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/send_otp';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'validation_text' => 'Email or Password',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "An OTP has been sent to your phone and email",
      }
  }
 

Request      

POST api/auth/send_otp

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

validation_text   string     

Example: Email or Password

Verify OTP

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/auth/verify_otp" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"validation_text\": \"Email or phone number\",
    \"otp\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/verify_otp"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "validation_text": "Email or phone number",
    "otp": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/verify_otp';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'validation_text' => 'Email or phone number',
            'otp' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "An OTP has been sent to your phone and email",
      }
  }
 

Request      

POST api/auth/verify_otp

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

validation_text   string     

Example: Email or phone number

otp   string     

Example: consequatur

Set or change password

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/auth/change_password" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"O[2UZ5ij-e\\/dl4m{o,\",
    \"user_id\": 17,
    \"password_confirmation\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/change_password"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "O[2UZ5ij-e\/dl4m{o,",
    "user_id": 17,
    "password_confirmation": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/change_password';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'password' => 'O[2UZ5ij-e/dl4m{o,',
            'user_id' => 17,
            'password_confirmation' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Account Password has been reset",
      }
  }
 

Request      

POST api/auth/change_password

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

password   string     

Example: O[2UZ5ij-e/dl4m{o,

user_id   integer  optional    

optional Example: 17

password_confirmation   string     

Example: consequatur

Login

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/auth/login" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"O[2UZ5ij-e\\/dl4m{o,\",
    \"email\": \"qkunze@example.com\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/login"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "O[2UZ5ij-e\/dl4m{o,",
    "email": "qkunze@example.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/login';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'password' => 'O[2UZ5ij-e/dl4m{o,',
            'email' => 'qkunze@example.com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "message": "Successfully loged in",
    "authorization": {
        "token": "1|ipsfUoT7lmvPZaeKNtyU5GDIarzgv084cW0RLfxl80a3b2ec",
        "token_type": "Bearer"
    },
    "data": {
        "id": 1,
        "full_name": "Thembo Charles",
        "email": "ashley7520charles@gmail.com",
        "phone": "0787444081",
        "email_verified_at": null,
        "tin": "110023452",
        "passport": "65748",
        "address": "Kampala",
        "otp": "4782",
        "status": "active",
        "user_type": "user",
        "created_at": "2025-12-05T06:42:09.000000Z",
        "updated_at": "2025-12-05T07:58:28.000000Z",
        "deleted_at": null
    }
}
 

Request      

POST api/auth/login

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

password   string     

Example: O[2UZ5ij-e/dl4m{o,

email   string     

Example: qkunze@example.com

Log Out User

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/auth/logout" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/logout"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/logout';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Successfully logged out",
      }
  }
 

Request      

POST api/auth/logout

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

User Profile

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/auth/user" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/user"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/user';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "message": "User Profile",
    "data": {
        "id": 1,
        "full_name": "Thembo Charles",
        "email": "ashley7520charles@gmail.com",
        "phone": "0787444081",
        "email_verified_at": null,
        "tin": "110023452",
        "passport": "65748",
        "address": "Kampala",
        "otp": "4782",
        "status": "active",
        "user_type": "user",
        "created_at": "2025-12-05T06:42:09.000000Z",
        "updated_at": "2025-12-05T07:58:28.000000Z",
        "deleted_at": null
    }
}
 

Request      

GET api/auth/user

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Register or Create User/Customer account

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/auth/create_user" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"full_name\": \"consequatur\",
    \"email\": \"qkunze@example.com\",
    \"phone\": \"consequatur\",
    \"other_phone_number\": \"consequatur\",
    \"address\": \"consequatur\",
    \"city\": \"mqeopfuudtdsufvyvddqa\",
    \"region\": \"mniihfqcoynlazghdtqtq\",
    \"company_name\": \"xbajwbpilpmufinllwloa\",
    \"tin\": \"uydlsmsjuryvojcybzvrb\",
    \"primary_transport_mode\": \"consequatur\",
    \"role\": \"consequatur\",
    \"password\": \"O[2UZ5ij-e\\/dl4m{o,\",
    \"password_confirmation\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/create_user"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "full_name": "consequatur",
    "email": "qkunze@example.com",
    "phone": "consequatur",
    "other_phone_number": "consequatur",
    "address": "consequatur",
    "city": "mqeopfuudtdsufvyvddqa",
    "region": "mniihfqcoynlazghdtqtq",
    "company_name": "xbajwbpilpmufinllwloa",
    "tin": "uydlsmsjuryvojcybzvrb",
    "primary_transport_mode": "consequatur",
    "role": "consequatur",
    "password": "O[2UZ5ij-e\/dl4m{o,",
    "password_confirmation": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/create_user';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'full_name' => 'consequatur',
            'email' => 'qkunze@example.com',
            'phone' => 'consequatur',
            'other_phone_number' => 'consequatur',
            'address' => 'consequatur',
            'city' => 'mqeopfuudtdsufvyvddqa',
            'region' => 'mniihfqcoynlazghdtqtq',
            'company_name' => 'xbajwbpilpmufinllwloa',
            'tin' => 'uydlsmsjuryvojcybzvrb',
            'primary_transport_mode' => 'consequatur',
            'role' => 'consequatur',
            'password' => 'O[2UZ5ij-e/dl4m{o,',
            'password_confirmation' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/create_user

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

full_name   string     

Example: consequatur

email   string     

Example: qkunze@example.com

phone   string     

Example: consequatur

other_phone_number   string  optional    

Example: consequatur

address   string  optional    

Example: consequatur

city   string  optional    

Must not be greater than 100 characters. Example: mqeopfuudtdsufvyvddqa

region   string  optional    

Must not be greater than 100 characters. Example: mniihfqcoynlazghdtqtq

company_name   string  optional    

Must not be greater than 255 characters. Example: xbajwbpilpmufinllwloa

tin   string  optional    

Must not be greater than 50 characters. Example: uydlsmsjuryvojcybzvrb

primary_transport_mode   string  optional    

The code of an existing record in the transport_modes table. Example: consequatur

role   string  optional    

E.g 'admin','origin_agent', 'destination_officer','shopping_assistant', 'finance', 'supervisor', 'super_admin','client' Example: consequatur

password   string  optional    

optional Example: O[2UZ5ij-e/dl4m{o,

password_confirmation   string  optional    

Example: consequatur

Update user

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/auth/update_user" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"full_name\": \"consequatur\",
    \"phone\": \"consequatur\",
    \"address\": \"consequatur\",
    \"other_phone_number\": \"Any string\",
    \"city\": \"consequatur\",
    \"region\": \"consequatur\",
    \"company_name\": \"Any string\",
    \"tin\": \"Any string\",
    \"primary_transport_mode\": \"Any string\",
    \"street\": \"consequatur\",
    \"country\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/update_user"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "full_name": "consequatur",
    "phone": "consequatur",
    "address": "consequatur",
    "other_phone_number": "Any string",
    "city": "consequatur",
    "region": "consequatur",
    "company_name": "Any string",
    "tin": "Any string",
    "primary_transport_mode": "Any string",
    "street": "consequatur",
    "country": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/update_user';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'full_name' => 'consequatur',
            'phone' => 'consequatur',
            'address' => 'consequatur',
            'other_phone_number' => 'Any string',
            'city' => 'consequatur',
            'region' => 'consequatur',
            'company_name' => 'Any string',
            'tin' => 'Any string',
            'primary_transport_mode' => 'Any string',
            'street' => 'consequatur',
            'country' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "status": "success",
  "message": "Successfully logged out",
}
 

Request      

PUT api/auth/update_user

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

full_name   string     

Example: consequatur

phone   string     

Example: consequatur

address   string  optional    

Example: consequatur

other_phone_number   string  optional    

Request parameter: other_phone_number. Example: Any string

city   string  optional    

Example: consequatur

region   string  optional    

Example: consequatur

company_name   string  optional    

Request parameter: company_name. Must not be greater than 255 characters. Example: Any string

tin   string  optional    

Request parameter: tin. Must not be greater than 50 characters. Example: Any string

primary_transport_mode   string  optional    

Request parameter: primary_transport_mode. The code of an existing record in the transport_modes table. Example: Any string

street   string  optional    

Example: consequatur

country   string  optional    

Example: consequatur

Update another user's staff profile (name, email, phone, role) - distinct from updateUser() above, which only ever edits the currently-authenticated user.

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/auth/staff/1" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"full_name\": \"consequatur\",
    \"email\": \"qkunze@example.com\",
    \"phone\": \"consequatur\",
    \"role\": \"consequatur\",
    \"active\": false,
    \"address\": \"consequatur\",
    \"city\": \"mqeopfuudtdsufvyvddqa\",
    \"region\": \"mniihfqcoynlazghdtqtq\",
    \"company_name\": \"xbajwbpilpmufinllwloa\",
    \"tin\": \"uydlsmsjuryvojcybzvrb\",
    \"primary_transport_mode\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/staff/1"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "full_name": "consequatur",
    "email": "qkunze@example.com",
    "phone": "consequatur",
    "role": "consequatur",
    "active": false,
    "address": "consequatur",
    "city": "mqeopfuudtdsufvyvddqa",
    "region": "mniihfqcoynlazghdtqtq",
    "company_name": "xbajwbpilpmufinllwloa",
    "tin": "uydlsmsjuryvojcybzvrb",
    "primary_transport_mode": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/staff/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'full_name' => 'consequatur',
            'email' => 'qkunze@example.com',
            'phone' => 'consequatur',
            'role' => 'consequatur',
            'active' => false,
            'address' => 'consequatur',
            'city' => 'mqeopfuudtdsufvyvddqa',
            'region' => 'mniihfqcoynlazghdtqtq',
            'company_name' => 'xbajwbpilpmufinllwloa',
            'tin' => 'uydlsmsjuryvojcybzvrb',
            'primary_transport_mode' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/auth/staff/{user_id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

user_id   integer     

The ID of the user. Example: 1

Body Parameters

full_name   string  optional    

Example: consequatur

email   string  optional    

Example: qkunze@example.com

phone   string  optional    

Example: consequatur

role   string  optional    

E.g admin, origin_agent, destination_officer, shopping_assistant, finance, super_admin, client, customs_officer, supervisor Example: consequatur

active   boolean  optional    

Example: false

address   string  optional    

Example: consequatur

city   string  optional    

Must not be greater than 100 characters. Example: mqeopfuudtdsufvyvddqa

region   string  optional    

Must not be greater than 100 characters. Example: mniihfqcoynlazghdtqtq

company_name   string  optional    

Must not be greater than 255 characters. Example: xbajwbpilpmufinllwloa

tin   string  optional    

Must not be greater than 50 characters. Example: uydlsmsjuryvojcybzvrb

primary_transport_mode   string  optional    

The code of an existing record in the transport_modes table. Example: consequatur

Account profiles

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/auth/all_profiles" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/all_profiles"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/all_profiles';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/auth/all_profiles could not be found."
}
 

Request      

GET api/auth/all_profiles

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Allocate an Account a WareHouse

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/auth/user_warehouse" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 17,
    \"warehouse_location_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/user_warehouse"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 17,
    "warehouse_location_id": 17
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/user_warehouse';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'user_id' => 17,
            'warehouse_location_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/user_warehouse

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

Example: 17

warehouse_location_id   integer     

Example: 17

Read Users

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/customers" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_role\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/customers"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_role": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/customers';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'user_role' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/customers

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_role   string  optional    

optional E.g: 'admin','origin_agent', 'destination_officer', 'shopping_assistant', 'finance','super_admin','client' Example: consequatur

Customer Details

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/customers/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/customers/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/customers/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/customers/17 could not be found."
}
 

Request      

GET api/customers/{user_id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

user_id   integer     

Example: 17

A client's own version of customerDetails() - same payload shape (profile, invoices, payments, cargo declarations, shipments) but self-scoped rather than taking an arbitrary user_id, so a client can never pull up another client's data.

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/client/my-profile" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/client/my-profile"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/client/my-profile';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/client/my-profile could not be found."
}
 

Request      

GET api/client/my-profile

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Search cistomer/User by Client code

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/search-customer" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_code\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/search-customer"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_code": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/search-customer';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'client_code' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/search-customer

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

client_code   string     

AIR-00001 Example: consequatur

Warehouse Location

Warehouse Locations

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/settings/locations" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/locations"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/locations';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "message": "Warehouse Locations",
    "data": [
        {
            "id": 1,
            "created_at": "2025-12-05T09:12:00.000000Z",
            "updated_at": "2025-12-05T09:12:00.000000Z",
            "deleted_at": null,
            "country": "Uganda",
            "address": "A",
            "rack_count": "01",
            "is_occupied": 0
        }
    ]
}
 

Request      

GET api/settings/locations

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Create Warehouse Location

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/settings/locations" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"consequatur\",
    \"address\": \"consequatur\",
    \"manager\": \"consequatur\",
    \"active\": false,
    \"name\": \"consequatur\",
    \"country\": \"consequatur\",
    \"city\": \"consequatur\",
    \"state\": \"consequatur\",
    \"zip\": \"consequatur\",
    \"phone_number\": \"consequatur\",
    \"currency\": \"consequatur\",
    \"type\": \"consequatur\",
    \"unit_system\": \"Any string\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/locations"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "consequatur",
    "address": "consequatur",
    "manager": "consequatur",
    "active": false,
    "name": "consequatur",
    "country": "consequatur",
    "city": "consequatur",
    "state": "consequatur",
    "zip": "consequatur",
    "phone_number": "consequatur",
    "currency": "consequatur",
    "type": "consequatur",
    "unit_system": "Any string"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/locations';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'code' => 'consequatur',
            'address' => 'consequatur',
            'manager' => 'consequatur',
            'active' => false,
            'name' => 'consequatur',
            'country' => 'consequatur',
            'city' => 'consequatur',
            'state' => 'consequatur',
            'zip' => 'consequatur',
            'phone_number' => 'consequatur',
            'currency' => 'consequatur',
            'type' => 'consequatur',
            'unit_system' => 'Any string',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/settings/locations

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

Example: consequatur

address   string     

Example: consequatur

manager   string  optional    

Example: consequatur

active   boolean  optional    

Request parameter: active. Example: false

name   string  optional    

Example: consequatur

country   string  optional    

Example: consequatur

city   string  optional    

Example: consequatur

state   string  optional    

Example: consequatur

zip   string  optional    

Example: consequatur

phone_number   string  optional    

Example: consequatur

currency   string  optional    

Example: consequatur

type   string  optional    

E.g: 'origin', 'destination' Example: consequatur

unit_system   string  optional    

Request parameter: unit_system. Example: Any string

Must be one of:
  • metric
  • imperial

Update Warehouse Location

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/settings/locations/consequatur" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"consequatur\",
    \"address\": \"consequatur\",
    \"manager\": \"consequatur\",
    \"active\": false,
    \"rack_count\": \"consequatur\",
    \"name\": \"consequatur\",
    \"country\": \"consequatur\",
    \"city\": \"consequatur\",
    \"state\": \"consequatur\",
    \"zip\": \"consequatur\",
    \"phone_number\": \"consequatur\",
    \"currency\": \"consequatur\",
    \"type\": \"consequatur\",
    \"unit_system\": \"Any string\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/locations/consequatur"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "consequatur",
    "address": "consequatur",
    "manager": "consequatur",
    "active": false,
    "rack_count": "consequatur",
    "name": "consequatur",
    "country": "consequatur",
    "city": "consequatur",
    "state": "consequatur",
    "zip": "consequatur",
    "phone_number": "consequatur",
    "currency": "consequatur",
    "type": "consequatur",
    "unit_system": "Any string"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/locations/consequatur';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'code' => 'consequatur',
            'address' => 'consequatur',
            'manager' => 'consequatur',
            'active' => false,
            'rack_count' => 'consequatur',
            'name' => 'consequatur',
            'country' => 'consequatur',
            'city' => 'consequatur',
            'state' => 'consequatur',
            'zip' => 'consequatur',
            'phone_number' => 'consequatur',
            'currency' => 'consequatur',
            'type' => 'consequatur',
            'unit_system' => 'Any string',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/settings/locations/{id}

PATCH api/settings/locations/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the location. Example: consequatur

warehouseLocation_id   integer     

Example: 17

Body Parameters

code   string     

Example: consequatur

address   string     

Example: consequatur

manager   string  optional    

Example: consequatur

active   boolean  optional    

Request parameter: active. Example: false

rack_count   string     

Example: consequatur

name   string  optional    

Example: consequatur

country   string  optional    

Example: consequatur

city   string  optional    

Example: consequatur

state   string  optional    

Example: consequatur

zip   string  optional    

Example: consequatur

phone_number   string  optional    

Example: consequatur

currency   string  optional    

Example: consequatur

type   string  optional    

E.g: 'origin', 'destination' Example: consequatur

unit_system   string  optional    

Request parameter: unit_system. Example: Any string

Must be one of:
  • metric
  • imperial

Delete Warehouse Location

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/settings/locations/consequatur" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/locations/consequatur"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/locations/consequatur';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "message": "Warehouse Location deleted successfully"
}
 

Request      

DELETE api/settings/locations/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the location. Example: consequatur

warehouseLocation_id   integer     

Example: 17

Create Warehouse Rack

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/settings/warehouse_racks" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"zone_name\": \"consequatur\",
    \"bin_start\": \"consequatur\",
    \"bin_end\": \"consequatur\",
    \"capacity\": \"consequatur\",
    \"type\": \"consequatur\",
    \"warehouse_location_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/warehouse_racks"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "zone_name": "consequatur",
    "bin_start": "consequatur",
    "bin_end": "consequatur",
    "capacity": "consequatur",
    "type": "consequatur",
    "warehouse_location_id": 17
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/warehouse_racks';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'zone_name' => 'consequatur',
            'bin_start' => 'consequatur',
            'bin_end' => 'consequatur',
            'capacity' => 'consequatur',
            'type' => 'consequatur',
            'warehouse_location_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/settings/warehouse_racks

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

zone_name   string     

Example: consequatur

bin_start   string     

Example: consequatur

bin_end   string     

Example: consequatur

capacity   string  optional    

Example: consequatur

type   string  optional    

Example SHELF,PALLET,COLD,FRAGILE Example: consequatur

warehouse_location_id   integer     

Example: 17

Update Warehouse Rack

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/settings/warehouse_racks/17" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"zone_name\": \"consequatur\",
    \"bin_start\": \"consequatur\",
    \"bin_end\": \"consequatur\",
    \"capacity\": \"consequatur\",
    \"type\": \"consequatur\",
    \"warehouse_location_id\": 1000,
    \"warehouseRack_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/warehouse_racks/17"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "zone_name": "consequatur",
    "bin_start": "consequatur",
    "bin_end": "consequatur",
    "capacity": "consequatur",
    "type": "consequatur",
    "warehouse_location_id": 1000,
    "warehouseRack_id": 17
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/warehouse_racks/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'zone_name' => 'consequatur',
            'bin_start' => 'consequatur',
            'bin_end' => 'consequatur',
            'capacity' => 'consequatur',
            'type' => 'consequatur',
            'warehouse_location_id' => 1000,
            'warehouseRack_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/settings/warehouse_racks/{id}

PATCH api/settings/warehouse_racks/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the warehouse rack. Example: 17

Body Parameters

zone_name   string  optional    

sometimes Example: consequatur

bin_start   string  optional    

sometimes Example: consequatur

bin_end   string  optional    

sometimes Example: consequatur

capacity   string  optional    

sometimes Example: consequatur

type   string  optional    

sometimes Example SHELF,PALLET,COLD,FRAGILE Example: consequatur

warehouse_location_id   integer  optional    

Request parameter: warehouse_location_id. The id of an existing record in the warehouse_locations table. Example: 1000

warehouseRack_id   integer     

Example: 17

Delete Warehouse Rack

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/settings/warehouse_racks/17" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"warehouseRack_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/warehouse_racks/17"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "warehouseRack_id": 17
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/warehouse_racks/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'warehouseRack_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/settings/warehouse_racks/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the warehouse rack. Example: 17

Body Parameters

warehouseRack_id   integer     

Example: 17

Shipments

Shipments

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/orders" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/orders"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/orders';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "data": {
        "current_page": 1,
        "data": [
            {
                "id": 5,
                "created_at": "2025-12-05T12:20:11.000000Z",
                "updated_at": "2025-12-05T12:20:11.000000Z",
                "deleted_at": null,
                "tracking_number": "ORD-20251205-00002",
                "user_id": 1,
                "origin_country": "ITALY",
                "receiver_name": "Tom Mboya",
                "receiver_phone": "0789887766",
                "receiver_email": "tom.mboya@gmail.com",
                "receiver_address": "Uganda - Kampala",
                "status": "PENDING",
                "received_at": null,
                "dispatched_at": null,
                "arrived_at": null,
                "released_at": null,
                "delivered_at": null,
                "status_history": [
                    {
                        "id": 4,
                        "created_at": "2025-12-05T12:27:49.000000Z",
                        "updated_at": "2025-12-05T12:27:49.000000Z",
                        "deleted_at": null,
                        "order_id": 5,
                        "status": "CONSOLIDATED",
                        "notes": "Well received",
                        "location": "USA",
                        "user_id": 1,
                        "user": {
                            "id": 1,
                            "full_name": "Thembo Charles",
                            "email": "ashley7520charles@gmail.com",
                            "phone": "0787444081",
                            "email_verified_at": null,
                            "tin": "110023452",
                            "passport": "65748",
                            "address": "Kampala",
                            "otp": "4782",
                            "status": "active",
                            "user_type": "user",
                            "created_at": "2025-12-05T06:42:09.000000Z",
                            "updated_at": "2025-12-05T07:58:28.000000Z",
                            "deleted_at": null
                        }
                    }
                ],
                "user": {
                    "id": 1,
                    "full_name": "Thembo Charles",
                    "email": "ashley7520charles@gmail.com",
                    "phone": "0787444081",
                    "email_verified_at": null,
                    "tin": "110023452",
                    "passport": "65748",
                    "address": "Kampala",
                    "otp": "4782",
                    "status": "active",
                    "user_type": "user",
                    "created_at": "2025-12-05T06:42:09.000000Z",
                    "updated_at": "2025-12-05T07:58:28.000000Z",
                    "deleted_at": null
                }
            },
            {
                "id": 2,
                "created_at": "2025-12-05T11:29:08.000000Z",
                "updated_at": "2025-12-05T11:29:08.000000Z",
                "deleted_at": null,
                "tracking_number": "ORD-20251205-00001",
                "user_id": 1,
                "origin_country": "USA",
                "receiver_name": "Tom Mboya",
                "receiver_phone": "0789887766",
                "receiver_email": "tom.mboya@gmail.com",
                "receiver_address": "Uganda - Kampala",
                "status": "PENDING",
                "received_at": null,
                "dispatched_at": null,
                "arrived_at": null,
                "released_at": null,
                "delivered_at": null,
                "status_history": [
                    {
                        "id": 2,
                        "created_at": "2025-12-05T12:03:09.000000Z",
                        "updated_at": "2025-12-05T12:03:09.000000Z",
                        "deleted_at": null,
                        "order_id": 2,
                        "status": "CONSOLIDATED",
                        "notes": "Well received",
                        "location": "USA",
                        "user_id": 1,
                        "user": {
                            "id": 1,
                            "full_name": "Thembo Charles",
                            "email": "ashley7520charles@gmail.com",
                            "phone": "0787444081",
                            "email_verified_at": null,
                            "tin": "110023452",
                            "passport": "65748",
                            "address": "Kampala",
                            "otp": "4782",
                            "status": "active",
                            "user_type": "user",
                            "created_at": "2025-12-05T06:42:09.000000Z",
                            "updated_at": "2025-12-05T07:58:28.000000Z",
                            "deleted_at": null
                        }
                    },
                    {
                        "id": 1,
                        "created_at": "2025-12-05T12:01:16.000000Z",
                        "updated_at": "2025-12-05T12:01:16.000000Z",
                        "deleted_at": null,
                        "order_id": 2,
                        "status": "RECEIVED",
                        "notes": "Well received",
                        "location": "USA",
                        "user_id": null,
                        "user": null
                    }
                ],
                "user": {
                    "id": 1,
                    "full_name": "Thembo Charles",
                    "email": "ashley7520charles@gmail.com",
                    "phone": "0787444081",
                    "email_verified_at": null,
                    "tin": "110023452",
                    "passport": "65748",
                    "address": "Kampala",
                    "otp": "4782",
                    "status": "active",
                    "user_type": "user",
                    "created_at": "2025-12-05T06:42:09.000000Z",
                    "updated_at": "2025-12-05T07:58:28.000000Z",
                    "deleted_at": null
                }
            }
        ],
        "first_page_url": "http://127.0.0.1:8000/api/orders?page=1",
        "from": 1,
        "last_page": 1,
        "last_page_url": "http://127.0.0.1:8000/api/orders?page=1",
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "http://127.0.0.1:8000/api/orders?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "next_page_url": null,
        "path": "http://127.0.0.1:8000/api/orders",
        "per_page": 20,
        "prev_page_url": null,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/orders

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a Shipment Orders

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/orders" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"warehouse_location_id\": 17,
    \"destination_location_id\": 17,
    \"receiver_name\": \"consequatur\",
    \"receiver_phone\": \"consequatur\",
    \"receiver_email\": \"qkunze@example.com\",
    \"receiver_address\": \"consequatur\",
    \"shipping_mode\": \"\'express\',\'standard\'\",
    \"expected_delivery_time\": \"Any string\",
    \"transport_mode\": \"AIR or SEA\",
    \"user_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/orders"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "warehouse_location_id": 17,
    "destination_location_id": 17,
    "receiver_name": "consequatur",
    "receiver_phone": "consequatur",
    "receiver_email": "qkunze@example.com",
    "receiver_address": "consequatur",
    "shipping_mode": "'express','standard'",
    "expected_delivery_time": "Any string",
    "transport_mode": "AIR or SEA",
    "user_id": 17
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/orders';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'warehouse_location_id' => 17,
            'destination_location_id' => 17,
            'receiver_name' => 'consequatur',
            'receiver_phone' => 'consequatur',
            'receiver_email' => 'qkunze@example.com',
            'receiver_address' => 'consequatur',
            'shipping_mode' => '\'express\',\'standard\'',
            'expected_delivery_time' => 'Any string',
            'transport_mode' => 'AIR or SEA',
            'user_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/orders

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

warehouse_location_id   integer     

Example: 17

destination_location_id   integer     

Example: 17

receiver_name   string     

Example: consequatur

receiver_phone   string     

Example: consequatur

receiver_email   string  optional    

Example: qkunze@example.com

receiver_address   string  optional    

Example: consequatur

shipping_mode   string     

Example: 'express','standard'

expected_delivery_time   string  optional    

Request parameter: expected_delivery_time. Example: Any string

transport_mode   string     

Example: AIR or SEA

user_id   integer  optional    

optional Example: 17

Show Shipment

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/orders/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/orders/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/orders/consequatur';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "data": {
        "id": 5,
        "created_at": "2025-12-05T12:20:11.000000Z",
        "updated_at": "2025-12-05T12:20:11.000000Z",
        "deleted_at": null,
        "tracking_number": "ORD-20251205-00002",
        "user_id": 1,
        "origin_country": "ITALY",
        "receiver_name": "Tom Mboya",
        "receiver_phone": "0789887766",
        "receiver_email": "tom.mboya@gmail.com",
        "receiver_address": "Uganda - Kampala",
        "status": "PENDING",
        "received_at": null,
        "dispatched_at": null,
        "arrived_at": null,
        "released_at": null,
        "delivered_at": null,
        "status_history": [
            {
                "id": 4,
                "created_at": "2025-12-05T12:27:49.000000Z",
                "updated_at": "2025-12-05T12:27:49.000000Z",
                "deleted_at": null,
                "order_id": 5,
                "status": "CONSOLIDATED",
                "notes": "Well received",
                "location": "USA",
                "user_id": 1,
                "user": {
                    "id": 1,
                    "full_name": "Thembo Charles",
                    "email": "ashley7520charles@gmail.com",
                    "phone": "0787444081",
                    "email_verified_at": null,
                    "tin": "110023452",
                    "passport": "65748",
                    "address": "Kampala",
                    "otp": "4782",
                    "status": "active",
                    "user_type": "user",
                    "created_at": "2025-12-05T06:42:09.000000Z",
                    "updated_at": "2025-12-05T07:58:28.000000Z",
                    "deleted_at": null
                }
            }
        ],
        "user": {
            "id": 1,
            "full_name": "Thembo Charles",
            "email": "ashley7520charles@gmail.com",
            "phone": "0787444081",
            "email_verified_at": null,
            "tin": "110023452",
            "passport": "65748",
            "address": "Kampala",
            "otp": "4782",
            "status": "active",
            "user_type": "user",
            "created_at": "2025-12-05T06:42:09.000000Z",
            "updated_at": "2025-12-05T07:58:28.000000Z",
            "deleted_at": null
        }
    }
}
 

Request      

GET api/orders/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the order. Example: consequatur

order_id   integer     

Example: 17

Update Shipments

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/orders/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"receiver_name\": \"consequatur\",
    \"receiver_phone\": \"consequatur\",
    \"receiver_email\": \"qkunze@example.com\",
    \"receiver_address\": \"consequatur\",
    \"warehouse_location_id\": 17,
    \"destination_location_id\": 17,
    \"shipping_mode\": \"\'express\',\'standard\',\",
    \"expected_delivery_time\": \"consequatur\",
    \"origin_country\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/orders/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "receiver_name": "consequatur",
    "receiver_phone": "consequatur",
    "receiver_email": "qkunze@example.com",
    "receiver_address": "consequatur",
    "warehouse_location_id": 17,
    "destination_location_id": 17,
    "shipping_mode": "'express','standard',",
    "expected_delivery_time": "consequatur",
    "origin_country": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/orders/consequatur';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'receiver_name' => 'consequatur',
            'receiver_phone' => 'consequatur',
            'receiver_email' => 'qkunze@example.com',
            'receiver_address' => 'consequatur',
            'warehouse_location_id' => 17,
            'destination_location_id' => 17,
            'shipping_mode' => '\'express\',\'standard\',',
            'expected_delivery_time' => 'consequatur',
            'origin_country' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Order updated successfully.",
      }
  }
 

Request      

PUT api/orders/{id}

PATCH api/orders/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the order. Example: consequatur

order_id   integer     

Example: 17

Body Parameters

receiver_name   string  optional    

Example: consequatur

receiver_phone   string  optional    

Example: consequatur

receiver_email   string  optional    

Example: qkunze@example.com

receiver_address   string  optional    

Example: consequatur

warehouse_location_id   integer  optional    

Example: 17

destination_location_id   integer  optional    

Example: 17

shipping_mode   string  optional    

Example: 'express','standard',

expected_delivery_time   date  optional    

Example: consequatur

origin_country   string  optional    

Example: consequatur

Delete Shipment

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/orders/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/orders/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/orders/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Shipment deleted successfully.",
      }
  }
 

Request      

DELETE api/orders/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 17

order_id   integer     

Example: 17

Get Shipments By Tracking Number

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/orders/tracking/consequatur" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/orders/tracking/consequatur"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/orders/tracking/consequatur';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "status": "success",
    "data": {
        "id": 5,
        "created_at": "2025-12-05T12:20:11.000000Z",
        "updated_at": "2025-12-05T12:20:11.000000Z",
        "deleted_at": null,
        "tracking_number": "ORD-20251205-00002",
        "user_id": 1,
        "origin_country": "ITALY",
        "receiver_name": "Tom Mboya",
        "receiver_phone": "0789887766",
        "receiver_email": "tom.mboya@gmail.com",
        "receiver_address": "Uganda - Kampala",
        "status": "PENDING",
        "received_at": null,
        "dispatched_at": null,
        "arrived_at": null,
        "released_at": null,
        "delivered_at": null,
        "status_history": [],
        "user": {},
        "packages": []
    }
}
 

Example response (404):


{
    "message": "No query results for model [App\\Models\\Order]."
}
 

Request      

GET api/orders/tracking/{tracking_number}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tracking_number   string     

The tracking number of the order. Example: consequatur

Package

Add Package to shipment

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/packages" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"order_id\": 17,
    \"contents\": \"consequatur\",
    \"declared_value\": 11613.31890586,
    \"weight\": 11613.31890586,
    \"length\": 11613.31890586,
    \"width\": 11613.31890586,
    \"height\": 11613.31890586,
    \"warehouse_rack_id\": \"Any string\",
    \"transport_insured\": false,
    \"tracking_number\": \"consequatur\",
    \"isPercel\": false,
    \"repackaged\": false
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/packages"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "order_id": 17,
    "contents": "consequatur",
    "declared_value": 11613.31890586,
    "weight": 11613.31890586,
    "length": 11613.31890586,
    "width": 11613.31890586,
    "height": 11613.31890586,
    "warehouse_rack_id": "Any string",
    "transport_insured": false,
    "tracking_number": "consequatur",
    "isPercel": false,
    "repackaged": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/packages';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'order_id' => 17,
            'contents' => 'consequatur',
            'declared_value' => 11613.31890586,
            'weight' => 11613.31890586,
            'length' => 11613.31890586,
            'width' => 11613.31890586,
            'height' => 11613.31890586,
            'warehouse_rack_id' => 'Any string',
            'transport_insured' => false,
            'tracking_number' => 'consequatur',
            'isPercel' => false,
            'repackaged' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/packages

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

order_id   integer     

Example: 17

contents   string     

Example: consequatur

declared_value   number  optional    

Example: 11613.31890586

weight   number     

Example: 11613.31890586

length   number     

Example: 11613.31890586

width   number     

Example: 11613.31890586

height   number     

Example: 11613.31890586

warehouse_rack_id   string  optional    

Request parameter: warehouse_rack_id. The id of an existing record in the warehouse_racks table. Example: Any string

transport_insured   boolean  optional    

optional E.g true, false Example: false

tracking_number   string  optional    

Example: consequatur

isPercel   boolean  optional    

optional bodyParam warehouse_rack_id integeer Example: false

repackaged   boolean     

Example: false

Update shipment Package

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/packages/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"order_id\": \"Any string\",
    \"contents\": \"consequatur\",
    \"declared_value\": 11613.31890586,
    \"weight\": 11613.31890586,
    \"length\": 11613.31890586,
    \"width\": 11613.31890586,
    \"height\": 11613.31890586,
    \"transport_mode\": \"Any string\",
    \"transport_insured\": false,
    \"warehouse_rack_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/packages/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "order_id": "Any string",
    "contents": "consequatur",
    "declared_value": 11613.31890586,
    "weight": 11613.31890586,
    "length": 11613.31890586,
    "width": 11613.31890586,
    "height": 11613.31890586,
    "transport_mode": "Any string",
    "transport_insured": false,
    "warehouse_rack_id": 17
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/packages/consequatur';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'order_id' => 'Any string',
            'contents' => 'consequatur',
            'declared_value' => 11613.31890586,
            'weight' => 11613.31890586,
            'length' => 11613.31890586,
            'width' => 11613.31890586,
            'height' => 11613.31890586,
            'transport_mode' => 'Any string',
            'transport_insured' => false,
            'warehouse_rack_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/packages/{id}

PATCH api/packages/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the package. Example: consequatur

package_id   integer     

Example: 17

Body Parameters

order_id   string  optional    

Request parameter: order_id. The id of an existing record in the orders table. Example: Any string

contents   string     

Example: consequatur

declared_value   number  optional    

Example: 11613.31890586

weight   number     

Example: 11613.31890586

length   number     

Example: 11613.31890586

width   number     

Example: 11613.31890586

height   number     

Example: 11613.31890586

transport_mode   string  optional    

Request parameter: transport_mode. Example: Any string

transport_insured   boolean  optional    

Request parameter: transport_insured. Example: false

warehouse_rack_id   integer  optional    

Example: 17

Delete Package

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/packages/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/packages/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/packages/consequatur';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Package deleted successfully.",
      }
  }
 

Request      

DELETE api/packages/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the package. Example: consequatur

package_id   integer     

Example: 17

Add Package images

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/packages/consequatur/package-photos" \
    --header "Bearer: Token" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "photos[]=@/tmp/phpjn9Emd" \
    --form "photos[]=@/tmp/php5MuUxS" 
const url = new URL(
    "https://www.constell.agent.co.ug/api/packages/consequatur/package-photos"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('photos[]', document.querySelector('input[name="photos[]"]').files[0]);
body.append('photos[]', document.querySelector('input[name="photos[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/packages/consequatur/package-photos';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'photos[]',
                'contents' => fopen('/tmp/phpjn9Emd', 'r')
            ],
            [
                'name' => 'photos[]',
                'contents' => fopen('/tmp/php5MuUxS', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Package photos uploaded successfully",
    "data": {
        "id": 1,
        "created_at": "2025-12-08T07:19:43.000000Z",
        "updated_at": "2025-12-08T07:39:24.000000Z",
        "deleted_at": null,
        "order_id": 5,
        "hwb_number": "HWB-20260219-0002",
        "contents": "Computer - Desktop",
        "declared_value": "2500000.00",
        "weight": "5.00",
        "length": "4.00",
        "width": "6.00",
        "height": "2.00",
        "is_fragile": true,
        "is_hazardous": false,
        "is_damaged": false,
        "package_photos": [
            "package_photos/ngtZoTVR3mPb8G8otpFTeKnD78maftxCL7UXRcuD.jpg",
            "package_photos/LXHHmhE4YM0YoTn1Lva95FSyQi31i89dskkPv2il.jpg",
            "package_photos/thtdPXJtqtkpECHhbeyXIOAIMSGt564ZFIXBqdcp.jpg",
            "package_photos/Uc34hnpyAPsAT1QINJfca0msaFdudcYfaY2Qs21h.jpg"
        ],
        "location_id": 1,
        "received_at": "2025-12-03T00:00:00.000000Z"
    }
}
 

Request      

POST api/packages/{id}/package-photos

Headers

Bearer        

Example: Token

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the package. Example: consequatur

packageId   integer     

Example: 17

Body Parameters

photos   file[]  optional    

Must be an image.

photos[]   file     

Example: /tmp/php5MuUxS

Delete a Package image

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/packages/consequatur/package-photos" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"photo\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/packages/consequatur/package-photos"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "photo": "consequatur"
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/packages/consequatur/package-photos';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'photo' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Package photo deleted successfully",
    "data": {
        "id": 1,
        "created_at": "2025-12-08T07:19:43.000000Z",
        "updated_at": "2025-12-08T07:39:24.000000Z",
        "deleted_at": null,
        "order_id": 5,
        "hwb_number": "HWB-20260219-0002",
        "contents": "Computer - Desktop",
        "declared_value": "2500000.00",
        "weight": "5.00",
        "length": "4.00",
        "width": "6.00",
        "height": "2.00",
        "is_fragile": true,
        "is_hazardous": false,
        "is_damaged": false,
        "package_photos": [
            "package_photos/LXHHmhE4YM0YoTn1Lva95FSyQi31i89dskkPv2il.jpg",
            "package_photos/thtdPXJtqtkpECHhbeyXIOAIMSGt564ZFIXBqdcp.jpg",
            "package_photos/Uc34hnpyAPsAT1QINJfca0msaFdudcYfaY2Qs21h.jpg"
        ],
        "location_id": 1,
        "received_at": "2025-12-03T00:00:00.000000Z"
    }
}
 

Request      

DELETE api/packages/{id}/package-photos

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the package. Example: consequatur

packageId   integer     

Example: 17

Body Parameters

photo   string     

e.g package_photos/ngtZoTVR3mPb8G8otpFTeKnD78maftxCL7UXRcuD.jpg Example: consequatur

Update a Package status

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/refresh_package_status" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"barcode\": \"consequatur\",
    \"status\": \"consequatur\",
    \"notes\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/refresh_package_status"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "barcode": "consequatur",
    "status": "consequatur",
    "notes": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/refresh_package_status';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'barcode' => 'consequatur',
            'status' => 'consequatur',
            'notes' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/refresh_package_status

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

barcode   string     

Read this from a barcode reader Example: consequatur

status   string     

E.g held,approved' Example: consequatur

notes   string     

Example: consequatur

Two-step release verification - Step 1: Payment Verification.

requires authentication

A supervisor (or billing officer/admin) confirms the order's invoices are settled before Step 2 (PIN) can happen. Business rule: partial release on partial payment is prohibited, so this checks the whole order's balance, not just this package. Always returns the order's invoice/balance summary - whether this succeeds or fails - so the caller can show the person scanning what they're actually looking at.

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/verify-payment" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"barcode\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/verify-payment"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "barcode": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/verify-payment';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'barcode' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/verify-payment

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

barcode   string     

Read this from a barcode reader Example: consequatur

Two-step release verification - Step 2: Supervisor Approval.

requires authentication

Requires Step 1 (verifyPayment) to already be complete, and a correct PIN belonging to the authenticated supervisor. This is the only path that can set a package to 'released' - refreshPackage() no longer accepts it.

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/approve-release" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"barcode\": \"consequatur\",
    \"pin\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/approve-release"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "barcode": "consequatur",
    "pin": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/approve-release';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'barcode' => 'consequatur',
            'pin' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/approve-release

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

barcode   string     

Read this from a barcode reader Example: consequatur

pin   string     

The supervisor's personal release PIN Example: consequatur

Set or change a supervisor's personal release PIN (Step 2 of two-step release verification). An admin/super_admin can set any supervisor's PIN; a supervisor can only set their own.

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/release-pin" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 17,
    \"pin\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/release-pin"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 17,
    "pin": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/release-pin';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'user_id' => 17,
            'pin' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/release-pin

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The supervisor whose PIN is being set Example: 17

pin   string     

4+ digit PIN Example: consequatur

Consolidation Batch

Consolidation Batches

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/consolidation-batches" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/consolidation-batches"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/consolidation-batches';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


[
    {
        "id": 1,
        "created_at": "2025-12-08T08:21:32.000000Z",
        "updated_at": "2025-12-08T08:40:10.000000Z",
        "deleted_at": null,
        "mawb_number": "CONS-20260219-0001",
        "transport_mode": "AIR",
        "container_flight_number": "AB001",
        "departure_date": "2025-12-10T00:00:00.000000Z",
        "status": "FINALIZED",
        "package_count": 0,
        "total_weight": "0.00",
        "created_by": 1,
        "finalized_at": "2025-12-09T00:00:00.000000Z",
        "departed_at": "2025-12-10T00:00:00.000000Z",
        "arrived_at": "2025-12-10T00:00:00.000000Z",
        "packages": [
            {
                "id": 1,
                "created_at": "2025-12-08T07:19:43.000000Z",
                "updated_at": "2025-12-08T07:42:06.000000Z",
                "deleted_at": null,
                "order_id": 5,
                "hwb_number": "HWB-20260219-0002",
                "contents": "Computer - Desktop",
                "declared_value": "2500000.00",
                "weight": "5.00",
                "length": "4.00",
                "width": "6.00",
                "height": "2.00",
                "is_fragile": true,
                "is_hazardous": false,
                "is_damaged": false,
                "package_photos": [
                    "package_photos/LXHHmhE4YM0YoTn1Lva95FSyQi31i89dskkPv2il.jpg",
                    "package_photos/thtdPXJtqtkpECHhbeyXIOAIMSGt564ZFIXBqdcp.jpg",
                    "package_photos/Uc34hnpyAPsAT1QINJfca0msaFdudcYfaY2Qs21h.jpg"
                ],
                "location_id": 1,
                "received_at": "2025-12-03T00:00:00.000000Z",
                "pivot": {
                    "batch_id": 1,
                    "package_id": 1,
                    "created_at": "2025-12-08T08:57:19.000000Z",
                    "updated_at": "2025-12-08T08:57:19.000000Z"
                },
                "order": {
                    "id": 5,
                    "created_at": "2025-12-05T12:20:11.000000Z",
                    "updated_at": "2025-12-05T12:20:11.000000Z",
                    "deleted_at": null,
                    "tracking_number": "ORD-20251205-00002",
                    "user_id": 1,
                    "origin_country": "ITALY",
                    "receiver_name": "Tom Mboya",
                    "receiver_phone": "0789887766",
                    "receiver_email": "tom.mboya@gmail.com",
                    "receiver_address": "Uganda - Kampala",
                    "status": "PENDING",
                    "received_at": null,
                    "dispatched_at": null,
                    "arrived_at": null,
                    "released_at": null,
                    "delivered_at": null,
                    "user": {
                        "id": 1,
                        "full_name": "Thembo Charles",
                        "email": "ashley7520charles@gmail.com",
                        "phone": "0787444081",
                        "email_verified_at": null,
                        "tin": "110023452",
                        "passport": "65748",
                        "address": "Kampala",
                        "otp": "4782",
                        "status": "active",
                        "user_type": "user",
                        "created_at": "2025-12-05T06:42:09.000000Z",
                        "updated_at": "2025-12-05T07:58:28.000000Z",
                        "deleted_at": null
                    }
                }
            }
        ]
    }
]
 

Request      

GET api/consolidation-batches

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a Consolidation Batch

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/consolidation-batches" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"transport_mode\": \"consequatur\",
    \"container_flight_number\": \"consequatur\",
    \"departure_date\": \"consequatur\",
    \"status\": \"Any string\",
    \"destination_warehouse_id\": 17,
    \"warehouse_location_id\": 17,
    \"mawb_number\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/consolidation-batches"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "transport_mode": "consequatur",
    "container_flight_number": "consequatur",
    "departure_date": "consequatur",
    "status": "Any string",
    "destination_warehouse_id": 17,
    "warehouse_location_id": 17,
    "mawb_number": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/consolidation-batches';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'transport_mode' => 'consequatur',
            'container_flight_number' => 'consequatur',
            'departure_date' => 'consequatur',
            'status' => 'Any string',
            'destination_warehouse_id' => 17,
            'warehouse_location_id' => 17,
            'mawb_number' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/consolidation-batches

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

transport_mode   string     

e.g 'AIR', 'SEA', 'ROAD', 'TRAIN' Example: consequatur

container_flight_number   string     

Example: consequatur

departure_date   date     

Example: consequatur

status   string  optional    

Request parameter: status. Example: Any string

Must be one of:
  • OPEN
  • FINALIZED
  • DEPARTED
  • ARRIVED
destination_warehouse_id   integer     

Example: 17

warehouse_location_id   integer     

Example: 17

mawb_number   string  optional    

nullable Example: consequatur

Consolidation Batch

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/consolidation-batches/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/consolidation-batches/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/consolidation-batches/consequatur';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


[
    {
        "id": 1,
        "created_at": "2025-12-08T08:21:32.000000Z",
        "updated_at": "2025-12-08T08:40:10.000000Z",
        "deleted_at": null,
        "mawb_number": "CONS-20260219-0001",
        "transport_mode": "AIR",
        "container_flight_number": "AB001",
        "departure_date": "2025-12-10T00:00:00.000000Z",
        "status": "FINALIZED",
        "package_count": 0,
        "total_weight": "0.00",
        "created_by": 1,
        "finalized_at": "2025-12-09T00:00:00.000000Z",
        "departed_at": "2025-12-10T00:00:00.000000Z",
        "arrived_at": "2025-12-10T00:00:00.000000Z",
        "packages": [
            {
                "id": 1,
                "created_at": "2025-12-08T07:19:43.000000Z",
                "updated_at": "2025-12-08T07:42:06.000000Z",
                "deleted_at": null,
                "order_id": 5,
                "hwb_number": "HWB-20260219-0002",
                "contents": "Computer - Desktop",
                "declared_value": "2500000.00",
                "weight": "5.00",
                "length": "4.00",
                "width": "6.00",
                "height": "2.00",
                "is_fragile": true,
                "is_hazardous": false,
                "is_damaged": false,
                "package_photos": [
                    "package_photos/LXHHmhE4YM0YoTn1Lva95FSyQi31i89dskkPv2il.jpg",
                    "package_photos/thtdPXJtqtkpECHhbeyXIOAIMSGt564ZFIXBqdcp.jpg",
                    "package_photos/Uc34hnpyAPsAT1QINJfca0msaFdudcYfaY2Qs21h.jpg"
                ],
                "location_id": 1,
                "received_at": "2025-12-03T00:00:00.000000Z",
                "pivot": {
                    "batch_id": 1,
                    "package_id": 1,
                    "created_at": "2025-12-08T08:57:19.000000Z",
                    "updated_at": "2025-12-08T08:57:19.000000Z"
                },
                "order": {
                    "id": 5,
                    "created_at": "2025-12-05T12:20:11.000000Z",
                    "updated_at": "2025-12-05T12:20:11.000000Z",
                    "deleted_at": null,
                    "tracking_number": "ORD-20251205-00002",
                    "user_id": 1,
                    "origin_country": "ITALY",
                    "receiver_name": "Tom Mboya",
                    "receiver_phone": "0789887766",
                    "receiver_email": "tom.mboya@gmail.com",
                    "receiver_address": "Uganda - Kampala",
                    "status": "PENDING",
                    "received_at": null,
                    "dispatched_at": null,
                    "arrived_at": null,
                    "released_at": null,
                    "delivered_at": null,
                    "user": {
                        "id": 1,
                        "full_name": "Thembo Charles",
                        "email": "ashley7520charles@gmail.com",
                        "phone": "0787444081",
                        "email_verified_at": null,
                        "tin": "110023452",
                        "passport": "65748",
                        "address": "Kampala",
                        "otp": "4782",
                        "status": "active",
                        "user_type": "user",
                        "created_at": "2025-12-05T06:42:09.000000Z",
                        "updated_at": "2025-12-05T07:58:28.000000Z",
                        "deleted_at": null
                    }
                }
            }
        ]
    }
]
 

Request      

GET api/consolidation-batches/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the consolidation batch. Example: consequatur

Update a Consolidation Batch

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/consolidation-batches/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"transport_mode\": \"consequatur\",
    \"container_flight_number\": \"consequatur\",
    \"departure_date\": \"consequatur\",
    \"status\": \"consequatur\",
    \"destination_warehouse_id\": 17,
    \"warehouse_location_id\": 17,
    \"mawb_number\": \"Any string\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/consolidation-batches/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "transport_mode": "consequatur",
    "container_flight_number": "consequatur",
    "departure_date": "consequatur",
    "status": "consequatur",
    "destination_warehouse_id": 17,
    "warehouse_location_id": 17,
    "mawb_number": "Any string"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/consolidation-batches/consequatur';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'transport_mode' => 'consequatur',
            'container_flight_number' => 'consequatur',
            'departure_date' => 'consequatur',
            'status' => 'consequatur',
            'destination_warehouse_id' => 17,
            'warehouse_location_id' => 17,
            'mawb_number' => 'Any string',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/consolidation-batches/{id}

PATCH api/consolidation-batches/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the consolidation batch. Example: consequatur

consolidationBatche_id   integer     

Example: 17

Body Parameters

transport_mode   string     

e.g 'AIR', 'SEA', 'ROAD', 'TRAIN' Example: consequatur

container_flight_number   string     

Example: consequatur

departure_date   date     

Example: consequatur

status   string  optional    

e.g OPEN,FINALIZED,DEPARTED,ARRIVED Example: consequatur

destination_warehouse_id   integer  optional    

string Example: 17

warehouse_location_id   integer     

Example: 17

mawb_number   string  optional    

Request parameter: mawb_number. Example: Any string

Delete Consolidation Batch

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/consolidation-batches/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/consolidation-batches/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/consolidation-batches/consequatur';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Consolidation batch deleted successfully.",
      }
  }
 

Request      

DELETE api/consolidation-batches/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the consolidation batch. Example: consequatur

consolidationBatche_id   integer     

Example: 17

Receive Consolidation at destination

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/receive-consolidation" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"consolidation_id\": 17,
    \"barcode\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/receive-consolidation"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "consolidation_id": 17,
    "barcode": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/receive-consolidation';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'consolidation_id' => 17,
            'barcode' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Consolidation batch deleted successfully.",
      }
  }
 

Request      

POST api/receive-consolidation

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

consolidation_id   integer     

Example: 17

barcode   string  optional    

This is the Package Bar code, Scan then all untill they are done. Example: consequatur

Search Consolidation at destination

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/search-consolidation" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"consolidation_code\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/search-consolidation"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "consolidation_code": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/search-consolidation';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'consolidation_code' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/search-consolidation

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

consolidation_code   string     

This is the Consolidation Barcode, Scan it. Example: consequatur

Consolidation Batch

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/consolidation-batches/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/consolidation-batches/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/consolidation-batches/consequatur';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


[
    {
        "id": 1,
        "created_at": "2025-12-08T08:21:32.000000Z",
        "updated_at": "2025-12-08T08:40:10.000000Z",
        "deleted_at": null,
        "mawb_number": "CONS-20260219-0001",
        "transport_mode": "AIR",
        "container_flight_number": "AB001",
        "departure_date": "2025-12-10T00:00:00.000000Z",
        "status": "FINALIZED",
        "package_count": 0,
        "total_weight": "0.00",
        "created_by": 1,
        "finalized_at": "2025-12-09T00:00:00.000000Z",
        "departed_at": "2025-12-10T00:00:00.000000Z",
        "arrived_at": "2025-12-10T00:00:00.000000Z",
        "packages": [
            {
                "id": 1,
                "created_at": "2025-12-08T07:19:43.000000Z",
                "updated_at": "2025-12-08T07:42:06.000000Z",
                "deleted_at": null,
                "order_id": 5,
                "hwb_number": "HWB-20260219-0002",
                "contents": "Computer - Desktop",
                "declared_value": "2500000.00",
                "weight": "5.00",
                "length": "4.00",
                "width": "6.00",
                "height": "2.00",
                "is_fragile": true,
                "is_hazardous": false,
                "is_damaged": false,
                "package_photos": [
                    "package_photos/LXHHmhE4YM0YoTn1Lva95FSyQi31i89dskkPv2il.jpg",
                    "package_photos/thtdPXJtqtkpECHhbeyXIOAIMSGt564ZFIXBqdcp.jpg",
                    "package_photos/Uc34hnpyAPsAT1QINJfca0msaFdudcYfaY2Qs21h.jpg"
                ],
                "location_id": 1,
                "received_at": "2025-12-03T00:00:00.000000Z",
                "pivot": {
                    "batch_id": 1,
                    "package_id": 1,
                    "created_at": "2025-12-08T08:57:19.000000Z",
                    "updated_at": "2025-12-08T08:57:19.000000Z"
                },
                "order": {
                    "id": 5,
                    "created_at": "2025-12-05T12:20:11.000000Z",
                    "updated_at": "2025-12-05T12:20:11.000000Z",
                    "deleted_at": null,
                    "tracking_number": "ORD-20251205-00002",
                    "user_id": 1,
                    "origin_country": "ITALY",
                    "receiver_name": "Tom Mboya",
                    "receiver_phone": "0789887766",
                    "receiver_email": "tom.mboya@gmail.com",
                    "receiver_address": "Uganda - Kampala",
                    "status": "PENDING",
                    "received_at": null,
                    "dispatched_at": null,
                    "arrived_at": null,
                    "released_at": null,
                    "delivered_at": null,
                    "user": {
                        "id": 1,
                        "full_name": "Thembo Charles",
                        "email": "ashley7520charles@gmail.com",
                        "phone": "0787444081",
                        "email_verified_at": null,
                        "tin": "110023452",
                        "passport": "65748",
                        "address": "Kampala",
                        "otp": "4782",
                        "status": "active",
                        "user_type": "user",
                        "created_at": "2025-12-05T06:42:09.000000Z",
                        "updated_at": "2025-12-05T07:58:28.000000Z",
                        "deleted_at": null
                    }
                }
            }
        ]
    }
]
 

Request      

GET api/consolidation-batches/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the consolidation batch. Example: consequatur

Read consolidation by barCode

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/consolidation_by_barcode" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"consolidation_code\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/consolidation_by_barcode"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "consolidation_code": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/consolidation_by_barcode';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'consolidation_code' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/consolidation_by_barcode

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

consolidation_code   string  optional    

Example: consequatur

Close out deconsolidation for a batch: any manifested package that never scanned in as arrived_destination is flagged as a "missing" discrepancy for investigation. The batch is marked ARRIVED regardless - this flags problems rather than blocking on them.

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/consolidation-batches/17/close-deconsolidation" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/consolidation-batches/17/close-deconsolidation"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/consolidation-batches/17/close-deconsolidation';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/consolidation-batches/{id}/close-deconsolidation

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Example: 17

List discrepancies for a consolidation batch.

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/consolidation-batches/17/discrepancies" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/consolidation-batches/17/discrepancies"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/consolidation-batches/17/discrepancies';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/consolidation-batches/17/discrepancies could not be found."
}
 

Request      

GET api/consolidation-batches/{id}/discrepancies

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Example: 17

Mark a discrepancy resolved.

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/consolidation-discrepancies/17/resolve" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"notes\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/consolidation-discrepancies/17/resolve"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "notes": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/consolidation-discrepancies/17/resolve';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'notes' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/consolidation-discrepancies/{id}/resolve

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Example: 17

Body Parameters

notes   string  optional    

Example: consequatur

Batch Package

Add Package to Batch/Consolidation

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/batch-packages" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"barcode\": 17,
    \"batch_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/batch-packages"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "barcode": 17,
    "batch_id": 17
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/batch-packages';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'barcode' => 17,
            'batch_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/batch-packages

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

barcode   integer     

The bar code of the package Example: 17

batch_id   integer     

Example: 17

Delete Consolidation Batch

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/batch-packages" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"batch_id\": 17,
    \"package_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/batch-packages"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "batch_id": 17,
    "package_id": 17
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/batch-packages';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'batch_id' => 17,
            'package_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Package removed from batch.",
      }
  }
 

Request      

DELETE api/batch-packages

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

batch_id   integer     

Example: 17

package_id   integer     

Example: 17

Invoice

Invoices

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/billing/invoices" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoices"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoices';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Invoices fetched successfully",
    "data": {
        "current_page": 1,
        "data": [
            {
                "id": 2,
                "created_at": "2025-12-08T10:31:55.000000Z",
                "updated_at": "2025-12-08T10:42:55.000000Z",
                "deleted_at": null,
                "invoice_number": "INV-20251208-00002",
                "user_id": 1,
                "order_id": 5,
                "type": "FREIGHT",
                "status": "PAID",
                "due_date": "2005-12-09T00:00:00.000000Z",
                "order": {
                    "id": 5,
                    "created_at": "2025-12-05T12:20:11.000000Z",
                    "updated_at": "2025-12-05T12:20:11.000000Z",
                    "deleted_at": null,
                    "tracking_number": "ORD-20251205-00002",
                    "user_id": 1,
                    "origin_country": "ITALY",
                    "receiver_name": "Tom Mboya",
                    "receiver_phone": "0789887766",
                    "receiver_email": "tom.mboya@gmail.com",
                    "receiver_address": "Uganda - Kampala",
                    "status": "PENDING",
                    "received_at": null,
                    "dispatched_at": null,
                    "arrived_at": null,
                    "released_at": null,
                    "delivered_at": null,
                    "user": {
                        "id": 1,
                        "full_name": "Thembo Charles",
                        "email": "ashley7520charles@gmail.com",
                        "phone": "0787444081",
                        "email_verified_at": null,
                        "tin": "110023452",
                        "passport": "65748",
                        "address": "Kampala",
                        "otp": "4782",
                        "status": "active",
                        "user_type": "user",
                        "created_at": "2025-12-05T06:42:09.000000Z",
                        "updated_at": "2025-12-05T07:58:28.000000Z",
                        "deleted_at": null
                    }
                },
                "line_items": [],
                "payments": []
            },
            {
                "id": 1,
                "created_at": "2025-12-08T10:31:08.000000Z",
                "updated_at": "2025-12-08T10:31:08.000000Z",
                "deleted_at": null,
                "invoice_number": "ORD-20251208-00001",
                "user_id": 1,
                "order_id": 5,
                "type": "FREIGHT",
                "status": "UNPAID",
                "due_date": "2005-12-09T00:00:00.000000Z",
                "order": {
                    "id": 5,
                    "created_at": "2025-12-05T12:20:11.000000Z",
                    "updated_at": "2025-12-05T12:20:11.000000Z",
                    "deleted_at": null,
                    "tracking_number": "ORD-20251205-00002",
                    "user_id": 1,
                    "origin_country": "ITALY",
                    "receiver_name": "Tom Mboya",
                    "receiver_phone": "0789887766",
                    "receiver_email": "tom.mboya@gmail.com",
                    "receiver_address": "Uganda - Kampala",
                    "status": "PENDING",
                    "received_at": null,
                    "dispatched_at": null,
                    "arrived_at": null,
                    "released_at": null,
                    "delivered_at": null,
                    "user": {
                        "id": 1,
                        "full_name": "Thembo Charles",
                        "email": "ashley7520charles@gmail.com",
                        "phone": "0787444081",
                        "email_verified_at": null,
                        "tin": "110023452",
                        "passport": "65748",
                        "address": "Kampala",
                        "otp": "4782",
                        "status": "active",
                        "user_type": "user",
                        "created_at": "2025-12-05T06:42:09.000000Z",
                        "updated_at": "2025-12-05T07:58:28.000000Z",
                        "deleted_at": null
                    }
                },
                "line_items": [],
                "payments": []
            }
        ],
        "first_page_url": "http://127.0.0.1:8000/api/billing/invoices?page=1",
        "from": 1,
        "last_page": 1,
        "last_page_url": "http://127.0.0.1:8000/api/billing/invoices?page=1",
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "http://127.0.0.1:8000/api/billing/invoices?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "next_page_url": null,
        "path": "http://127.0.0.1:8000/api/billing/invoices",
        "per_page": 20,
        "prev_page_url": null,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/billing/invoices

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Make an Invoice

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/billing/invoices" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"order_id\": \"consequatur\",
    \"type\": \"FREIGHT,STORAGE,CUSTOMS,OTHER,SHOPPING\",
    \"0\": \"Any string\",
    \"due_date\": \"consequatur\",
    \"currency\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoices"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "order_id": "consequatur",
    "type": "FREIGHT,STORAGE,CUSTOMS,OTHER,SHOPPING",
    "0": "Any string",
    "due_date": "consequatur",
    "currency": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoices';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'order_id' => 'consequatur',
            'type' => 'FREIGHT,STORAGE,CUSTOMS,OTHER,SHOPPING',
            'Any string',
            'due_date' => 'consequatur',
            'currency' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Invoice created successfully",
    "data": {
        "order_id": "5",
        "type": "FREIGHT",
        "due_date": "2005-12-09T00:00:00.000000Z",
        "user_id": 1,
        "invoice_number": "INV-20251208-00002",
        "updated_at": "2025-12-08T10:31:55.000000Z",
        "created_at": "2025-12-08T10:31:55.000000Z",
        "id": 2,
        "order": {
            "id": 5,
            "created_at": "2025-12-05T12:20:11.000000Z",
            "updated_at": "2025-12-05T12:20:11.000000Z",
            "deleted_at": null,
            "tracking_number": "ORD-20251205-00002",
            "user_id": 1,
            "origin_country": "ITALY",
            "receiver_name": "Tom Mboya",
            "receiver_phone": "0789887766",
            "receiver_email": "tom.mboya@gmail.com",
            "receiver_address": "Uganda - Kampala",
            "status": "PENDING",
            "received_at": null,
            "dispatched_at": null,
            "arrived_at": null,
            "released_at": null,
            "delivered_at": null
        }
    }
}
 

Request      

POST api/billing/invoices

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

order_id   string     

Example: consequatur

type   string     

Example: FREIGHT,STORAGE,CUSTOMS,OTHER,SHOPPING

0   string  optional    

Request parameter: 0. Example: Any string

due_date   date     

Example: consequatur

currency   string  optional    

optional Example: consequatur

Single Invoice Details

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/billing/invoices/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"invoice_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoices/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "invoice_id": 17
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoices/consequatur';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'invoice_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/billing/invoices/consequatur could not be found."
}
 

Request      

GET api/billing/invoices/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the invoice. Example: consequatur

Body Parameters

invoice_id   integer     

Example: 17

Update an Invoice

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/billing/invoices/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"FREIGHT,STORAGE,CUSTOMS,OTHER,SHOPPING\",
    \"status\": \"UNPAID,PAID,OVERDUE,CANCELLED\",
    \"due_date\": \"consequatur\",
    \"currency\": \"consequatur\",
    \"package_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoices/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "FREIGHT,STORAGE,CUSTOMS,OTHER,SHOPPING",
    "status": "UNPAID,PAID,OVERDUE,CANCELLED",
    "due_date": "consequatur",
    "currency": "consequatur",
    "package_id": 17
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoices/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'FREIGHT,STORAGE,CUSTOMS,OTHER,SHOPPING',
            'status' => 'UNPAID,PAID,OVERDUE,CANCELLED',
            'due_date' => 'consequatur',
            'currency' => 'consequatur',
            'package_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Invoice Updated successfully",
    "data": {
        "order_id": "5",
        "type": "FREIGHT",
        "due_date": "2005-12-09T00:00:00.000000Z",
        "user_id": 1,
        "invoice_number": "INV-20251208-00002",
        "updated_at": "2025-12-08T10:31:55.000000Z",
        "created_at": "2025-12-08T10:31:55.000000Z",
        "id": 2,
        "order": {
            "id": 5,
            "created_at": "2025-12-05T12:20:11.000000Z",
            "updated_at": "2025-12-05T12:20:11.000000Z",
            "deleted_at": null,
            "tracking_number": "ORD-20251205-00002",
            "user_id": 1,
            "origin_country": "ITALY",
            "receiver_name": "Tom Mboya",
            "receiver_phone": "0789887766",
            "receiver_email": "tom.mboya@gmail.com",
            "receiver_address": "Uganda - Kampala",
            "status": "PENDING",
            "received_at": null,
            "dispatched_at": null,
            "arrived_at": null,
            "released_at": null,
            "delivered_at": null
        }
    }
}
 

Request      

PUT api/billing/invoices/{id}

PATCH api/billing/invoices/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the invoice. Example: 17

Body Parameters

type   string     

Example: FREIGHT,STORAGE,CUSTOMS,OTHER,SHOPPING

status   string  optional    

Example: UNPAID,PAID,OVERDUE,CANCELLED

due_date   date     

Example: consequatur

currency   string  optional    

Example: consequatur

package_id   integer  optional    

Example: 17

Delete Invoice

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/billing/invoices/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoices/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoices/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Invoice deleted successfully",
      }
  }
 

Request      

DELETE api/billing/invoices/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the invoice. Example: 17

invoice_id   integer     

Example: 17

Restore Invoice

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/billing/invoices/17/restore" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoices/17/restore"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoices/17/restore';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Invoice restored successfully",
      }
  }
 

Request      

POST api/billing/invoices/{id}/restore

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the invoice. Example: 17

invoice_id   integer     

Example: 17

Add Item to Invoice

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/billing/invoice-line-items" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"invoice_id\": \"consequatur\",
    \"package_id\": 17,
    \"description\": \"Dolores dolorum amet iste laborum eius est dolor.\",
    \"quantity\": 17,
    \"unit_price\": 11613.31890586
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoice-line-items"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "invoice_id": "consequatur",
    "package_id": 17,
    "description": "Dolores dolorum amet iste laborum eius est dolor.",
    "quantity": 17,
    "unit_price": 11613.31890586
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoice-line-items';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'invoice_id' => 'consequatur',
            'package_id' => 17,
            'description' => 'Dolores dolorum amet iste laborum eius est dolor.',
            'quantity' => 17,
            'unit_price' => 11613.31890586,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Invoice line item created successfully",
    "data": {
        "invoice_id": "1",
        "description": "Cargo A",
        "quantity": "1",
        "unit_price": "30000",
        "updated_at": "2025-12-08T13:30:52.000000Z",
        "created_at": "2025-12-08T13:30:52.000000Z",
        "id": 1
    }
}
 

Request      

POST api/billing/invoice-line-items

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

invoice_id   string     

Example: consequatur

package_id   integer  optional    

optional Example: 17

description   string     

E.g freight, insurance, storage, repackaging Example: Dolores dolorum amet iste laborum eius est dolor.

quantity   integer     

Example: 17

unit_price   number     

Example: 11613.31890586

Edit Invoice Item

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/billing/invoice-line-items/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"description\": \"Dolores dolorum amet iste laborum eius est dolor.\",
    \"quantity\": 17,
    \"unit_price\": 11613.31890586,
    \"invoice_id\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoice-line-items/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "description": "Dolores dolorum amet iste laborum eius est dolor.",
    "quantity": 17,
    "unit_price": 11613.31890586,
    "invoice_id": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoice-line-items/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'description' => 'Dolores dolorum amet iste laborum eius est dolor.',
            'quantity' => 17,
            'unit_price' => 11613.31890586,
            'invoice_id' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Invoice line item updated successfully",
    "data": {
        "id": 2,
        "created_at": "2025-12-08T13:32:09.000000Z",
        "updated_at": "2025-12-08T13:32:09.000000Z",
        "deleted_at": null,
        "invoice_id": 1,
        "description": "Cargo A",
        "quantity": 1,
        "unit_price": 30000
    }
}
 

Request      

PUT api/billing/invoice-line-items/{id}

PATCH api/billing/invoice-line-items/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the invoice line item. Example: 17

Body Parameters

description   string     

Example: Dolores dolorum amet iste laborum eius est dolor.

quantity   integer     

Example: 17

unit_price   number     

Example: 11613.31890586

invoice_id   string     

Example: consequatur

Delete Invoice Item

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/billing/invoice-line-items/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoice-line-items/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoice-line-items/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Invoice line item deleted successfully"
}
 

Request      

DELETE api/billing/invoice-line-items/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the invoice line item. Example: 17

Restore Invoice Item

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/billing/invoice-line-items/17/restore" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoice-line-items/17/restore"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoice-line-items/17/restore';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Invoice line item deleted successfully"
}
 

Request      

POST api/billing/invoice-line-items/{id}/restore

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the invoice line item. Example: 17

invoiceLineItem_id   integer     

Example: 17

Record Invoice Payment

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/billing/payments" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"invoice_id\": 17,
    \"assisted_shopping_id\": 17,
    \"amount\": 11613.31890586,
    \"method\": \"MOBILE_MONEY,CARD,BANK_TRANSFER,CASH\",
    \"transaction_reference\": \"Any string\",
    \"gateway_reference\": \"Any string\",
    \"status\": \"Any string\",
    \"paid_at\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/payments"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "invoice_id": 17,
    "assisted_shopping_id": 17,
    "amount": 11613.31890586,
    "method": "MOBILE_MONEY,CARD,BANK_TRANSFER,CASH",
    "transaction_reference": "Any string",
    "gateway_reference": "Any string",
    "status": "Any string",
    "paid_at": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/payments';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'invoice_id' => 17,
            'assisted_shopping_id' => 17,
            'amount' => 11613.31890586,
            'method' => 'MOBILE_MONEY,CARD,BANK_TRANSFER,CASH',
            'transaction_reference' => 'Any string',
            'gateway_reference' => 'Any string',
            'status' => 'Any string',
            'paid_at' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Payment recorded successfully",
    "data": {
        "invoice_id": "1",
        "amount": "30000",
        "method": "CASH",
        "paid_at": "2025-12-08",
        "updated_at": "2025-12-08T13:47:08.000000Z",
        "created_at": "2025-12-08T13:47:08.000000Z",
        "id": 1
    }
}
 

Request      

POST api/billing/payments

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

invoice_id   integer  optional    

Example: 17

assisted_shopping_id   integer  optional    

Example: 17

amount   number     

Example: 11613.31890586

method   string     

Example: MOBILE_MONEY,CARD,BANK_TRANSFER,CASH

transaction_reference   string  optional    

Request parameter: transaction_reference. Example: Any string

gateway_reference   string  optional    

Request parameter: gateway_reference. Example: Any string

status   string  optional    

Request parameter: status. Example: Any string

Must be one of:
  • PENDING
  • COMPLETED
  • FAILED
paid_at   date     

Example: consequatur

All Payments

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/billing/payments" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/payments"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/payments';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/billing/payments could not be found."
}
 

Request      

GET api/billing/payments

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Manually verify/update a payment's status.

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/billing/payments/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/payments/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/payments/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'status' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/billing/payments/{payment_id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

payment_id   integer     

The ID of the payment. Example: 17

Body Parameters

status   string     

E.g PENDING, COMPLETED, FAILED Example: consequatur

Delete Invoice Payment

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/billing/payments/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/payments/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/payments/consequatur';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
      "message": "Payment deleted successfully",
  }
 

Request      

DELETE api/billing/payments/{payment_id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

payment_id   string  optional    

date required Example: consequatur

Send Invoice Notification

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/billing/send_invoice/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/send_invoice/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/send_invoice/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Invoice Sent successfully",
      }
  }
 

Request      

GET api/billing/send_invoice/{invoice_id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

invoice_id   integer     

Example: 17

Get the admin-configured payment instructions text shown on invoices and quotations. Any authenticated user can read it (they need to see it on their own invoice) - only admin/finance can change it.

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/billing/payment-instructions" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/payment-instructions"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/payment-instructions';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/billing/payment-instructions could not be found."
}
 

Request      

GET api/billing/payment-instructions

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Update the payment instructions text. An empty value clears it - invoices/quotations show nothing rather than placeholder text when this hasn't been configured.

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/billing/payment-instructions" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"payment_instructions\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/payment-instructions"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "payment_instructions": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/payment-instructions';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'payment_instructions' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/billing/payment-instructions

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

payment_instructions   string  optional    

Example: consequatur

Shipment Delivery

Shipment Delivery

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/delivery/orders" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/delivery/orders"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/delivery/orders';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "current_page": 1,
  "data": [
      {
          "id": 4,
          "created_at": "2025-12-09T07:41:36.000000Z",
          "updated_at": "2025-12-09T08:12:25.000000Z",
          "deleted_at": null,
          "delivery_number": "DEL-000001",
          "order_id": 5,
          "rider_id": null,
          "delivery_address": "Kasese",
          "delivery_date": "2025-12-10",
          "status": "PENDING",
          "pod_signature": null,
          "pod_photo_path": "pod_photos/2akLAes8oj4j5OIxC71O5GxwEN8fSJ1jxtotKyxk.jpg",
          "delivery_notes": null,
          "delivered_at": null,
          "order": {
              "id": 5,
              "created_at": "2025-12-05T12:20:11.000000Z",
              "updated_at": "2025-12-05T12:20:11.000000Z",
              "deleted_at": null,
              "tracking_number": "ORD-20251205-00002",
              "user_id": 1,
              "origin_country": "ITALY",
              "receiver_name": "Tom Mboya",
              "receiver_phone": "0789887766",
              "receiver_email": "tom.mboya@gmail.com",
              "receiver_address": "Uganda - Kampala",
              "status": "PENDING",
              "received_at": null,
              "dispatched_at": null,
              "arrived_at": null,
              "released_at": null,
              "delivered_at": null,
              "packages": [
                  {
                      "id": 1,
                      "created_at": "2025-12-08T07:19:43.000000Z",
                      "updated_at": "2025-12-08T07:42:06.000000Z",
                      "deleted_at": null,
                      "order_id": 5,
                      "hwb_number": "HWB-20260219-0002",
                      "contents": "Computer - Desktop",
                      "declared_value": "2500000.00",
                      "weight": "5.00",
                      "length": "4.00",
                      "width": "6.00",
                      "height": "2.00",
                      "is_fragile": true,
                      "is_hazardous": false,
                      "is_damaged": false,
                      "package_photos": [
                          "package_photos/LXHHmhE4YM0YoTn1Lva95FSyQi31i89dskkPv2il.jpg",
                          "package_photos/thtdPXJtqtkpECHhbeyXIOAIMSGt564ZFIXBqdcp.jpg",
                          "package_photos/Uc34hnpyAPsAT1QINJfca0msaFdudcYfaY2Qs21h.jpg"
                      ],
                      "location_id": 1,
                      "received_at": "2025-12-03T00:00:00.000000Z"
                  },

              ]
          }
      }
  ],
  "first_page_url": "http://127.0.0.1:8000/api/delivery/orders?page=1",
  "from": 1,
  "last_page": 1,
  "last_page_url": "http://127.0.0.1:8000/api/delivery/orders?page=1",
  "links": [
      {
          "url": null,
          "label": "&laquo; Previous",
          "active": false
      },
      {
          "url": "http://127.0.0.1:8000/api/delivery/orders?page=1",
          "label": "1",
          "active": true
      },
      {
          "url": null,
          "label": "Next &raquo;",
          "active": false
      }
  ],
  "next_page_url": null,
  "path": "http://127.0.0.1:8000/api/delivery/orders",
  "per_page": 20,
  "prev_page_url": null,
  "to": 1,
  "total": 1
}
 

Request      

GET api/delivery/orders

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Create Shipment Delivery

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/delivery/orders" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"rider_id\": \"Any string\",
    \"package_id\": 17,
    \"delivery_address\": \"consequatur\",
    \"delivery_date\": \"consequatur\",
    \"status\": \"Any string\",
    \"pod_signature\": \"Any string\",
    \"pod_photo_path\": \"Any string\",
    \"delivery_notes\": \"consequatur\",
    \"delivered_at\": \"Any string\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/delivery/orders"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "rider_id": "Any string",
    "package_id": 17,
    "delivery_address": "consequatur",
    "delivery_date": "consequatur",
    "status": "Any string",
    "pod_signature": "Any string",
    "pod_photo_path": "Any string",
    "delivery_notes": "consequatur",
    "delivered_at": "Any string"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/delivery/orders';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'rider_id' => 'Any string',
            'package_id' => 17,
            'delivery_address' => 'consequatur',
            'delivery_date' => 'consequatur',
            'status' => 'Any string',
            'pod_signature' => 'Any string',
            'pod_photo_path' => 'Any string',
            'delivery_notes' => 'consequatur',
            'delivered_at' => 'Any string',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Shipment Delivery created successfully",
    "data": {
        "order_id": "5",
        "delivery_address": "Kasese",
        "delivery_date": "2025-12-10",
        "delivery_number": "DEL-000001",
        "updated_at": "2025-12-09T07:41:36.000000Z",
        "created_at": "2025-12-09T07:41:36.000000Z",
        "id": 4,
        "order": {
            "id": 5,
            "created_at": "2025-12-05T12:20:11.000000Z",
            "updated_at": "2025-12-05T12:20:11.000000Z",
            "deleted_at": null,
            "tracking_number": "ORD-20251205-00002",
            "user_id": 1,
            "origin_country": "ITALY",
            "receiver_name": "Tom Mboya",
            "receiver_phone": "0789887766",
            "receiver_email": "tom.mboya@gmail.com",
            "receiver_address": "Uganda - Kampala",
            "status": "PENDING",
            "received_at": null,
            "dispatched_at": null,
            "arrived_at": null,
            "released_at": null,
            "delivered_at": null,
            "packages": [
                {
                    "id": 1,
                    "created_at": "2025-12-08T07:19:43.000000Z",
                    "updated_at": "2025-12-08T07:42:06.000000Z",
                    "deleted_at": null,
                    "order_id": 5,
                    "hwb_number": "HWB-20260219-0002",
                    "contents": "Computer - Desktop",
                    "declared_value": "2500000.00",
                    "weight": "5.00",
                    "length": "4.00",
                    "width": "6.00",
                    "height": "2.00",
                    "is_fragile": true,
                    "is_hazardous": false,
                    "is_damaged": false,
                    "package_photos": [
                        "package_photos/LXHHmhE4YM0YoTn1Lva95FSyQi31i89dskkPv2il.jpg",
                        "package_photos/thtdPXJtqtkpECHhbeyXIOAIMSGt564ZFIXBqdcp.jpg",
                        "package_photos/Uc34hnpyAPsAT1QINJfca0msaFdudcYfaY2Qs21h.jpg"
                    ],
                    "location_id": 1,
                    "received_at": "2025-12-03T00:00:00.000000Z"
                },
                {
                    "id": 2,
                    "created_at": "2025-12-08T07:32:17.000000Z",
                    "updated_at": "2025-12-08T07:32:17.000000Z",
                    "deleted_at": null,
                    "order_id": 5,
                    "hwb_number": "HWB-20260219-0021",
                    "contents": "Computer - Desktop",
                    "declared_value": "2500000.00",
                    "weight": "5.00",
                    "length": "4.00",
                    "width": "6.00",
                    "height": "2.00",
                    "is_fragile": true,
                    "is_hazardous": false,
                    "is_damaged": false,
                    "package_photos": null,
                    "location_id": 1,
                    "received_at": "2025-12-03T00:00:00.000000Z"
                }
            ]
        }
    }
}
 

Request      

POST api/delivery/orders

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

rider_id   string  optional    

Request parameter: rider_id. The id of an existing record in the users table. Example: Any string

package_id   integer     

Example: 17

delivery_address   string     

Example: consequatur

delivery_date   date     

Example: consequatur

status   string  optional    

Request parameter: status. Example: Any string

Must be one of:
  • PENDING
  • ASSIGNED
  • OUT_FOR_DELIVERY
  • DELIVERED
  • FAILED
pod_signature   string  optional    

Request parameter: pod_signature. Example: Any string

pod_photo_path   string  optional    

Request parameter: pod_photo_path. Example: Any string

delivery_notes   string  optional    

Example: consequatur

delivered_at   string  optional    

Request parameter: delivered_at. Must be a valid date. Example: Any string

Single Shipment Delivery

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/delivery/orders/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/delivery/orders/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/delivery/orders/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Shipment Delivery",
    "data": {
        "id": 4,
        "created_at": "2025-12-09T07:41:36.000000Z",
        "updated_at": "2025-12-09T08:12:25.000000Z",
        "deleted_at": null,
        "delivery_number": "DEL-000001",
        "order_id": 5,
        "rider_id": null,
        "delivery_address": "Kasese",
        "delivery_date": "2025-12-10",
        "status": "PENDING",
        "pod_signature": null,
        "pod_photo_path": "pod_photos/2akLAes8oj4j5OIxC71O5GxwEN8fSJ1jxtotKyxk.jpg",
        "delivery_notes": null,
        "delivered_at": null,
        "order": {
            "id": 5,
            "created_at": "2025-12-05T12:20:11.000000Z",
            "updated_at": "2025-12-05T12:20:11.000000Z",
            "deleted_at": null,
            "tracking_number": "ORD-20251205-00002",
            "user_id": 1,
            "origin_country": "ITALY",
            "receiver_name": "Tom Mboya",
            "receiver_phone": "0789887766",
            "receiver_email": "tom.mboya@gmail.com",
            "receiver_address": "Uganda - Kampala",
            "status": "PENDING",
            "received_at": null,
            "dispatched_at": null,
            "arrived_at": null,
            "released_at": null,
            "delivered_at": null,
            "packages": [
                {
                    "id": 1,
                    "created_at": "2025-12-08T07:19:43.000000Z",
                    "updated_at": "2025-12-08T07:42:06.000000Z",
                    "deleted_at": null,
                    "order_id": 5,
                    "hwb_number": "HWB-20260219-0002",
                    "contents": "Computer - Desktop",
                    "declared_value": "2500000.00",
                    "weight": "5.00",
                    "length": "4.00",
                    "width": "6.00",
                    "height": "2.00",
                    "is_fragile": true,
                    "is_hazardous": false,
                    "is_damaged": false,
                    "package_photos": [
                        "package_photos/LXHHmhE4YM0YoTn1Lva95FSyQi31i89dskkPv2il.jpg",
                        "package_photos/thtdPXJtqtkpECHhbeyXIOAIMSGt564ZFIXBqdcp.jpg",
                        "package_photos/Uc34hnpyAPsAT1QINJfca0msaFdudcYfaY2Qs21h.jpg"
                    ],
                    "location_id": 1,
                    "received_at": "2025-12-03T00:00:00.000000Z"
                },
                {
                    "id": 2,
                    "created_at": "2025-12-08T07:32:17.000000Z",
                    "updated_at": "2025-12-08T07:32:17.000000Z",
                    "deleted_at": null,
                    "order_id": 5,
                    "hwb_number": "HWB-20260219-0021",
                    "contents": "Computer - Desktop",
                    "declared_value": "2500000.00",
                    "weight": "5.00",
                    "length": "4.00",
                    "width": "6.00",
                    "height": "2.00",
                    "is_fragile": true,
                    "is_hazardous": false,
                    "is_damaged": false,
                    "package_photos": null,
                    "location_id": 1,
                    "received_at": "2025-12-03T00:00:00.000000Z"
                }
            ],
            "user": {
                "id": 1,
                "full_name": "Thembo Charles",
                "email": "ashley7520charles@gmail.com",
                "phone": "0787444081",
                "email_verified_at": null,
                "tin": "110023452",
                "passport": "65748",
                "address": "Kampala",
                "otp": "4782",
                "status": "active",
                "user_type": "user",
                "created_at": "2025-12-05T06:42:09.000000Z",
                "updated_at": "2025-12-05T07:58:28.000000Z",
                "deleted_at": null
            }
        }
    }
}
 

Request      

GET api/delivery/orders/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 17

Update Shipment Delivery

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/delivery/orders/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"rider_id\": \"Any string\",
    \"delivery_address\": \"consequatur\",
    \"delivery_date\": \"consequatur\",
    \"pod_signature\": \"Any string\",
    \"pod_photo_path\": \"Any string\",
    \"delivery_notes\": \"consequatur\",
    \"delivered_at\": \"Any string\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/delivery/orders/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "rider_id": "Any string",
    "delivery_address": "consequatur",
    "delivery_date": "consequatur",
    "pod_signature": "Any string",
    "pod_photo_path": "Any string",
    "delivery_notes": "consequatur",
    "delivered_at": "Any string"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/delivery/orders/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'rider_id' => 'Any string',
            'delivery_address' => 'consequatur',
            'delivery_date' => 'consequatur',
            'pod_signature' => 'Any string',
            'pod_photo_path' => 'Any string',
            'delivery_notes' => 'consequatur',
            'delivered_at' => 'Any string',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Shipment Delivery updated successfully",
    "data": {
        "order_id": "5",
        "delivery_address": "Kasese",
        "delivery_date": "2025-12-10",
        "delivery_number": "DEL-000001",
        "updated_at": "2025-12-09T07:41:36.000000Z",
        "created_at": "2025-12-09T07:41:36.000000Z",
        "id": 4,
        "order": {
            "id": 5,
            "created_at": "2025-12-05T12:20:11.000000Z",
            "updated_at": "2025-12-05T12:20:11.000000Z",
            "deleted_at": null,
            "tracking_number": "ORD-20251205-00002",
            "user_id": 1,
            "origin_country": "ITALY",
            "receiver_name": "Tom Mboya",
            "receiver_phone": "0789887766",
            "receiver_email": "tom.mboya@gmail.com",
            "receiver_address": "Uganda - Kampala",
            "status": "PENDING",
            "received_at": null,
            "dispatched_at": null,
            "arrived_at": null,
            "released_at": null,
            "delivered_at": null,
            "packages": [
                {
                    "id": 1,
                    "created_at": "2025-12-08T07:19:43.000000Z",
                    "updated_at": "2025-12-08T07:42:06.000000Z",
                    "deleted_at": null,
                    "order_id": 5,
                    "hwb_number": "HWB-20260219-0002",
                    "contents": "Computer - Desktop",
                    "declared_value": "2500000.00",
                    "weight": "5.00",
                    "length": "4.00",
                    "width": "6.00",
                    "height": "2.00",
                    "is_fragile": true,
                    "is_hazardous": false,
                    "is_damaged": false,
                    "package_photos": [
                        "package_photos/LXHHmhE4YM0YoTn1Lva95FSyQi31i89dskkPv2il.jpg",
                        "package_photos/thtdPXJtqtkpECHhbeyXIOAIMSGt564ZFIXBqdcp.jpg",
                        "package_photos/Uc34hnpyAPsAT1QINJfca0msaFdudcYfaY2Qs21h.jpg"
                    ],
                    "location_id": 1,
                    "received_at": "2025-12-03T00:00:00.000000Z"
                },
                {
                    "id": 2,
                    "created_at": "2025-12-08T07:32:17.000000Z",
                    "updated_at": "2025-12-08T07:32:17.000000Z",
                    "deleted_at": null,
                    "order_id": 5,
                    "hwb_number": "HWB-20260219-0021",
                    "contents": "Computer - Desktop",
                    "declared_value": "2500000.00",
                    "weight": "5.00",
                    "length": "4.00",
                    "width": "6.00",
                    "height": "2.00",
                    "is_fragile": true,
                    "is_hazardous": false,
                    "is_damaged": false,
                    "package_photos": null,
                    "location_id": 1,
                    "received_at": "2025-12-03T00:00:00.000000Z"
                }
            ]
        }
    }
}
 

Request      

PUT api/delivery/orders/{id}

PATCH api/delivery/orders/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 17

deliveryOrder_id   integer     

Example: 17

Body Parameters

rider_id   string  optional    

Request parameter: rider_id. The id of an existing record in the users table. Example: Any string

delivery_address   string     

Example: consequatur

delivery_date   date     

Example: consequatur

pod_signature   string  optional    

Request parameter: pod_signature. Example: Any string

pod_photo_path   string  optional    

Request parameter: pod_photo_path. Example: Any string

delivery_notes   string  optional    

Example: consequatur

delivered_at   string  optional    

Request parameter: delivered_at. Must be a valid date. Example: Any string

Delete Shipment Delivery

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/delivery/orders/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/delivery/orders/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/delivery/orders/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Shipment Delivery deleted successfully",
      }
 

Request      

DELETE api/delivery/orders/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 17

deliveryOrder_id   integer     

Example: 17

Upload a point of Shipment Delivery photo

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/delivery/orders/17/upload-pod" \
    --header "Bearer: Token" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "pod_photo=@/tmp/phpXicA5u" 
const url = new URL(
    "https://www.constell.agent.co.ug/api/delivery/orders/17/upload-pod"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('pod_photo', document.querySelector('input[name="pod_photo"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/delivery/orders/17/upload-pod';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'pod_photo',
                'contents' => fopen('/tmp/phpXicA5u', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Point Of Delivery photo uploaded successfully",
    "photo_url": "pod_photos/2akLAes8oj4j5OIxC71O5GxwEN8fSJ1jxtotKyxk.jpg"
}
 

Request      

POST api/delivery/orders/{delivery_order}/upload-pod

Headers

Bearer        

Example: Token

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

delivery_order   integer     

Example: 17

delivery_order_id   integer     

Example: 17

Body Parameters

pod_photo   file     

Example: /tmp/phpXicA5u

Upload Customer Delivery Signature

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/delivery/orders/17/upload-signature" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"signature\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/delivery/orders/17/upload-signature"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "signature": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/delivery/orders/17/upload-signature';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'signature' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
      "message": "Signature saved successfully",
  }
 

Request      

POST api/delivery/orders/{delivery_order}/upload-signature

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

delivery_order   integer     

Example: 17

delivery_order_id   integer     

Example: 17

Body Parameters

signature   string     

Example: consequatur

Update Shipment Delivery status

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/delivery/update-orders-status/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"PENDING,ASSIGNED,OUT_FOR_DELIVERY,DELIVERED,FAILED\",
    \"rider_id\": 17,
    \"reason\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/delivery/update-orders-status/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "PENDING,ASSIGNED,OUT_FOR_DELIVERY,DELIVERED,FAILED",
    "rider_id": 17,
    "reason": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/delivery/update-orders-status/consequatur';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'status' => 'PENDING,ASSIGNED,OUT_FOR_DELIVERY,DELIVERED,FAILED',
            'rider_id' => 17,
            'reason' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
      "message": "Rider assigned successfully",
  }
 

Request      

POST api/delivery/update-orders-status/{delivery_order}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

delivery_order   string     

Example: consequatur

delivery_order_id   integer     

Example: 17

Body Parameters

status   string     

Example: PENDING,ASSIGNED,OUT_FOR_DELIVERY,DELIVERED,FAILED

rider_id   integer  optional    

Example: 17

reason   string  optional    

Example: consequatur

Dashboard

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/delivery/dashboard" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/delivery/dashboard"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/delivery/dashboard';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "total": 1,
    "pending": 1,
    "assigned": 0,
    "out": 0,
    "delivered": 0,
    "failed": 0,
    "today_deliveries": []
}
 

Request      

GET api/delivery/dashboard

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Riders

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/delivery/riders" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/delivery/riders"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/delivery/riders';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Riders",
    "data": [
        {
            "id": 1,
            "full_name": "Thembo Charles",
            "phone": "0787444081",
            "email": "ashley7520charles@gmail.com"
        }
    ]
}
 

Request      

GET api/delivery/riders

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

AssistedShopping

Assisted shopping lists

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/assisted_shopping" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/assisted_shopping could not be found."
}
 

Request      

GET api/assisted_shopping

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Add Assisted shopping

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/assisted_shopping" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"insured\": false,
    \"shipping_mode\": \"consequatur\",
    \"transport_mode\": \"consequatur\",
    \"remarks\": \"consequatur\",
    \"client_code\": \"Any string\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "insured": false,
    "shipping_mode": "consequatur",
    "transport_mode": "consequatur",
    "remarks": "consequatur",
    "client_code": "Any string"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'insured' => false,
            'shipping_mode' => 'consequatur',
            'transport_mode' => 'consequatur',
            'remarks' => 'consequatur',
            'client_code' => 'Any string',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/assisted_shopping

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

insured   boolean  optional    

Example: false

shipping_mode   string  optional    

e.g: 'express','standard' Example: consequatur

transport_mode   string  optional    

e.g: 'AIR','SEA','LAND' Example: consequatur

remarks   string  optional    

Example: consequatur

client_code   string  optional    

Request parameter: client_code. Example: Any string

Assisted shopping

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/assisted_shopping/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/assisted_shopping/17 could not be found."
}
 

Request      

GET api/assisted_shopping/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the assisted shopping. Example: 17

assistedShopping_id   integer     

Example: 17

Updated Assisted shopping

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/assisted_shopping/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"insured\": false,
    \"shipping_mode\": \"consequatur\",
    \"transport_mode\": \"consequatur\",
    \"remarks\": \"Any string\",
    \"client_code\": \"Any string\",
    \"string\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "insured": false,
    "shipping_mode": "consequatur",
    "transport_mode": "consequatur",
    "remarks": "Any string",
    "client_code": "Any string",
    "string": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'insured' => false,
            'shipping_mode' => 'consequatur',
            'transport_mode' => 'consequatur',
            'remarks' => 'Any string',
            'client_code' => 'Any string',
            'string' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/assisted_shopping/{id}

PATCH api/assisted_shopping/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the assisted shopping. Example: 17

assistedShopping_id   integer     

Example: 17

Body Parameters

insured   boolean  optional    

Request parameter: insured. Example: false

shipping_mode   string  optional    

e.g: 'express','standard' Example: consequatur

transport_mode   string  optional    

e.g: 'AIR','SEA','LAND' Example: consequatur

remarks   string  optional    

Request parameter: remarks. Example: Any string

client_code   string  optional    

Request parameter: client_code. Example: Any string

string   remarks  optional    

optional Example: consequatur

Delete Assisted shopping

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/assisted_shopping/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
      "message": "Assisted Shopping item deleted to successfully",
  }
 

Request      

DELETE api/assisted_shopping/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the assisted shopping. Example: 17

assistedShopping_id   integer     

Example: 17

Add Item to Assisted shopping

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/assisted_shopping_items" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"assisted_shopping_id\": 17,
    \"item_name\": \"consequatur\",
    \"quantity\": 17,
    \"unit_price\": 11613.31890586,
    \"url\": \"http:\\/\\/kunze.biz\\/iste-laborum-eius-est-dolor.html\",
    \"vendor\": \"consequatur\",
    \"notes\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping_items"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "assisted_shopping_id": 17,
    "item_name": "consequatur",
    "quantity": 17,
    "unit_price": 11613.31890586,
    "url": "http:\/\/kunze.biz\/iste-laborum-eius-est-dolor.html",
    "vendor": "consequatur",
    "notes": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping_items';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'assisted_shopping_id' => 17,
            'item_name' => 'consequatur',
            'quantity' => 17,
            'unit_price' => 11613.31890586,
            'url' => 'http://kunze.biz/iste-laborum-eius-est-dolor.html',
            'vendor' => 'consequatur',
            'notes' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/assisted_shopping_items

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

assisted_shopping_id   integer     

Example: 17

item_name   string     

Example: consequatur

quantity   integer     

Example: 17

unit_price   number     

Example: 11613.31890586

url   string     

Example: http://kunze.biz/iste-laborum-eius-est-dolor.html

vendor   string  optional    

Example: consequatur

notes   string  optional    

Example: consequatur

Update Item on Assisted shopping

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/assisted_shopping_items/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"item_name\": \"consequatur\",
    \"quantity\": 17,
    \"unit_price\": 11613.31890586,
    \"url\": \"http:\\/\\/kunze.biz\\/iste-laborum-eius-est-dolor.html\",
    \"vendor\": \"consequatur\",
    \"notes\": \"consequatur\",
    \"vendor_order_number\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping_items/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "item_name": "consequatur",
    "quantity": 17,
    "unit_price": 11613.31890586,
    "url": "http:\/\/kunze.biz\/iste-laborum-eius-est-dolor.html",
    "vendor": "consequatur",
    "notes": "consequatur",
    "vendor_order_number": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping_items/consequatur';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'item_name' => 'consequatur',
            'quantity' => 17,
            'unit_price' => 11613.31890586,
            'url' => 'http://kunze.biz/iste-laborum-eius-est-dolor.html',
            'vendor' => 'consequatur',
            'notes' => 'consequatur',
            'vendor_order_number' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/assisted_shopping_items/{id}

PATCH api/assisted_shopping_items/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the assisted shopping item. Example: consequatur

assisted_shoppingitem_id   integer     

Example: 17

Body Parameters

item_name   string     

Example: consequatur

quantity   integer     

Example: 17

unit_price   number     

Example: 11613.31890586

url   string     

Example: http://kunze.biz/iste-laborum-eius-est-dolor.html

vendor   string  optional    

Example: consequatur

notes   string  optional    

Example: consequatur

vendor_order_number   string  optional    

Example: consequatur

Find Assisted shopping items by Vendor Order Number

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/assisted_shopping_items/vendor_order/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping_items/vendor_order/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping_items/vendor_order/consequatur';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/assisted_shopping_items/vendor_order/consequatur could not be found."
}
 

Request      

GET api/assisted_shopping_items/vendor_order/{vendor_order_number}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

vendor_order_number   string     

The vendor order number to search for. Example: consequatur

Send Assisted shopping Notification

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/send-notification/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/send-notification/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/send-notification/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/send-notification/17 could not be found."
}
 

Request      

GET api/send-notification/{assisted_shopping_id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

assisted_shopping_id   integer     

Example: 17

Add Assistedshopping Quote Item

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/assisted_shopping_quote" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"item_name\": \"consequatur\",
    \"quantity\": 17,
    \"unit_price\": 11613.31890586,
    \"currency\": \"consequatur\",
    \"assisted_shopping_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping_quote"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "item_name": "consequatur",
    "quantity": 17,
    "unit_price": 11613.31890586,
    "currency": "consequatur",
    "assisted_shopping_id": 17
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping_quote';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'item_name' => 'consequatur',
            'quantity' => 17,
            'unit_price' => 11613.31890586,
            'currency' => 'consequatur',
            'assisted_shopping_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/assisted_shopping_quote

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

item_name   string     

Example: consequatur

quantity   integer     

Example: 17

unit_price   number     

Example: 11613.31890586

currency   string  optional    

Example: consequatur

assisted_shopping_id   integer     

Example: 17

Update Assisted shopping Quote

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/assisted_shopping_quote/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"item_name\": \"consequatur\",
    \"quantity\": 17,
    \"unit_price\": 11613.31890586,
    \"currency\": \"consequatur\",
    \"assisted_shopping_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping_quote/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "item_name": "consequatur",
    "quantity": 17,
    "unit_price": 11613.31890586,
    "currency": "consequatur",
    "assisted_shopping_id": 17
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping_quote/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'item_name' => 'consequatur',
            'quantity' => 17,
            'unit_price' => 11613.31890586,
            'currency' => 'consequatur',
            'assisted_shopping_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/assisted_shopping_quote/{id}

PATCH api/assisted_shopping_quote/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the assisted shopping quote. Example: 17

assistedShoppingQuote_id   integer     

Example: 17

Body Parameters

item_name   string  optional    

Example: consequatur

quantity   integer  optional    

Example: 17

unit_price   number  optional    

Example: 11613.31890586

currency   string  optional    

Example: consequatur

assisted_shopping_id   integer  optional    

Example: 17

Delete Assisted shopping Quote item

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/assisted_shopping_quote/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping_quote/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping_quote/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/assisted_shopping_quote/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the assisted shopping quote. Example: 17

assistedShoppingQuote_id   integer     

Example: 17

Send Assisted shopping Quote

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/send_quotation" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"assisted_shopping_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/send_quotation"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "assisted_shopping_id": 17
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/send_quotation';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'assisted_shopping_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/send_quotation

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

assisted_shopping_id   integer     

Example: 17

Approve Assisted shopping Quote

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/approve_assistedshopping_quotation" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"assisted_shopping_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/approve_assistedshopping_quotation"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "assisted_shopping_id": 17
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/approve_assistedshopping_quotation';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'assisted_shopping_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/approve_assistedshopping_quotation

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

assisted_shopping_id   integer     

Example: 17

Receive Item on Assisted shopping

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/receive_assisted_shopping_item" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"assisted_shopping_id\": 17,
    \"vendor_order_number\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/receive_assisted_shopping_item"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "assisted_shopping_id": 17,
    "vendor_order_number": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/receive_assisted_shopping_item';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'assisted_shopping_id' => 17,
            'vendor_order_number' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/receive_assisted_shopping_item

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

assisted_shopping_id   integer     

Example: 17

vendor_order_number   string  optional    

Read this from the BarCode input, vendor_order_number is input from barcode Example: consequatur

Order

Update Order status

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/order_status_hisory" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"order_id\": 17,
    \"status\": \"consequatur\",
    \"location\": \"consequatur\",
    \"notes\": \"consequatur\",
    \"user_id\": 1000
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/order_status_hisory"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "order_id": 17,
    "status": "consequatur",
    "location": "consequatur",
    "notes": "consequatur",
    "user_id": 1000
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/order_status_hisory';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'order_id' => 17,
            'status' => 'consequatur',
            'location' => 'consequatur',
            'notes' => 'consequatur',
            'user_id' => 1000,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Order history created successfully.",
      }
 

Request      

POST api/order_status_hisory

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

order_id   integer     

Example: 17

status   string     

e.g PENDING, RECEIVED,PREPARING_TO_DISPATCH,DISPATCHED,DELAYED,ARRIVED,READY_FOR_COLLECTION,COLLECTED Example: consequatur

location   string  optional    

Example: consequatur

notes   string     

Example: consequatur

user_id   integer  optional    

Request parameter: user_id. Example: 1000

Delete Order status history

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/order_status_hisory/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/order_status_hisory/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/order_status_hisory/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
         "status": "success",
          "message": "Order status history deleted.",
      }
  }
 

Request      

DELETE api/order_status_hisory/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order status hisory. Example: 17

orderStatusHistory_id   integer     

Example: 17

Order This is a delivery request

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/cargo_decleration" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/cargo_decleration"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/cargo_decleration';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Order",
    "data": [
        {
            "id": 1,
            "created_at": "2025-12-30T08:08:52.000000Z",
            "updated_at": "2025-12-30T08:29:31.000000Z",
            "deleted_at": null,
            "warehouse_location_id": 1,
            "internal_curier": "DHL",
            "tracking_number": "DHL-009874",
            "cargo_details": "Laptops",
            "value": "34000",
            "weight": "50",
            "status": "pending",
            "files": [
                "package_photos/mCJHMcA4IyQl1Ws54K3OllAgVNWm1pYB3gNCKrY0.pdf",
                "package_photos/p9FvfMIqBxNwePlG4RsR2DN6IoBZOaUGOtv29cAJ.pdf"
            ],
            "user_id": 1,
            "user": {
                "id": 1,
                "full_name": "Samson Tusiime",
                "email": "tusiimesam@gmail.com",
                "phone": "+256775926572",
                "tin": null,
                "passport": null,
                "address": "Kampala",
                "status": "active",
                "user_type": "super_user",
                "created_at": "2025-12-22T07:51:55.000000Z",
                "updated_at": "2025-12-22T07:51:55.000000Z",
                "deleted_at": null,
                "delivery_address": null
            },
            "location": {
                "id": 1,
                "created_at": "2025-12-22T13:00:03.000000Z",
                "updated_at": "2025-12-22T13:03:02.000000Z",
                "deleted_at": null,
                "code": "ZM",
                "name": "Zamaleto",
                "address": "Kampala",
                "manager": "Charles",
                "active": 1,
                "rack_count": "4",
                "country": "Uganda"
            }
        }
    ]
}
 

Request      

GET api/cargo_decleration

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Store Order This is a delivery request

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/cargo_decleration" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"warehouse_location_id\": 17,
    \"internal_curier\": \"consequatur\",
    \"tracking_number\": \"consequatur\",
    \"insured\": false,
    \"shipping_mode\": \"consequatur\",
    \"cargo_details\": [
        \"consequatur\"
    ]
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/cargo_decleration"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "warehouse_location_id": 17,
    "internal_curier": "consequatur",
    "tracking_number": "consequatur",
    "insured": false,
    "shipping_mode": "consequatur",
    "cargo_details": [
        "consequatur"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/cargo_decleration';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'warehouse_location_id' => 17,
            'internal_curier' => 'consequatur',
            'tracking_number' => 'consequatur',
            'insured' => false,
            'shipping_mode' => 'consequatur',
            'cargo_details' => [
                'consequatur',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/cargo_decleration

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

warehouse_location_id   integer     

Example: 17

internal_curier   string  optional    

optional Example: consequatur

tracking_number   string  optional    

optional Example: consequatur

insured   boolean  optional    

Example: false

shipping_mode   string  optional    

sometimes e.g:express,standard' Example: consequatur

cargo_details   string[]     

List of cargo items

cargo_item   string     

Name of the cargo item Example: consequatur

value   number     

Declared value Example: 11613.31890586

weight   number     

Weight of the cargo Example: 11613.31890586

length   number  optional    

Request parameter: cargo_details.*.length. Example: 1000

width   number  optional    

Request parameter: cargo_details.*.width. Example: 1000

height   number  optional    

Request parameter: cargo_details.*.height. Example: 1000

mode_of_transport   string     

Mode of transport for the cargo e.g AIR, SEA, ROAD Example: consequatur

Order This is a delivery request

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/cargo_decleration/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/cargo_decleration/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/cargo_decleration/consequatur';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/cargo_decleration/consequatur could not be found."
}
 

Request      

GET api/cargo_decleration/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the cargo decleration. Example: consequatur

cargoDeclation_id   integer     

Example: 17

Update Order This is a delivery request

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/cargo_decleration/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"internal_curier\": \"consequatur\",
    \"tracking_number\": \"consequatur\",
    \"cargo_details\": \"consequatur\",
    \"value\": \"consequatur\",
    \"weight\": \"consequatur\",
    \"status\": \"pending,received,declined\",
    \"notes\": \"Any string\",
    \"insured\": false,
    \"shipping_mode\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/cargo_decleration/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "internal_curier": "consequatur",
    "tracking_number": "consequatur",
    "cargo_details": "consequatur",
    "value": "consequatur",
    "weight": "consequatur",
    "status": "pending,received,declined",
    "notes": "Any string",
    "insured": false,
    "shipping_mode": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/cargo_decleration/consequatur';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'internal_curier' => 'consequatur',
            'tracking_number' => 'consequatur',
            'cargo_details' => 'consequatur',
            'value' => 'consequatur',
            'weight' => 'consequatur',
            'status' => 'pending,received,declined',
            'notes' => 'Any string',
            'insured' => false,
            'shipping_mode' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/cargo_decleration/{id}

PATCH api/cargo_decleration/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the cargo decleration. Example: consequatur

cargoDeclation_id   integer     

Example: 17

Body Parameters

internal_curier   string  optional    

optional Example: consequatur

tracking_number   string  optional    

optional Example: consequatur

cargo_details   string     

Example: consequatur

cargo_item   string  optional    

Request parameter: cargo_details.*.cargo_item. Example: Any string

value   number  optional    

Request parameter: cargo_details.*.value. Example: 1000

weight   number  optional    

Request parameter: cargo_details.*.weight. Example: 1000

length   number  optional    

Request parameter: cargo_details.*.length. Example: 1000

width   number  optional    

Request parameter: cargo_details.*.width. Example: 1000

height   number  optional    

Request parameter: cargo_details.*.height. Example: 1000

mode_of_transport   string  optional    

Request parameter: cargo_details.*.mode_of_transport. Example: Any string

value   string     

Example: consequatur

weight   string  optional    

Example: consequatur

status   string  optional    

Example: pending,received,declined

notes   string  optional    

Request parameter: notes. Example: Any string

insured   boolean  optional    

Example: false

shipping_mode   string  optional    

Example: consequatur

Delete Order This is a delivery request

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/cargo_decleration/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/cargo_decleration/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/cargo_decleration/consequatur';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/cargo_decleration/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the cargo decleration. Example: consequatur

cargoDeclation_id   integer     

Example: 17

Uplaod Order files This is a delivery request

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/cargo_files/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"files\": [
        \"consequatur\"
    ]
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/cargo_files/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "files": [
        "consequatur"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/cargo_files/consequatur';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'files' => [
                'consequatur',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/cargo_files/{cargo_decleration_id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

cargo_decleration_id   string     

The ID of the cargo decleration. Example: consequatur

cargoDeclation_id   integer     

Example: 17

Body Parameters

files   string[]  optional    

Delete Order file This is a delivery request

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/cargo_files/consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"file_name\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/cargo_files/consequatur"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "file_name": "consequatur"
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/cargo_files/consequatur';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'file_name' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/cargo_files/{cargo_decleration_id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

cargo_decleration_id   string     

The ID of the cargo decleration. Example: consequatur

cargodelceration_id   integer     

Example: 17

Body Parameters

file_name   string     

Example: consequatur

Expenditures

Categories list

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/expenditures/category" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/expenditures/category"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/expenditures/category';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/expenditures/category could not be found."
}
 

Request      

GET api/expenditures/category

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Create Categories

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/expenditures/category" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"consequatur\",
    \"description\": \"Dolores dolorum amet iste laborum eius est dolor.\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/expenditures/category"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "consequatur",
    "description": "Dolores dolorum amet iste laborum eius est dolor."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/expenditures/category';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'consequatur',
            'description' => 'Dolores dolorum amet iste laborum eius est dolor.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/expenditures/category

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Example: consequatur

description   string  optional    

Example: Dolores dolorum amet iste laborum eius est dolor.

Update Category

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/expenditures/category/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"consequatur\",
    \"description\": \"Dolores dolorum amet iste laborum eius est dolor.\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/expenditures/category/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "consequatur",
    "description": "Dolores dolorum amet iste laborum eius est dolor."
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/expenditures/category/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'consequatur',
            'description' => 'Dolores dolorum amet iste laborum eius est dolor.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/expenditures/category/{id}

PATCH api/expenditures/category/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the category. Example: 17

category   integer     

Example: 17

Body Parameters

name   string     

Example: consequatur

description   string  optional    

Example: Dolores dolorum amet iste laborum eius est dolor.

Delete Category

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/expenditures/category/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/expenditures/category/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/expenditures/category/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/expenditures/category/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the category. Example: 17

category   integer     

Example: 17

List Expenses

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/expenditures/expenses" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"from\": \"consequatur\",
    \"to\": \"consequatur\",
    \"category_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/expenditures/expenses"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "from": "consequatur",
    "to": "consequatur",
    "category_id": 17
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/expenditures/expenses';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'from' => 'consequatur',
            'to' => 'consequatur',
            'category_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/expenditures/expenses could not be found."
}
 

Request      

GET api/expenditures/expenses

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

from   date  optional    

Example: consequatur

to   date  optional    

Example: consequatur

category_id   integer  optional    

Example: 17

Record Expenses

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/expenditures/expenses" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"date\": \"consequatur\",
    \"expense_category_id\": 17,
    \"particular\": \"consequatur\",
    \"quantity\": 17,
    \"unit_price\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/expenditures/expenses"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "date": "consequatur",
    "expense_category_id": 17,
    "particular": "consequatur",
    "quantity": 17,
    "unit_price": 17
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/expenditures/expenses';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'date' => 'consequatur',
            'expense_category_id' => 17,
            'particular' => 'consequatur',
            'quantity' => 17,
            'unit_price' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/expenditures/expenses

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

date   date     

Example: consequatur

expense_category_id   integer     

Example: 17

particular   string     

Example: consequatur

quantity   integer     

Example: 17

unit_price   integer     

Example: 17

Update Expenses

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/expenditures/expenses/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"date\": \"consequatur\",
    \"expense_category_id\": 17,
    \"particular\": \"consequatur\",
    \"quantity\": 17,
    \"unit_price\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/expenditures/expenses/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "date": "consequatur",
    "expense_category_id": 17,
    "particular": "consequatur",
    "quantity": 17,
    "unit_price": 17
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/expenditures/expenses/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'date' => 'consequatur',
            'expense_category_id' => 17,
            'particular' => 'consequatur',
            'quantity' => 17,
            'unit_price' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/expenditures/expenses/{id}

PATCH api/expenditures/expenses/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the expense. Example: 17

expense_id   integer  optional    

Example: 17

Body Parameters

date   date  optional    

Example: consequatur

expense_category_id   integer     

Example: 17

particular   string  optional    

Example: consequatur

quantity   integer  optional    

Example: 17

unit_price   integer  optional    

Example: 17

Delete Expenses

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/expenditures/expenses/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/expenditures/expenses/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/expenditures/expenses/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/expenditures/expenses/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the expense. Example: 17

expense_id   integer     

Example: 17

Policy documents

Policy documents

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/documents" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/documents"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/documents';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/documents could not be found."
}
 

Request      

GET api/documents

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Uplaod Policy documents

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/documents" \
    --header "Bearer: Token" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "name=consequatur"\
    --form "description=Dolores dolorum amet iste laborum eius est dolor."\
    --form "file_url=@/tmp/phpTaBiKO" 
const url = new URL(
    "https://www.constell.agent.co.ug/api/documents"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('name', 'consequatur');
body.append('description', 'Dolores dolorum amet iste laborum eius est dolor.');
body.append('file_url', document.querySelector('input[name="file_url"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/documents';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'name',
                'contents' => 'consequatur'
            ],
            [
                'name' => 'description',
                'contents' => 'Dolores dolorum amet iste laborum eius est dolor.'
            ],
            [
                'name' => 'file_url',
                'contents' => fopen('/tmp/phpTaBiKO', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/documents

Headers

Bearer        

Example: Token

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

name   string     

Example: consequatur

file_url   file  optional    

mimes:jpg,jpeg,png,webp,pdf Example: /tmp/phpTaBiKO

description   string  optional    

Example: Dolores dolorum amet iste laborum eius est dolor.

Policy document

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/documents/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/documents/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/documents/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/documents/17 could not be found."
}
 

Request      

GET api/documents/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Example: 17

Updated Policy document

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/documents/17" \
    --header "Bearer: Token" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "name=consequatur"\
    --form "description=Dolores dolorum amet iste laborum eius est dolor."\
    --form "file_url=@/tmp/phpMHUkZk" 
const url = new URL(
    "https://www.constell.agent.co.ug/api/documents/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('name', 'consequatur');
body.append('description', 'Dolores dolorum amet iste laborum eius est dolor.');
body.append('file_url', document.querySelector('input[name="file_url"]').files[0]);

fetch(url, {
    method: "PUT",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/documents/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'name',
                'contents' => 'consequatur'
            ],
            [
                'name' => 'description',
                'contents' => 'Dolores dolorum amet iste laborum eius est dolor.'
            ],
            [
                'name' => 'file_url',
                'contents' => fopen('/tmp/phpMHUkZk', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/documents/{id}

PATCH api/documents/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

id   integer     

Example: 17

Body Parameters

name   string     

Example: consequatur

file_url   file  optional    

mimes:jpg,jpeg,png,webp,pdf Example: /tmp/phpMHUkZk

description   string  optional    

Example: Dolores dolorum amet iste laborum eius est dolor.

Delete Policy document

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/documents/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/documents/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/documents/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/documents/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Example: 17

Notifications

Notifications

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/settings/notifications" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/notifications"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/notifications';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/settings/notifications could not be found."
}
 

Request      

GET api/settings/notifications

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Update Notification status

requires authentication

Example request:
curl --request PATCH \
    "https://www.constell.agent.co.ug/api/settings/notification/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"notification_status\": \"\'read\',\'not_read\'\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/notification/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "notification_status": "'read','not_read'"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/notification/17';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'notification_status' => '\'read\',\'not_read\'',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PATCH api/settings/notification/{user_message_id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

user_message_id   integer     

Example: 17

Body Parameters

notification_status   string     

Example: 'read','not_read'

Others

POST api/auth/get_client_byCode

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/auth/get_client_byCode" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_code\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/auth/get_client_byCode"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_code": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/auth/get_client_byCode';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'client_code' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/auth/get_client_byCode

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

client_code   string     

Example: consequatur

Display the specified resource.

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/settings/locations/consequatur" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/locations/consequatur"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/locations/consequatur';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/settings/locations/consequatur could not be found."
}
 

Request      

GET api/settings/locations/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the location. Example: consequatur

Display a listing of the resource.

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/settings/warehouse_racks" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/warehouse_racks"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/warehouse_racks';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/settings/warehouse_racks could not be found."
}
 

Request      

GET api/settings/warehouse_racks

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Display the specified resource.

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/settings/warehouse_racks/17" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/warehouse_racks/17"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/warehouse_racks/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/settings/warehouse_racks/17 could not be found."
}
 

Request      

GET api/settings/warehouse_racks/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the warehouse rack. Example: 17

Display a listing of the resource.

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/billing/invoice-line-items" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoice-line-items"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoice-line-items';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/billing/invoice-line-items could not be found."
}
 

Request      

GET api/billing/invoice-line-items

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Display the specified resource.

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/billing/invoice-line-items/17" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/invoice-line-items/17"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/invoice-line-items/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/billing/invoice-line-items/17 could not be found."
}
 

Request      

GET api/billing/invoice-line-items/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the invoice line item. Example: 17

Display a listing of the resource.

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/assisted_shopping_quote" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping_quote"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping_quote';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/assisted_shopping_quote could not be found."
}
 

Request      

GET api/assisted_shopping_quote

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Display the specified resource.

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/assisted_shopping_quote/17" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/assisted_shopping_quote/17"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/assisted_shopping_quote/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/assisted_shopping_quote/17 could not be found."
}
 

Request      

GET api/assisted_shopping_quote/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the assisted shopping quote. Example: 17

GET api/activity_logs

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/activity_logs" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/activity_logs"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/activity_logs';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/activity_logs could not be found."
}
 

Request      

GET api/activity_logs

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/shipping_address/create

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/shipping_address/create" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/shipping_address/create"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/shipping_address/create';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/shipping_address/create could not be found."
}
 

Request      

GET api/shipping_address/create

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/shipping_address/{id}

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/shipping_address/17" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/shipping_address/17"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/shipping_address/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/shipping_address/17 could not be found."
}
 

Request      

GET api/shipping_address/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the shipping address. Example: 17

GET api/shipping_address/{shipping_address_id}/edit

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/shipping_address/17/edit" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/shipping_address/17/edit"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/shipping_address/17/edit';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/shipping_address/17/edit could not be found."
}
 

Request      

GET api/shipping_address/{shipping_address_id}/edit

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

shipping_address_id   integer     

The ID of the shipping address. Example: 17

GET api/pesal_pal

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/pesal_pal" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/pesal_pal"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/pesal_pal';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/pesal_pal could not be found."
}
 

Request      

GET api/pesal_pal

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/ipn_url

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/ipn_url" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/ipn_url"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/ipn_url';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/ipn_url could not be found."
}
 

Request      

GET api/ipn_url

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/call_back_url

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/call_back_url" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/call_back_url"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/call_back_url';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/call_back_url could not be found."
}
 

Request      

GET api/call_back_url

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Compliance

List compliance holds, optionally filtered by status.

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/compliance-holds" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/compliance-holds"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "consequatur"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/compliance-holds';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'status' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/compliance-holds could not be found."
}
 

Request      

GET api/compliance-holds

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

status   string  optional    

E.g HOLD, RELEASED Example: consequatur

Place a compliance hold on a package. Transitions the package to 'held' via the existing refreshPackage cascade (order-held cascade, client notification - already CC'd internally per mail config).

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/compliance-holds" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"barcode\": \"consequatur\",
    \"reason\": \"consequatur\",
    \"notes\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/compliance-holds"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "barcode": "consequatur",
    "reason": "consequatur",
    "notes": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/compliance-holds';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'barcode' => 'consequatur',
            'reason' => 'consequatur',
            'notes' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/compliance-holds

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

barcode   string     

Example: consequatur

reason   string     

E.g customs_inspection, documentation_incomplete, payment_pending, prohibited_item, damage_inspection, other Example: consequatur

notes   string  optional    

Example: consequatur

Release a compliance hold. Transitions the package to 'approved' (the only status a held package can move to) via refreshPackage.

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/compliance-holds/release" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"barcode\": \"consequatur\",
    \"notes\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/compliance-holds/release"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "barcode": "consequatur",
    "notes": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/compliance-holds/release';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'barcode' => 'consequatur',
            'notes' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/compliance-holds/release

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

barcode   string     

Example: consequatur

notes   string  optional    

Example: consequatur

Dashboard

Overview metrics

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/dashboard/overview" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/dashboard/overview"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/dashboard/overview';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "average_days_to_collection": 4.3,
    "total_packages_collected": 128,
    "origin_warehouses": {
        "total": 3,
        "warehouses": []
    },
    "destination_warehouses": {
        "total": 2,
        "warehouses": []
    },
    "success_rate": 92.5,
    "pricing": []
}
 

Request      

GET api/dashboard/overview

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Manifests

Display a listing Manifests

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/manifests" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/manifests"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/manifests';
$response = $client->get(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/manifests could not be found."
}
 

Request      

GET api/manifests

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Store a newly created Manifest.

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/manifests" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"warehouse_location_id\": \"consequatur\",
    \"destination_location_id\": \"consequatur\",
    \"title\": \"consequatur\",
    \"transport_mode\": \"ROAD\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/manifests"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "warehouse_location_id": "consequatur",
    "destination_location_id": "consequatur",
    "title": "consequatur",
    "transport_mode": "ROAD"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/manifests';
$response = $client->post(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'warehouse_location_id' => 'consequatur',
            'destination_location_id' => 'consequatur',
            'title' => 'consequatur',
            'transport_mode' => 'ROAD',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/manifests

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

warehouse_location_id   string     

The id of an existing record in the warehouse_locations table. Example: consequatur

destination_location_id   string     

The id of an existing record in the warehouse_locations table. Example: consequatur

title   string  optional    

Example: consequatur

transport_mode   string     

Example: ROAD

Must be one of:
  • AIR
  • SEA
  • TRAIN
  • ROAD

Update the specified Manifest

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/manifests/17" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"consequatur\",
    \"transport_mode\": \"ROAD\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/manifests/17"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "consequatur",
    "transport_mode": "ROAD"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/manifests/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'title' => 'consequatur',
            'transport_mode' => 'ROAD',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/manifests/{id}

PATCH api/manifests/{id}

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the manifest. Example: 17

Body Parameters

title   string  optional    

Example: consequatur

transport_mode   string     

Example: ROAD

Must be one of:
  • AIR
  • SEA
  • TRAIN
  • ROAD

Remove the specified Manifest.

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/manifests/17" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/manifests/17"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/manifests/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/manifests/{id}

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the manifest. Example: 17

Display the specified resource.

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/manifest_by_barcode" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"manifest_code\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/manifest_by_barcode"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "manifest_code": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/manifest_by_barcode';
$response = $client->post(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'manifest_code' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/manifest_by_barcode

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

manifest_code   string     

Scan the Barcode Manifest Box - Pallet Example: consequatur

Reset all manifest consoldations to DISPATCHED

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/reset_consolidation_manifest" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"manifest_code\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/reset_consolidation_manifest"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "manifest_code": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/reset_consolidation_manifest';
$response = $client->post(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'manifest_code' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/reset_consolidation_manifest

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

manifest_code   string     

The manifest_code of an existing record in the manifests table. Example: consequatur

Store a newly created Consolidation in a Manifest

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/manifest_consolidations" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"manifest_id\": \"consequatur\",
    \"consolidation_code\": \"consequatur\",
    \"notes\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/manifest_consolidations"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "manifest_id": "consequatur",
    "consolidation_code": "consequatur",
    "notes": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/manifest_consolidations';
$response = $client->post(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'manifest_id' => 'consequatur',
            'consolidation_code' => 'consequatur',
            'notes' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/manifest_consolidations

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

manifest_id   string     

The id of an existing record in the manifests table. Example: consequatur

consolidation_code   string     

The consolidation_code of an existing record in the consolidations table. Example: consequatur

notes   string  optional    

consolidation_code is the barcode. Example: consequatur

Update the specified Consolidation in a Manifest

requires authentication

Scan packages as delayed, dispatched or Verified

NB: The status does not have to apear on the user form

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/manifest_consolidations/consequatur" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"consolidation_code\": \"consequatur\",
    \"notes\": \"consequatur\",
    \"status\": \"DISPATCHED\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/manifest_consolidations/consequatur"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "consolidation_code": "consequatur",
    "notes": "consequatur",
    "status": "DISPATCHED"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/manifest_consolidations/consequatur';
$response = $client->put(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'consolidation_code' => 'consequatur',
            'notes' => 'consequatur',
            'status' => 'DISPATCHED',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/manifest_consolidations/{id}

PATCH api/manifest_consolidations/{id}

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the manifest consolidation. Example: consequatur

Body Parameters

consolidation_code   string     

The consolidation_code of an existing record in the consolidations table. Example: consequatur

notes   string  optional    

Example: consequatur

status   string     

Example: DISPATCHED

Must be one of:
  • DISPATCHED
  • DELAYED
  • VERIFIED

Remove the specified Consolidation from Manifest

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/manifest_consolidations/consequatur" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/manifest_consolidations/consequatur"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/manifest_consolidations/consequatur';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/manifest_consolidations/{id}

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the manifest consolidation. Example: consequatur

Packages

Packages currently in the warehouse network (i.e. not yet released to the client) - backs the Inventory Control page.

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/packages" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/packages"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/packages';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/packages could not be found."
}
 

Request      

GET api/packages

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Pricing

Display a listing of prices.

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/billing/pricings" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/pricings"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/pricings';
$response = $client->get(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/billing/pricings could not be found."
}
 

Request      

GET api/billing/pricings

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Store a newly created price

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/billing/pricings" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"transport_mode\": \"TRAIN\",
    \"warehouse_location_id\": \"consequatur\",
    \"destination_location_id\": \"consequatur\",
    \"weight_price\": 11613.31890586,
    \"volumetric_price\": 11613.31890586,
    \"percel_price\": 11613.31890586
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/pricings"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "transport_mode": "TRAIN",
    "warehouse_location_id": "consequatur",
    "destination_location_id": "consequatur",
    "weight_price": 11613.31890586,
    "volumetric_price": 11613.31890586,
    "percel_price": 11613.31890586
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/pricings';
$response = $client->post(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'transport_mode' => 'TRAIN',
            'warehouse_location_id' => 'consequatur',
            'destination_location_id' => 'consequatur',
            'weight_price' => 11613.31890586,
            'volumetric_price' => 11613.31890586,
            'percel_price' => 11613.31890586,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/billing/pricings

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

transport_mode   string     

Example: TRAIN

Must be one of:
  • AIR
  • SEA
  • ROAD
  • TRAIN
warehouse_location_id   string     

The id of an existing record in the warehouse_locations table. Example: consequatur

destination_location_id   string     

The value and warehouse_location_id must be different. The id of an existing record in the warehouse_locations table. Example: consequatur

weight_price   number  optional    

This field is required when none of volumetric_price and percel_price are present. Example: 11613.31890586

volumetric_price   number  optional    

This field is required when none of weight_price and percel_price are present. Example: 11613.31890586

percel_price   number  optional    

This field is required when none of weight_price and volumetric_price are present. Example: 11613.31890586

Update the specified price

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/billing/pricings/17" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"transport_mode\": \"TRAIN\",
    \"warehouse_location_id\": \"consequatur\",
    \"destination_location_id\": \"consequatur\",
    \"weight_price\": 11613.31890586,
    \"volumetric_price\": 11613.31890586,
    \"percel_price\": 11613.31890586
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/pricings/17"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "transport_mode": "TRAIN",
    "warehouse_location_id": "consequatur",
    "destination_location_id": "consequatur",
    "weight_price": 11613.31890586,
    "volumetric_price": 11613.31890586,
    "percel_price": 11613.31890586
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/pricings/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'transport_mode' => 'TRAIN',
            'warehouse_location_id' => 'consequatur',
            'destination_location_id' => 'consequatur',
            'weight_price' => 11613.31890586,
            'volumetric_price' => 11613.31890586,
            'percel_price' => 11613.31890586,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/billing/pricings/{id}

PATCH api/billing/pricings/{id}

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the pricing. Example: 17

Body Parameters

transport_mode   string     

Example: TRAIN

Must be one of:
  • AIR
  • SEA
  • ROAD
  • TRAIN
warehouse_location_id   string     

The id of an existing record in the warehouse_locations table. Example: consequatur

destination_location_id   string     

The value and warehouse_location_id must be different. The id of an existing record in the warehouse_locations table. Example: consequatur

weight_price   number  optional    

This field is required when none of volumetric_price and percel_price are present. Example: 11613.31890586

volumetric_price   number  optional    

This field is required when none of weight_price and percel_price are present. Example: 11613.31890586

percel_price   number  optional    

This field is required when none of weight_price and volumetric_price are present. Example: 11613.31890586

Remove the specified price

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/billing/pricings/17" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/pricings/17"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/pricings/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/billing/pricings/{id}

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the pricing. Example: 17

Public Site

Published freight rates, for the rate calculator on the landing page.

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/public/pricing" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/public/pricing"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/public/pricing';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/public/pricing could not be found."
}
 

Request      

GET api/public/pricing

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Aggregate site stats for the landing page's stats strip. All computed from real data: - packages_delivered: packages that have reached the client (status released) - global_hubs: active origin warehouses - avg_air_transit_days / avg_sea_transit_days: average days from an order leaving origin to arriving at destination (see Order::averageTransitDays), split by transport mode. Null if there's no complete pair yet for a mode.

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/public/stats" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/public/stats"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/public/stats';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/public/stats could not be found."
}
 

Request      

GET api/public/stats

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Reports

GET api/reports/overview

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/reports/overview?date_from=consequatur&date_to=consequatur" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/reports/overview"
);

const params = {
    "date_from": "consequatur",
    "date_to": "consequatur",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/reports/overview';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'date_from' => 'consequatur',
            'date_to' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/reports/overview could not be found."
}
 

Request      

GET api/reports/overview

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

date_from   string  optional    

date Start of the report window. Defaults to the first day of the current month. Example: consequatur

date_to   string  optional    

date End of the report window. Defaults to the last day of the current month. Example: consequatur

Shipping address

Fetch Shipping address

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/shipping_address" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/shipping_address"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/shipping_address';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Shipping Address fetched successfully",
    "data": [
        {
            "id": 1,
            "created_at": "2026-01-23T08:01:06.000000Z",
            "updated_at": "2026-01-23T08:01:06.000000Z",
            "name": "USA - AIR",
            "address_line1": "4720 Boston Way",
            "address_line2": "Suite C Shypt",
            "city": "Lanham",
            "state": "MD",
            "zip": "20706",
            "phone_number": "+1 301 317 0512",
            "deleted_at": null
        }
    ]
}
 

Request      

GET api/shipping_address

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Record Shipping address

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/shipping_address" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"consequatur\",
    \"address_line1\": \"consequatur\",
    \"address_line2\": \"consequatur\",
    \"city\": \"consequatur\",
    \"state\": \"consequatur\",
    \"zip\": \"consequatur\",
    \"phone_number\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/shipping_address"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "consequatur",
    "address_line1": "consequatur",
    "address_line2": "consequatur",
    "city": "consequatur",
    "state": "consequatur",
    "zip": "consequatur",
    "phone_number": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/shipping_address';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'consequatur',
            'address_line1' => 'consequatur',
            'address_line2' => 'consequatur',
            'city' => 'consequatur',
            'state' => 'consequatur',
            'zip' => 'consequatur',
            'phone_number' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Shipping Address created successfully",
    "data": {
        "name": "USA - AIR",
        "address_line1": "4720 Boston Way",
        "address_line2": "Suite C Shypt",
        "city": "Lanham",
        "state": "MD",
        "zip": "20706",
        "phone_number": "+1 301 317 0512",
        "updated_at": "2026-01-23T08:01:06.000000Z",
        "created_at": "2026-01-23T08:01:06.000000Z",
        "id": 1
    }
}
 

Request      

POST api/shipping_address

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Example: consequatur

address_line1   string  optional    

Example: consequatur

address_line2   string  optional    

Example: consequatur

city   string  optional    

Example: consequatur

state   string  optional    

Example: consequatur

zip   string  optional    

Example: consequatur

phone_number   string  optional    

Example: consequatur

Update Shipping address

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/shipping_address/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"consequatur\",
    \"address_line1\": \"consequatur\",
    \"address_line2\": \"consequatur\",
    \"city\": \"consequatur\",
    \"state\": \"consequatur\",
    \"zip\": \"consequatur\",
    \"phone_number\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/shipping_address/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "consequatur",
    "address_line1": "consequatur",
    "address_line2": "consequatur",
    "city": "consequatur",
    "state": "consequatur",
    "zip": "consequatur",
    "phone_number": "consequatur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/shipping_address/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'consequatur',
            'address_line1' => 'consequatur',
            'address_line2' => 'consequatur',
            'city' => 'consequatur',
            'state' => 'consequatur',
            'zip' => 'consequatur',
            'phone_number' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "message": "Shipping Address updated successfully",
    "data": {
        "name": "USA - AIR",
        "address_line1": "4720 Boston Way",
        "address_line2": "Suite C Shypt",
        "city": "Lanham",
        "state": "MD",
        "zip": "20706",
        "phone_number": "+1 301 317 0512",
        "updated_at": "2026-01-23T08:01:06.000000Z",
        "created_at": "2026-01-23T08:01:06.000000Z",
        "id": 1
    }
}
 

Request      

PUT api/shipping_address/{id}

PATCH api/shipping_address/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the shipping address. Example: 17

Body Parameters

name   string     

Example: consequatur

address_line1   string  optional    

Example: consequatur

address_line2   string  optional    

Example: consequatur

city   string  optional    

Example: consequatur

state   string  optional    

Example: consequatur

zip   string  optional    

Example: consequatur

phone_number   string  optional    

Example: consequatur

Delete Shipping address

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/shipping_address/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/shipping_address/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/shipping_address/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
      "message": "Shipping Address deleted successfully",     *
  }
 

Request      

DELETE api/shipping_address/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the shipping address. Example: 17

Storage Fees

List storage fee rates and the global grace period / reminder settings.

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/billing/storage-fee-rates" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/storage-fee-rates"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/storage-fee-rates';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/billing/storage-fee-rates could not be found."
}
 

Request      

GET api/billing/storage-fee-rates

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Store a newly created storage fee rate.

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/billing/storage-fee-rates" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"transport_mode\": \"TRAIN\",
    \"warehouse_location_id\": \"consequatur\",
    \"daily_rate\": 45
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/storage-fee-rates"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "transport_mode": "TRAIN",
    "warehouse_location_id": "consequatur",
    "daily_rate": 45
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/storage-fee-rates';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'transport_mode' => 'TRAIN',
            'warehouse_location_id' => 'consequatur',
            'daily_rate' => 45,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/billing/storage-fee-rates

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

transport_mode   string     

Example: TRAIN

Must be one of:
  • AIR
  • SEA
  • ROAD
  • TRAIN
warehouse_location_id   string     

The id of an existing record in the warehouse_locations table. Example: consequatur

daily_rate   number     

Must be at least 0. Example: 45

Update a storage fee rate.

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/billing/storage-fee-rates/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"transport_mode\": \"TRAIN\",
    \"warehouse_location_id\": \"consequatur\",
    \"daily_rate\": 45
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/storage-fee-rates/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "transport_mode": "TRAIN",
    "warehouse_location_id": "consequatur",
    "daily_rate": 45
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/storage-fee-rates/17';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'transport_mode' => 'TRAIN',
            'warehouse_location_id' => 'consequatur',
            'daily_rate' => 45,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/billing/storage-fee-rates/{id}

PATCH api/billing/storage-fee-rates/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the storage fee rate. Example: 17

Body Parameters

transport_mode   string     

Example: TRAIN

Must be one of:
  • AIR
  • SEA
  • ROAD
  • TRAIN
warehouse_location_id   string     

The id of an existing record in the warehouse_locations table. Example: consequatur

daily_rate   number     

Must be at least 0. Example: 45

Remove a storage fee rate.

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/billing/storage-fee-rates/17" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/storage-fee-rates/17"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/storage-fee-rates/17';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/billing/storage-fee-rates/{id}

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the storage fee rate. Example: 17

Update the global grace period / reminder day settings.

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/billing/storage-fee-settings" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"grace_period_days\": 17,
    \"reminder_days\": [
        \"consequatur\"
    ]
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/billing/storage-fee-settings"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "grace_period_days": 17,
    "reminder_days": [
        "consequatur"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/billing/storage-fee-settings';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'grace_period_days' => 17,
            'reminder_days' => [
                'consequatur',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/billing/storage-fee-settings

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

grace_period_days   integer     

Example: 17

reminder_days   string[]     

Support Tickets

Display a listing of the tickets.

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/tickets" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/tickets"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/tickets';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/tickets could not be found."
}
 

Request      

GET api/tickets

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Store a newly created ticket in storage.

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/tickets" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"subject\": \"vmqeopfuudtdsufvyvddq\",
    \"message\": \"consequatur\",
    \"reference\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/tickets"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "subject": "vmqeopfuudtdsufvyvddq",
    "message": "consequatur",
    "reference": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/tickets';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'subject' => 'vmqeopfuudtdsufvyvddq',
            'message' => 'consequatur',
            'reference' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/tickets

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

subject   string     

Must not be greater than 255 characters. Example: vmqeopfuudtdsufvyvddq

message   string     

Example: consequatur

reference   string  optional    

Example: consequatur

Display the specified ticket.

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/tickets/17" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/tickets/17"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/tickets/17';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/tickets/17 could not be found."
}
 

Request      

GET api/tickets/{ticket_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

ticket_id   integer     

The ID of the ticket. Example: 17

Add a reply to the specified ticket.

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/tickets/17/reply" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"message\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/tickets/17/reply"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "message": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/tickets/17/reply';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'message' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/tickets/{ticket_id}/reply

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

ticket_id   integer     

The ID of the ticket. Example: 17

Body Parameters

message   string     

Example: consequatur

PATCH api/tickets/{ticket_id}/status

requires authentication

Example request:
curl --request PATCH \
    "https://www.constell.agent.co.ug/api/tickets/17/status" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"open\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/tickets/17/status"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "open"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/tickets/17/status';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'status' => 'open',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PATCH api/tickets/{ticket_id}/status

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

ticket_id   integer     

The ID of the ticket. Example: 17

Body Parameters

status   string     

Example: open

Must be one of:
  • open
  • closed
  • resolved

PATCH api/tickets/messages/{ticketMessage_id}/read

requires authentication

Example request:
curl --request PATCH \
    "https://www.constell.agent.co.ug/api/tickets/messages/17/read" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/tickets/messages/17/read"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/tickets/messages/17/read';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PATCH api/tickets/messages/{ticketMessage_id}/read

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

ticketMessage_id   integer     

The ID of the ticketMessage. Example: 17

Attach images/PDFs to an existing ticket message (the initial message from store(), or a reply from reply()).

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/tickets/messages/17/attachments" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "files[]=@/tmp/phpQXxLjL" 
const url = new URL(
    "https://www.constell.agent.co.ug/api/tickets/messages/17/attachments"
);

const headers = {
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('files[]', document.querySelector('input[name="files[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/tickets/messages/17/attachments';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'files[]',
                'contents' => fopen('/tmp/phpQXxLjL', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/tickets/messages/{ticketMessage_id}/attachments

Headers

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

ticketMessage_id   integer     

The ID of the ticketMessage. Example: 17

Body Parameters

files   file[]     

Must be a file. Must not be greater than 10240 kilobytes.

Remove a single attachment from a ticket message.

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/tickets/messages/17/attachments" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"file_path\": \"consequatur\"
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/tickets/messages/17/attachments"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "file_path": "consequatur"
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/tickets/messages/17/attachments';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'file_path' => 'consequatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/tickets/messages/{ticketMessage_id}/attachments

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

ticketMessage_id   integer     

The ID of the ticketMessage. Example: 17

Body Parameters

file_path   string     

Example: consequatur

Transport Modes

List supported transport modes - open to any authenticated user since dropdowns across the system (orders, consolidations, manifests, pricing, client registration) all read from this list.

requires authentication

Example request:
curl --request GET \
    --get "https://www.constell.agent.co.ug/api/settings/transport-modes" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/transport-modes"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/transport-modes';
$response = $client->get(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "The route api/settings/transport-modes could not be found."
}
 

Request      

GET api/settings/transport-modes

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a new supported transport mode.

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/settings/transport-modes" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"consequatur\",
    \"name\": \"consequatur\",
    \"is_active\": false,
    \"is_default\": false,
    \"sort_order\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/transport-modes"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "consequatur",
    "name": "consequatur",
    "is_active": false,
    "is_default": false,
    "sort_order": 17
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/transport-modes';
$response = $client->post(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'code' => 'consequatur',
            'name' => 'consequatur',
            'is_active' => false,
            'is_default' => false,
            'sort_order' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/settings/transport-modes

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

Short code used as a prefix elsewhere, e.g. AIR Example: consequatur

name   string     

Display name, e.g. Air Freight Example: consequatur

is_active   boolean  optional    

Example: false

is_default   boolean  optional    

Example: false

sort_order   integer  optional    

Example: 17

Update a supported transport mode.

requires authentication

Example request:
curl --request PUT \
    "https://www.constell.agent.co.ug/api/settings/transport-modes/1" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"vmqeopfuudtdsufvyvddq\",
    \"is_active\": true,
    \"is_default\": true,
    \"sort_order\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/transport-modes/1"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "vmqeopfuudtdsufvyvddq",
    "is_active": true,
    "is_default": true,
    "sort_order": 17
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/transport-modes/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'vmqeopfuudtdsufvyvddq',
            'is_active' => true,
            'is_default' => true,
            'sort_order' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/settings/transport-modes/{id}

PATCH api/settings/transport-modes/{id}

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the transport mode. Example: 1

Body Parameters

code   string  optional    
name   string  optional    

Must not be greater than 100 characters. Example: vmqeopfuudtdsufvyvddq

is_active   boolean  optional    

Example: true

is_default   boolean  optional    

Example: true

sort_order   integer  optional    

Example: 17

Remove a supported transport mode. Blocked while it's the only active mode left, or while it's still referenced by real orders/pricing - deleting the code out from under historical records would strand them.

requires authentication

Example request:
curl --request DELETE \
    "https://www.constell.agent.co.ug/api/settings/transport-modes/1" \
    --header "bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://www.constell.agent.co.ug/api/settings/transport-modes/1"
);

const headers = {
    "bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/settings/transport-modes/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/settings/transport-modes/{id}

Headers

bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the transport mode. Example: 1

Warehouse

Receive a package at the origin warehouse using just a Client ID and a scanned courier tracking number - freight mode is derived from the Client ID's AIR-/SEA- prefix (User::parseClientCode()), not chosen by staff. If the client already has an unbilled order at this warehouse+destination+mode, the package joins it instead of creating a duplicate HWB, matching the spec's documented multi-package-per-HWB rule.

requires authentication

Example request:
curl --request POST \
    "https://www.constell.agent.co.ug/api/warehouse-receipt" \
    --header "Bearer: Token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_code\": \"consequatur\",
    \"warehouse_location_id\": 17,
    \"destination_location_id\": 17,
    \"tracking_number\": \"consequatur\",
    \"contents\": \"consequatur\",
    \"declared_value\": \"consequatur\",
    \"weight\": \"consequatur\",
    \"length\": \"consequatur\",
    \"width\": \"consequatur\",
    \"height\": \"consequatur\",
    \"warehouse_rack_id\": 17
}"
const url = new URL(
    "https://www.constell.agent.co.ug/api/warehouse-receipt"
);

const headers = {
    "Bearer": "Token",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_code": "consequatur",
    "warehouse_location_id": 17,
    "destination_location_id": 17,
    "tracking_number": "consequatur",
    "contents": "consequatur",
    "declared_value": "consequatur",
    "weight": "consequatur",
    "length": "consequatur",
    "width": "consequatur",
    "height": "consequatur",
    "warehouse_rack_id": 17
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.constell.agent.co.ug/api/warehouse-receipt';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Bearer' => 'Token',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'client_code' => 'consequatur',
            'warehouse_location_id' => 17,
            'destination_location_id' => 17,
            'tracking_number' => 'consequatur',
            'contents' => 'consequatur',
            'declared_value' => 'consequatur',
            'weight' => 'consequatur',
            'length' => 'consequatur',
            'width' => 'consequatur',
            'height' => 'consequatur',
            'warehouse_rack_id' => 17,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/warehouse-receipt

Headers

Bearer        

Example: Token

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

client_code   string     

E.g AIR-00001 Example: consequatur

warehouse_location_id   integer     

Example: 17

destination_location_id   integer     

Example: 17

tracking_number   string     

Courier-assigned tracking ID, scanned Example: consequatur

contents   string     

Example: consequatur

declared_value   numeric     

Example: consequatur

weight   numeric     

Example: consequatur

length   numeric     

Example: consequatur

width   numeric     

Example: consequatur

height   numeric     

Example: consequatur

warehouse_rack_id   integer  optional    

Optional shelf/bin to place the package in at intake. Example: 17