MENU navbar-image

Introduction

Welcome to the EasyDCIM APIv3 documentation.

This guide provides all the details you need to integrate with the EasyDCIM platform programmatically.
You’ll find descriptions of available endpoints, authentication methods, request and response examples, and usage notes.

The API is fully RESTful and returns responses in JSON format.
Use it to automate client management, device provisioning, and other system tasks efficiently.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Impersonation: If you are an admin with the impersonate-users ability, you can impersonate another user by sending their ID or email address in the X-Impersonate-User header.

The system will automatically detect whether the provided value is a numeric ID or an email address and impersonate the corresponding user.

API Tokens: You can generate and manage your API tokens directly in the EasyDCIM control panel. For detailed instructions, please visit the API Tokens documentation.

Admin Endpoints

System

Get Client Area Configuration

Returns current Client Area connection settings.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/client-area/config" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/client-area/config'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/client-area/config';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "mode": "local",
        "is_enabled": true,
        "full_url": "https://your-easydcim.com/client",
        "company_name": "EasyDCIM",
        "branding": {
            "colors_primary": {
                "50": "#EBF5FF",
                "100": "#E1EFFE",
                "200": "#C3DDFD",
                "300": "#A4CAFE",
                "400": "#83B3F7",
                "500": "#6BA5F5",
                "600": "#5396F4",
                "700": "#3A87F2",
                "800": "#1A73EF",
                "900": "#0E60D2"
            },
            "logo_url": "logo.png",
            "favicon_url": "favicon.ico",
            "custom_css": "",
            "custom_js_header": "",
            "custom_js_footer": ""
        },
        "visibility": {
            "services_table": {
                "column_type": true,
                "column_ip": true,
                "column_status": true,
                "column_location": true,
                "column_created_at": true
            },
            "my_account": {
                "two_factor_auth": true
            },
            "navigation": {
                "iso_images": true,
                "ssh_keys": true
            }
        },
        "default_client_area_language": "en",
        "languages": {
            "en": "English",
            "de": "German",
            "es": "Spanish"
        },
        "timezones": {
            "": "Select something...",
            "0": "Africa/Abidjan",
            "1": "Africa/Accra",
            "2": "Africa/Addis_Ababa",
            "3": "Africa/Algiers",
            "4": "Africa/Asmara",
            "5": "Africa/Bamako",
            "6": "Africa/Bangui",
            "7": "Africa/Banjul",
            "8": "Africa/Bissau",
            "9": "Africa/Blantyre",
            "10": "Africa/Brazzaville",
            "11": "Africa/Bujumbura",
            "12": "Africa/Cairo",
            "13": "Africa/Casablanca",
            "14": "Africa/Ceuta",
            "15": "Africa/Conakry",
            "16": "Africa/Dakar",
            "17": "Africa/Dar_es_Salaam",
            "18": "Africa/Djibouti",
            "19": "Africa/Douala",
            "20": "Africa/El_Aaiun",
            "21": "Africa/Freetown",
            "22": "Africa/Gaborone",
            "23": "Africa/Harare",
            "24": "Africa/Johannesburg",
            "25": "Africa/Juba",
            "26": "Africa/Kampala",
            "27": "Africa/Khartoum",
            "28": "Africa/Kigali",
            "29": "Africa/Kinshasa",
            "30": "Africa/Lagos",
            "31": "Africa/Libreville",
            "32": "Africa/Lome",
            "33": "Africa/Luanda",
            "34": "Africa/Lubumbashi",
            "35": "Africa/Lusaka",
            "36": "Africa/Malabo",
            "37": "Africa/Maputo",
            "38": "Africa/Maseru",
            "39": "Africa/Mbabane",
            "40": "Africa/Mogadishu",
            "41": "Africa/Monrovia",
            "42": "Africa/Nairobi",
            "43": "Africa/Ndjamena",
            "44": "Africa/Niamey",
            "45": "Africa/Nouakchott",
            "46": "Africa/Ouagadougou",
            "47": "Africa/Porto-Novo",
            "48": "Africa/Sao_Tome",
            "49": "Africa/Tripoli",
            "50": "Africa/Tunis",
            "51": "Africa/Windhoek",
            "52": "America/Adak",
            "53": "America/Anchorage",
            "54": "America/Anguilla",
            "55": "America/Antigua",
            "56": "America/Araguaina",
            "57": "America/Argentina/Buenos_Aires",
            "58": "America/Argentina/Catamarca",
            "59": "America/Argentina/Cordoba",
            "60": "America/Argentina/Jujuy",
            "61": "America/Argentina/La_Rioja",
            "62": "America/Argentina/Mendoza",
            "63": "America/Argentina/Rio_Gallegos",
            "64": "America/Argentina/Salta",
            "65": "America/Argentina/San_Juan",
            "66": "America/Argentina/San_Luis",
            "67": "America/Argentina/Tucuman",
            "68": "America/Argentina/Ushuaia",
            "69": "America/Aruba",
            "70": "America/Asuncion",
            "71": "America/Atikokan",
            "72": "America/Bahia",
            "73": "America/Bahia_Banderas",
            "74": "America/Barbados",
            "75": "America/Belem",
            "76": "America/Belize",
            "77": "America/Blanc-Sablon",
            "78": "America/Boa_Vista",
            "79": "America/Bogota",
            "80": "America/Boise",
            "81": "America/Cambridge_Bay",
            "82": "America/Campo_Grande",
            "83": "America/Cancun",
            "84": "America/Caracas",
            "85": "America/Cayenne",
            "86": "America/Cayman",
            "87": "America/Chicago",
            "88": "America/Chihuahua",
            "89": "America/Ciudad_Juarez",
            "90": "America/Costa_Rica",
            "91": "America/Creston",
            "92": "America/Cuiaba",
            "93": "America/Curacao",
            "94": "America/Danmarkshavn",
            "95": "America/Dawson",
            "96": "America/Dawson_Creek",
            "97": "America/Denver",
            "98": "America/Detroit",
            "99": "America/Dominica",
            "100": "America/Edmonton",
            "101": "America/Eirunepe",
            "102": "America/El_Salvador",
            "103": "America/Fort_Nelson",
            "104": "America/Fortaleza",
            "105": "America/Glace_Bay",
            "106": "America/Goose_Bay",
            "107": "America/Grand_Turk",
            "108": "America/Grenada",
            "109": "America/Guadeloupe",
            "110": "America/Guatemala",
            "111": "America/Guayaquil",
            "112": "America/Guyana",
            "113": "America/Halifax",
            "114": "America/Havana",
            "115": "America/Hermosillo",
            "116": "America/Indiana/Indianapolis",
            "117": "America/Indiana/Knox",
            "118": "America/Indiana/Marengo",
            "119": "America/Indiana/Petersburg",
            "120": "America/Indiana/Tell_City",
            "121": "America/Indiana/Vevay",
            "122": "America/Indiana/Vincennes",
            "123": "America/Indiana/Winamac",
            "124": "America/Inuvik",
            "125": "America/Iqaluit",
            "126": "America/Jamaica",
            "127": "America/Juneau",
            "128": "America/Kentucky/Louisville",
            "129": "America/Kentucky/Monticello",
            "130": "America/Kralendijk",
            "131": "America/La_Paz",
            "132": "America/Lima",
            "133": "America/Los_Angeles",
            "134": "America/Lower_Princes",
            "135": "America/Maceio",
            "136": "America/Managua",
            "137": "America/Manaus",
            "138": "America/Marigot",
            "139": "America/Martinique",
            "140": "America/Matamoros",
            "141": "America/Mazatlan",
            "142": "America/Menominee",
            "143": "America/Merida",
            "144": "America/Metlakatla",
            "145": "America/Mexico_City",
            "146": "America/Miquelon",
            "147": "America/Moncton",
            "148": "America/Monterrey",
            "149": "America/Montevideo",
            "150": "America/Montserrat",
            "151": "America/Nassau",
            "152": "America/New_York",
            "153": "America/Nome",
            "154": "America/Noronha",
            "155": "America/North_Dakota/Beulah",
            "156": "America/North_Dakota/Center",
            "157": "America/North_Dakota/New_Salem",
            "158": "America/Nuuk",
            "159": "America/Ojinaga",
            "160": "America/Panama",
            "161": "America/Paramaribo",
            "162": "America/Phoenix",
            "163": "America/Port-au-Prince",
            "164": "America/Port_of_Spain",
            "165": "America/Porto_Velho",
            "166": "America/Puerto_Rico",
            "167": "America/Punta_Arenas",
            "168": "America/Rankin_Inlet",
            "169": "America/Recife",
            "170": "America/Regina",
            "171": "America/Resolute",
            "172": "America/Rio_Branco",
            "173": "America/Santarem",
            "174": "America/Santiago",
            "175": "America/Santo_Domingo",
            "176": "America/Sao_Paulo",
            "177": "America/Scoresbysund",
            "178": "America/Sitka",
            "179": "America/St_Barthelemy",
            "180": "America/St_Johns",
            "181": "America/St_Kitts",
            "182": "America/St_Lucia",
            "183": "America/St_Thomas",
            "184": "America/St_Vincent",
            "185": "America/Swift_Current",
            "186": "America/Tegucigalpa",
            "187": "America/Thule",
            "188": "America/Tijuana",
            "189": "America/Toronto",
            "190": "America/Tortola",
            "191": "America/Vancouver",
            "192": "America/Whitehorse",
            "193": "America/Winnipeg",
            "194": "America/Yakutat",
            "195": "Antarctica/Casey",
            "196": "Antarctica/Davis",
            "197": "Antarctica/DumontDUrville",
            "198": "Antarctica/Macquarie",
            "199": "Antarctica/Mawson",
            "200": "Antarctica/McMurdo",
            "201": "Antarctica/Palmer",
            "202": "Antarctica/Rothera",
            "203": "Antarctica/Syowa",
            "204": "Antarctica/Troll",
            "205": "Antarctica/Vostok",
            "206": "Arctic/Longyearbyen",
            "207": "Asia/Aden",
            "208": "Asia/Almaty",
            "209": "Asia/Amman",
            "210": "Asia/Anadyr",
            "211": "Asia/Aqtau",
            "212": "Asia/Aqtobe",
            "213": "Asia/Ashgabat",
            "214": "Asia/Atyrau",
            "215": "Asia/Baghdad",
            "216": "Asia/Bahrain",
            "217": "Asia/Baku",
            "218": "Asia/Bangkok",
            "219": "Asia/Barnaul",
            "220": "Asia/Beirut",
            "221": "Asia/Bishkek",
            "222": "Asia/Brunei",
            "223": "Asia/Chita",
            "224": "Asia/Colombo",
            "225": "Asia/Damascus",
            "226": "Asia/Dhaka",
            "227": "Asia/Dili",
            "228": "Asia/Dubai",
            "229": "Asia/Dushanbe",
            "230": "Asia/Famagusta",
            "231": "Asia/Gaza",
            "232": "Asia/Hebron",
            "233": "Asia/Ho_Chi_Minh",
            "234": "Asia/Hong_Kong",
            "235": "Asia/Hovd",
            "236": "Asia/Irkutsk",
            "237": "Asia/Jakarta",
            "238": "Asia/Jayapura",
            "239": "Asia/Jerusalem",
            "240": "Asia/Kabul",
            "241": "Asia/Kamchatka",
            "242": "Asia/Karachi",
            "243": "Asia/Kathmandu",
            "244": "Asia/Khandyga",
            "245": "Asia/Kolkata",
            "246": "Asia/Krasnoyarsk",
            "247": "Asia/Kuala_Lumpur",
            "248": "Asia/Kuching",
            "249": "Asia/Kuwait",
            "250": "Asia/Macau",
            "251": "Asia/Magadan",
            "252": "Asia/Makassar",
            "253": "Asia/Manila",
            "254": "Asia/Muscat",
            "255": "Asia/Nicosia",
            "256": "Asia/Novokuznetsk",
            "257": "Asia/Novosibirsk",
            "258": "Asia/Omsk",
            "259": "Asia/Oral",
            "260": "Asia/Phnom_Penh",
            "261": "Asia/Pontianak",
            "262": "Asia/Pyongyang",
            "263": "Asia/Qatar",
            "264": "Asia/Qostanay",
            "265": "Asia/Qyzylorda",
            "266": "Asia/Riyadh",
            "267": "Asia/Sakhalin",
            "268": "Asia/Samarkand",
            "269": "Asia/Seoul",
            "270": "Asia/Shanghai",
            "271": "Asia/Singapore",
            "272": "Asia/Srednekolymsk",
            "273": "Asia/Taipei",
            "274": "Asia/Tashkent",
            "275": "Asia/Tbilisi",
            "276": "Asia/Tehran",
            "277": "Asia/Thimphu",
            "278": "Asia/Tokyo",
            "279": "Asia/Tomsk",
            "280": "Asia/Ulaanbaatar",
            "281": "Asia/Urumqi",
            "282": "Asia/Ust-Nera",
            "283": "Asia/Vientiane",
            "284": "Asia/Vladivostok",
            "285": "Asia/Yakutsk",
            "286": "Asia/Yangon",
            "287": "Asia/Yekaterinburg",
            "288": "Asia/Yerevan",
            "289": "Atlantic/Azores",
            "290": "Atlantic/Bermuda",
            "291": "Atlantic/Canary",
            "292": "Atlantic/Cape_Verde",
            "293": "Atlantic/Faroe",
            "294": "Atlantic/Madeira",
            "295": "Atlantic/Reykjavik",
            "296": "Atlantic/South_Georgia",
            "297": "Atlantic/St_Helena",
            "298": "Atlantic/Stanley",
            "299": "Australia/Adelaide",
            "300": "Australia/Brisbane",
            "301": "Australia/Broken_Hill",
            "302": "Australia/Darwin",
            "303": "Australia/Eucla",
            "304": "Australia/Hobart",
            "305": "Australia/Lindeman",
            "306": "Australia/Lord_Howe",
            "307": "Australia/Melbourne",
            "308": "Australia/Perth",
            "309": "Australia/Sydney",
            "310": "Europe/Amsterdam",
            "311": "Europe/Andorra",
            "312": "Europe/Astrakhan",
            "313": "Europe/Athens",
            "314": "Europe/Belgrade",
            "315": "Europe/Berlin",
            "316": "Europe/Bratislava",
            "317": "Europe/Brussels",
            "318": "Europe/Bucharest",
            "319": "Europe/Budapest",
            "320": "Europe/Busingen",
            "321": "Europe/Chisinau",
            "322": "Europe/Copenhagen",
            "323": "Europe/Dublin",
            "324": "Europe/Gibraltar",
            "325": "Europe/Guernsey",
            "326": "Europe/Helsinki",
            "327": "Europe/Isle_of_Man",
            "328": "Europe/Istanbul",
            "329": "Europe/Jersey",
            "330": "Europe/Kaliningrad",
            "331": "Europe/Kirov",
            "332": "Europe/Kyiv",
            "333": "Europe/Lisbon",
            "334": "Europe/Ljubljana",
            "335": "Europe/London",
            "336": "Europe/Luxembourg",
            "337": "Europe/Madrid",
            "338": "Europe/Malta",
            "339": "Europe/Mariehamn",
            "340": "Europe/Minsk",
            "341": "Europe/Monaco",
            "342": "Europe/Moscow",
            "343": "Europe/Oslo",
            "344": "Europe/Paris",
            "345": "Europe/Podgorica",
            "346": "Europe/Prague",
            "347": "Europe/Riga",
            "348": "Europe/Rome",
            "349": "Europe/Samara",
            "350": "Europe/San_Marino",
            "351": "Europe/Sarajevo",
            "352": "Europe/Saratov",
            "353": "Europe/Simferopol",
            "354": "Europe/Skopje",
            "355": "Europe/Sofia",
            "356": "Europe/Stockholm",
            "357": "Europe/Tallinn",
            "358": "Europe/Tirane",
            "359": "Europe/Ulyanovsk",
            "360": "Europe/Vaduz",
            "361": "Europe/Vatican",
            "362": "Europe/Vienna",
            "363": "Europe/Vilnius",
            "364": "Europe/Volgograd",
            "365": "Europe/Warsaw",
            "366": "Europe/Zagreb",
            "367": "Europe/Zurich",
            "368": "Indian/Antananarivo",
            "369": "Indian/Chagos",
            "370": "Indian/Christmas",
            "371": "Indian/Cocos",
            "372": "Indian/Comoro",
            "373": "Indian/Kerguelen",
            "374": "Indian/Mahe",
            "375": "Indian/Maldives",
            "376": "Indian/Mauritius",
            "377": "Indian/Mayotte",
            "378": "Indian/Reunion",
            "379": "Pacific/Apia",
            "380": "Pacific/Auckland",
            "381": "Pacific/Bougainville",
            "382": "Pacific/Chatham",
            "383": "Pacific/Chuuk",
            "384": "Pacific/Easter",
            "385": "Pacific/Efate",
            "386": "Pacific/Fakaofo",
            "387": "Pacific/Fiji",
            "388": "Pacific/Funafuti",
            "389": "Pacific/Galapagos",
            "390": "Pacific/Gambier",
            "391": "Pacific/Guadalcanal",
            "392": "Pacific/Guam",
            "393": "Pacific/Honolulu",
            "394": "Pacific/Kanton",
            "395": "Pacific/Kiritimati",
            "396": "Pacific/Kosrae",
            "397": "Pacific/Kwajalein",
            "398": "Pacific/Majuro",
            "399": "Pacific/Marquesas",
            "400": "Pacific/Midway",
            "401": "Pacific/Nauru",
            "402": "Pacific/Niue",
            "403": "Pacific/Norfolk",
            "404": "Pacific/Noumea",
            "405": "Pacific/Pago_Pago",
            "406": "Pacific/Palau",
            "407": "Pacific/Pitcairn",
            "408": "Pacific/Pohnpei",
            "409": "Pacific/Port_Moresby",
            "410": "Pacific/Rarotonga",
            "411": "Pacific/Saipan",
            "412": "Pacific/Tahiti",
            "413": "Pacific/Tarawa",
            "414": "Pacific/Tongatapu",
            "415": "Pacific/Wake",
            "416": "Pacific/Wallis",
            "417": "UTC"
        }
    }
}
 

Request   

GET api/v3/admin/client-area/config

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Update Client Area Configuration

requires authentication

Updates the Client Area connection and branding settings.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/client-area/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"mode\": \"external\",
    \"full_url\": \"https:\\/\\/client.example.com\",
    \"is_enabled\": true,
    \"branding\": {
        \"colors_primary\": {
            \"500\": \"#6BA5F5\",
            \"700\": \"#3A87F2\",
            \"900\": \"#0E60D2\"
        },
        \"logo_url\": \"data:image\\/svg+xml;base64,PHN2ZyB3aWR0aD0i...\",
        \"logo_dark_url\": \"data:image\\/svg+xml;base64,PHN2ZyB3aWR0aD0i...\",
        \"favicon_url\": \"data:image\\/png;base64,iVBORw0K...\",
        \"custom_css\": \"body { background: #f4f4f4; }\",
        \"custom_js_header\": \"console.log(\'Header loaded\');\",
        \"custom_js_footer\": \"console.log(\'Footer loaded\');\"
    },
    \"visibility\": {
        \"services_table\": {
            \"column_type\": true,
            \"column_ip\": false,
            \"column_status\": true,
            \"column_location\": false,
            \"column_created_at\": true,
            \"column_model\": true
        },
        \"my_account\": {
            \"two_factor_auth\": true
        },
        \"navigation\": {
            \"iso_images\": true,
            \"ssh_keys\": false
        }
    }
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/client-area/config'
payload = {
    "mode": "external",
    "full_url": "https:\/\/client.example.com",
    "is_enabled": true,
    "branding": {
        "colors_primary": {
            "500": "#6BA5F5",
            "700": "#3A87F2",
            "900": "#0E60D2"
        },
        "logo_url": "data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0i...",
        "logo_dark_url": "data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0i...",
        "favicon_url": "data:image\/png;base64,iVBORw0K...",
        "custom_css": "body { background: #f4f4f4; }",
        "custom_js_header": "console.log('Header loaded');",
        "custom_js_footer": "console.log('Footer loaded');"
    },
    "visibility": {
        "services_table": {
            "column_type": true,
            "column_ip": false,
            "column_status": true,
            "column_location": false,
            "column_created_at": true,
            "column_model": true
        },
        "my_account": {
            "two_factor_auth": true
        },
        "navigation": {
            "iso_images": true,
            "ssh_keys": false
        }
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/client-area/config';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'mode' => 'external',
            'full_url' => 'https://client.example.com',
            'is_enabled' => true,
            'branding' => [
                'colors_primary' => [
                    500 => '#6BA5F5',
                    700 => '#3A87F2',
                    900 => '#0E60D2',
                ],
                'logo_url' => 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0i...',
                'logo_dark_url' => 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0i...',
                'favicon_url' => 'data:image/png;base64,iVBORw0K...',
                'custom_css' => 'body { background: #f4f4f4; }',
                'custom_js_header' => 'console.log(\'Header loaded\');',
                'custom_js_footer' => 'console.log(\'Footer loaded\');',
            ],
            'visibility' => [
                'services_table' => [
                    'column_type' => true,
                    'column_ip' => false,
                    'column_status' => true,
                    'column_location' => false,
                    'column_created_at' => true,
                    'column_model' => true,
                ],
                'my_account' => [
                    'two_factor_auth' => true,
                ],
                'navigation' => [
                    'iso_images' => true,
                    'ssh_keys' => false,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/client-area/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

mode   string  optional    

Client Area mode. Either "local" (embedded) or "external" (remote URL). Example: external

Must be one of:
  • local
  • external
full_url   string  optional    

The full URL of the external Client Area (used only in external mode). Must be a valid URL. Example: https://client.example.com

is_enabled   boolean  optional    

Boolean flag indicating whether the Client Area is enabled. Example: true

branding   object  optional    

Branding settings for the Client Area. Only Base64-encoded images are allowed for logos and favicon.

colors_primary   string[]  optional    

Must match the regex /^#[0-9A-Fa-f]{6}$/.

logo_url   string  optional    

Example: data:image/svg+xml;base64,PHN2ZyB3aWR0aD0i...

logo_dark_url   string  optional    

Example: data:image/svg+xml;base64,PHN2ZyB3aWR0aD0i...

favicon_url   string  optional    

Example: data:image/png;base64,iVBORw0K...

custom_css   string  optional    

Example: body { background: #f4f4f4; }

custom_js_header   string  optional    

Example: console.log('Header loaded');

custom_js_footer   string  optional    

Example: console.log('Footer loaded');

visibility   object  optional    

Visibility settings for Client Area UI elements. Each flag is a boolean (true = visible, false = hidden).

services_table   object  optional    
column_type   boolean  optional    

Example: true

column_ip   boolean  optional    

Example: false

column_status   boolean  optional    

Example: true

column_location   boolean  optional    

Example: false

column_created_at   boolean  optional    

Example: true

column_model   boolean  optional    

Example: true

my_account   object  optional    
two_factor_auth   boolean  optional    

Example: true

navigation   object  optional    
iso_images   boolean  optional    

Example: true

ssh_keys   boolean  optional    

Example: false

Get System Configuration

requires authentication

Returns current system configuration for admin area.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/system/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/system/config'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/system/config';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "appearance": {
            "table_view": "default",
            "graphs_driver": "Components\\Libs\\Graphs\\Drivers\\ChartJSDriver",
            "custom_backend_css": "",
            "email_footer": "",
            "email_css": ""
        },
        "company": {
            "name": "EasyDCIM",
            "email": "[email protected]"
        },
        "license": {
            "license_key": "license_key",
            "license_status": "Active",
            "devices_limit": 120,
            "valid_domain": "easydcim_hostname",
            "current_devices": 68
        },
        "localization": {
            "timezone": "365",
            "admin_language": "en",
            "default_client_language": "en",
            "available_languages": {
                "backend": {
                    "en": "English"
                },
                "client": {
                    "en": "English",
                    "de": "German",
                    "es": "Spanish"
                }
            }
        },
        "meta": {
            "app_version": "1.23",
            "php_version": "8.3.25"
        },
        "modules": {
            "os": {
                "0": "OSInstallation",
                "1": "OS Installation",
                "version": "2.1.0"
            },
            "ipmi": {
                "0": "IpmiIntegration",
                "1": "IPMI Integration",
                "version": "1.5.5"
            },
            "ip-manager": {
                "0": "IPManager",
                "1": "IP Address Management",
                "version": "1.8.5"
            },
            "advanced-monitoring": {
                "0": "AdvancedMonitoring",
                "1": "Advanced Monitoring",
                "version": "1.1.1"
            },
            "dns-manager": {
                "0": "DNSManager",
                "1": "DNS Management",
                "version": "1.4.2"
            },
            "pdu-manager": {
                "0": "PDUManager",
                "1": "PDU Management",
                "version": "1.2.7"
            },
            "password-manager": {
                "0": "PasswordManager",
                "1": "Password Management",
                "version": "1.1"
            },
            "ldap": {
                "0": "LDAPAuthentication",
                "1": "LDAP Authentication",
                "version": "1.0.0"
            },
            "two-factor-auth": {
                "0": "TwoFactorAuth",
                "1": "Two-Factor Authentication",
                "version": "1.2.0"
            },
            "usage-collector": {
                "0": "UsageCollector",
                "1": "Usage Collector",
                "version": "1.3.5"
            },
            "switches-manager": {
                "0": "SwitchesManager",
                "1": "Switch Management",
                "version": "1.4.3"
            }
        },
        "system": {
            "debug_mode": false,
            "ssh_port": 22,
            "allowed_ips": [],
            "allowed_api_ips": []
        },
        "urls": {
            "base": "https://your-easydcim.com"
        }
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/system/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Health Check

requires authentication

Performs a full system health check, verifying core components: Redis, database, queue, web server (Apache), and remote agents.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/system/health-check" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/system/health-check'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/system/health-check';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "database": {
            "status": "success",
            "driver": "mariadb",
            "database": "db_name",
            "version": "10.11.14-MariaDB-0+deb12u2",
            "host": "127.0.0.1",
            "port": "db_port",
            "query_time_ms": 0.85,
            "size_mb": "225.98",
            "message": "Successfully connected to database \"db_name\"."
        },
        "apache2": {
            "status": "success",
            "server_url": "https://your-easydcim.com",
            "http_code": 200
        },
        "redis": {
            "status": "success",
            "data": {
                "data": {
                    "status": "success",
                    "host": "127.0.0.1",
                    "port": "redis_port",
                    "version": "7.0.15",
                    "uptime": 1218174,
                    "memory": "789.13M"
                },
                "cache": {
                    "status": "success",
                    "host": "127.0.0.1",
                    "port": "redis_port",
                    "version": "7.0.15",
                    "uptime": 1218174,
                    "memory": "1.68M"
                }
            }
        },
        "queue": {
            "status": "success",
            "queues": [
                {
                    "Name": "name",
                    "PID": "pid",
                    "Status": "running",
                    "Workers": "worker_name",
                    "Balancing": "auto"
                }
            ]
        },
        "agents": [
            {
                "id": 1,
                "name": "Local",
                "status": "success",
                "database": {
                    "status": "success",
                    "message": "Successfully connected to the DB: agent_db_name"
                },
                "queue": {
                    "status": "success",
                    "queues": [
                        {
                            "Name": "name",
                            "PID": "pid",
                            "Status": "running",
                            "Workers": "worker_name",
                            "Balancing": "auto"
                        }
                    ]
                },
                "sshConnection": {
                    "status": "success"
                }
            }
        ]
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/system/health-check

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Locations

List Locations

requires authentication

Returns a paginated list of locations

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/locations?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/locations'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/locations';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 3009,
            "app_id": null,
            "name": "Lueilwitz, Upton and Jerde",
            "address": "880 Mann Shoal\nAndersonstad, FL 82814",
            "city": "South Henry",
            "state": "Maryland",
            "description": "Nemo sequi nesciunt ipsa ab laudantium. Praesentium illum minus quisquam perferendis omnis ut in. Enim et id tempora corporis.",
            "notes": "Ut ut et dolor consequuntur qui est blanditiis saepe. Unde et eligendi et nam. Ex dolorem perspiciatis voluptatem et et quis laboriosam. Sed repellendus culpa voluptas maiores.",
            "emergency": "0",
            "phone": "254-895-0006",
            "flag": "USA.png",
            "created_at": "2026-07-10 09:50:04",
            "updated_at": "2026-07-10 09:50:04"
        },
        {
            "id": 3010,
            "app_id": null,
            "name": "Haley PLC",
            "address": "6217 Bednar Flats Suite 567\nKeeblershire, CA 13072-1184",
            "city": "North Nola",
            "state": "Virginia",
            "description": "Est doloribus nihil illum eum cum. Dolorem cum laboriosam error accusantium est et laborum fuga. Omnis atque tempora natus dolores omnis.",
            "notes": "Tempora maiores iure reiciendis necessitatibus. Consectetur est dolorem voluptatum ratione voluptas quia voluptatem. Unde qui provident atque.",
            "emergency": "1",
            "phone": "+1 (562) 724-1464",
            "flag": "Canada.png",
            "created_at": "2026-07-10 09:50:04",
            "updated_at": "2026-07-10 09:50:04"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/locations?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/locations",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/locations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, city, state. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, city, state. Example: id

Show location

requires authentication

Display detailed information about a single location by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/locations/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/locations/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/locations/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 3011,
        "app_id": null,
        "name": "Schuster, Bahringer and Altenwerth",
        "address": "62798 Cecelia Flat Suite 287\nLittlefurt, NC 42564",
        "city": "East Dustin",
        "state": "Arizona",
        "description": "Neque illo qui aliquam. Et corrupti similique eum quo id soluta. Impedit explicabo impedit facilis a explicabo sunt.",
        "notes": "Officia sed tempora et aliquid harum blanditiis omnis accusamus. Accusamus dolor officia optio voluptas exercitationem voluptatem. Dolor corporis illo aliquid id excepturi dolor.",
        "emergency": "1",
        "phone": "+1.540.238.5157",
        "flag": "Canada.png",
        "created_at": "2026-07-10 09:50:05",
        "updated_at": "2026-07-10 09:50:05"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/locations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the location. Example: 1

Create location

requires authentication

Store a new location in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/locations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"New York Data Center\",
    \"address\": \"1234 Madison Ave, New York, NY\",
    \"phone\": \"+1 212-555-0199\",
    \"description\": \"Main East Coast colocation facility.\",
    \"manager_id\": 42,
    \"remote_agent\": 7
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/locations'
payload = {
    "name": "New York Data Center",
    "address": "1234 Madison Ave, New York, NY",
    "phone": "+1 212-555-0199",
    "description": "Main East Coast colocation facility.",
    "manager_id": 42,
    "remote_agent": 7
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/locations';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'New York Data Center',
            'address' => '1234 Madison Ave, New York, NY',
            'phone' => '+1 212-555-0199',
            'description' => 'Main East Coast colocation facility.',
            'manager_id' => 42,
            'remote_agent' => 7,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 3012,
        "app_id": null,
        "name": "Nicolas, Doyle and Dickinson",
        "address": "64031 Goodwin Inlet\nEast Kaciebury, UT 85316",
        "city": "Ludwigbury",
        "state": "California",
        "description": "Maxime veritatis dignissimos a cupiditate soluta quasi provident. Nostrum et sint est quidem sit sint omnis reprehenderit. Ea similique sed labore maiores ratione accusamus amet. Natus consequatur autem distinctio rerum maiores.",
        "notes": "Voluptatem beatae et quam quasi tempora. Dolor dignissimos iure dolorem quod. Et occaecati culpa et.",
        "emergency": "1",
        "phone": "+1.972.519.9667",
        "flag": "UK.png",
        "created_at": "2026-07-10 09:50:06",
        "updated_at": "2026-07-10 09:50:06"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/locations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The unique name of the location. Must not be greater than 255 characters. Example: New York Data Center

address   string  optional    

The physical address of the location. Must not be greater than 500 characters. Example: 1234 Madison Ave, New York, NY

phone   string  optional    

A contact phone number for the location. Must not be greater than 50 characters. Example: +1 212-555-0199

description   string  optional    

Additional details about the location. Must not be greater than 1000 characters. Example: Main East Coast colocation facility.

manager_id   integer  optional    

The ID of the user who manages this location. The id of an existing record in the users table. Example: 42

remote_agent   integer  optional    

The ID of the remote agent linked with this location (optional). Example: 7

Update location

requires authentication

Updates the specified location with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/locations/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Warsaw DC-1\",
    \"address\": \"ul. Marszałkowska 10, Warsaw, PL\",
    \"phone\": \"+48 22 123 45 67\",
    \"description\": \"Primary colocation facility in Warsaw.\",
    \"manager_id\": 12,
    \"remote_agent\": 3
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/locations/5'
payload = {
    "name": "Warsaw DC-1",
    "address": "ul. Marszałkowska 10, Warsaw, PL",
    "phone": "+48 22 123 45 67",
    "description": "Primary colocation facility in Warsaw.",
    "manager_id": 12,
    "remote_agent": 3
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/locations/5';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Warsaw DC-1',
            'address' => 'ul. Marszałkowska 10, Warsaw, PL',
            'phone' => '+48 22 123 45 67',
            'description' => 'Primary colocation facility in Warsaw.',
            'manager_id' => 12,
            'remote_agent' => 3,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 3013,
        "app_id": null,
        "name": "Borer-Hansen",
        "address": "43384 Wintheiser Knolls\nMannberg, GA 93163-3230",
        "city": "Johnsonhaven",
        "state": "Colorado",
        "description": "Magni qui laboriosam quo est. Amet et eius at explicabo aut expedita natus. Quis qui qui est id optio.",
        "notes": "Autem fugiat numquam et. Delectus neque veniam fugiat. Accusamus omnis optio error dolorem velit at quia.",
        "emergency": "0",
        "phone": "+1 (551) 482-0693",
        "flag": "Germany.png",
        "created_at": "2026-07-10 09:50:06",
        "updated_at": "2026-07-10 09:50:06"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/locations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the location. Example: 5

Body Parameters

name   string  optional    

The unique name of the location. Must not be greater than 255 characters. Example: Warsaw DC-1

address   string  optional    

The physical address of the location. Must not be greater than 500 characters. Example: ul. Marszałkowska 10, Warsaw, PL

phone   string  optional    

A contact phone number for the location. Must not be greater than 50 characters. Example: +48 22 123 45 67

description   string  optional    

Additional details about the location. Must not be greater than 1000 characters. Example: Primary colocation facility in Warsaw.

manager_id   integer  optional    

The ID of the user who manages this location. The id of an existing record in the users table. Example: 12

remote_agent   integer  optional    

The ID of the remote agent linked with this location (optional). Example: 3

Delete location

requires authentication

Removes the specified location from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/locations/7" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/locations/7'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/locations/7';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/locations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the location. Example: 7

Racks

List Racks

requires authentication

Returns a paginated list of racks

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/racks?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/racks'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/racks';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 617,
            "name": "repellendus",
            "floor_id": 586,
            "location_id": 3014,
            "description": "Maiores aut tempora est laudantium sint.",
            "room": "cupiditate",
            "units_number": 95,
            "weight": 152,
            "speed": 1000,
            "manager_id": 5450,
            "location": {
                "id": 3014,
                "app_id": null,
                "name": "Altenwerth and Sons",
                "address": "17302 Harber Trafficway Suite 326\nNew Opheliaberg, OR 69209",
                "city": "Stantonburgh",
                "state": "Alaska",
                "description": "Non ipsum et ratione tempore est. Delectus architecto eaque ut dolorem magni voluptas debitis laboriosam. Odit rerum voluptatem sapiente similique quas numquam delectus fugit.",
                "notes": "Sed placeat ut voluptates facere. Aut iusto et et modi iure qui assumenda occaecati. Earum et autem voluptas officiis quis consectetur.",
                "emergency": "0",
                "phone": "+1-623-328-2105",
                "flag": "Canada.png",
                "created_at": "2026-07-10 09:50:07",
                "updated_at": "2026-07-10 09:50:07"
            },
            "floor": {
                "id": 586,
                "name": "ut",
                "number": 81,
                "rows": 5,
                "columns": 4,
                "racks": [
                    {
                        "id": 617,
                        "name": "repellendus"
                    }
                ],
                "created_at": "2026-07-10 09:50:07",
                "updated_at": "2026-07-10 09:50:07"
            },
            "manager": {
                "id": 5450,
                "username": "randi.conn",
                "email": "[email protected]",
                "name": "Felipa Hane",
                "firstname": "Felipa",
                "lastname": "Hane",
                "gender": "0",
                "avatar": "//www.gravatar.com/avatar/5e9de79a7a5f61531be4c46af13edf3e?s=30&d=mm&r=g",
                "large_avatar": "//www.gravatar.com/avatar/5e9de79a7a5f61531be4c46af13edf3e?s=130&d=mm&r=g",
                "company": null,
                "active": 1,
                "status": "Active",
                "address1": null,
                "address2": null,
                "city": null,
                "state": null,
                "postcode": null,
                "country_code": null,
                "country_name": "United States",
                "locale": null,
                "timezone": 0,
                "last_login": null
            },
            "created_at": "2026-07-10 09:50:07",
            "updated_at": "2026-07-10 09:50:07"
        },
        {
            "id": 618,
            "name": "error",
            "floor_id": 587,
            "location_id": 3016,
            "description": "Ut voluptatem fuga molestias numquam est maxime.",
            "room": "cum",
            "units_number": 81,
            "weight": 90,
            "speed": 1000,
            "manager_id": 5453,
            "location": {
                "id": 3016,
                "app_id": null,
                "name": "Dooley, Dicki and Nader",
                "address": "5244 Hazel Road\nJakubowskistad, DC 52363",
                "city": "Port Zola",
                "state": "Alabama",
                "description": "Nulla tempore ullam voluptates. Eum officiis rerum voluptas possimus placeat ut. Quo nam quia est repellat. Molestiae quasi et odio ut iusto.",
                "notes": "Rerum placeat earum velit et explicabo qui. Quae omnis cumque ad in non. Natus et aperiam aut dolorem. Quasi ex neque itaque iure.",
                "emergency": "1",
                "phone": "(480) 240-6102",
                "flag": "Canada.png",
                "created_at": "2026-07-10 09:50:08",
                "updated_at": "2026-07-10 09:50:08"
            },
            "floor": {
                "id": 587,
                "name": "nam",
                "number": 12,
                "rows": 8,
                "columns": 2,
                "racks": [
                    {
                        "id": 618,
                        "name": "error"
                    }
                ],
                "created_at": "2026-07-10 09:50:08",
                "updated_at": "2026-07-10 09:50:08"
            },
            "manager": {
                "id": 5453,
                "username": "herminia17",
                "email": "[email protected]",
                "name": "Dusty McClure",
                "firstname": "Dusty",
                "lastname": "McClure",
                "gender": "0",
                "avatar": "//www.gravatar.com/avatar/5e3391c70bbb8ad86dfbf3e061e25255?s=30&d=mm&r=g",
                "large_avatar": "//www.gravatar.com/avatar/5e3391c70bbb8ad86dfbf3e061e25255?s=130&d=mm&r=g",
                "company": null,
                "active": 1,
                "status": "Active",
                "address1": null,
                "address2": null,
                "city": null,
                "state": null,
                "postcode": null,
                "country_code": null,
                "country_name": "United States",
                "locale": null,
                "timezone": 0,
                "last_login": null
            },
            "created_at": "2026-07-10 09:50:08",
            "updated_at": "2026-07-10 09:50:08"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/racks?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/racks",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/racks

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, location_id, floor_id, units_number, weight, manager_id. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, location_id, floor_id. Example: id

Show rack

requires authentication

Returns detailed information about a specific rack.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/racks/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/racks/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/racks/5';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 619,
        "name": "id",
        "floor_id": 588,
        "location_id": 3018,
        "description": "Rerum nesciunt dolore eum ut quisquam non quasi inventore.",
        "room": "nisi",
        "units_number": 15,
        "weight": 153,
        "speed": 10,
        "manager_id": 5456,
        "location": {
            "id": 3018,
            "app_id": null,
            "name": "Carter-Hettinger",
            "address": "59477 Hegmann Summit\nBergnaumtown, DE 31672-6955",
            "city": "East Willa",
            "state": "New Hampshire",
            "description": "Et modi qui amet est dicta. Et nobis incidunt pariatur qui. Reprehenderit vel quod earum sunt.",
            "notes": "Eum ut quia placeat et exercitationem sunt laborum. Assumenda sunt est et sunt est ipsam eligendi. Est qui fugit consectetur iusto enim.",
            "emergency": "0",
            "phone": "701.252.8272",
            "flag": "USA.png",
            "created_at": "2026-07-10 09:50:09",
            "updated_at": "2026-07-10 09:50:09"
        },
        "floor": {
            "id": 588,
            "name": "tempore",
            "number": 12,
            "rows": 10,
            "columns": 5,
            "racks": [
                {
                    "id": 619,
                    "name": "id"
                }
            ],
            "created_at": "2026-07-10 09:50:10",
            "updated_at": "2026-07-10 09:50:10"
        },
        "manager": {
            "id": 5456,
            "username": "hammes.alexa",
            "email": "[email protected]",
            "name": "Geovanni Miller",
            "firstname": "Geovanni",
            "lastname": "Miller",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/c0e0da09e3f29ae561ff4aac6de3bd23?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/c0e0da09e3f29ae561ff4aac6de3bd23?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "created_at": "2026-07-10 09:50:10",
        "updated_at": "2026-07-10 09:50:10"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/racks/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Rack ID. Example: 5

Create rack

requires authentication

Creates a new rack within a specific location and floor.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/racks" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Rack A-101\",
    \"location_id\": 5,
    \"floor_id\": 12,
    \"description\": \"42U rack with redundant power.\",
    \"room\": \"Server Room 2B\",
    \"units_number\": 42,
    \"weight\": 350,
    \"manager_id\": 42
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/racks'
payload = {
    "name": "Rack A-101",
    "location_id": 5,
    "floor_id": 12,
    "description": "42U rack with redundant power.",
    "room": "Server Room 2B",
    "units_number": 42,
    "weight": 350,
    "manager_id": 42
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/racks';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Rack A-101',
            'location_id' => 5,
            'floor_id' => 12,
            'description' => '42U rack with redundant power.',
            'room' => 'Server Room 2B',
            'units_number' => 42,
            'weight' => 350.0,
            'manager_id' => 42,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 620,
        "name": "omnis",
        "floor_id": 589,
        "location_id": 3020,
        "description": "Consequatur dolores et qui autem optio voluptatem.",
        "room": "repellendus",
        "units_number": 85,
        "weight": 53,
        "speed": 100,
        "manager_id": 5459,
        "location": {
            "id": 3020,
            "app_id": null,
            "name": "Gaylord Ltd",
            "address": "4681 Teagan Camp\nD'Amoreberg, VA 86429-2376",
            "city": "Beckerton",
            "state": "South Dakota",
            "description": "Non ex cumque facere aspernatur quibusdam. Veritatis perspiciatis dolorem aut atque quidem. Aut non corporis autem quis impedit soluta. Corrupti at natus nihil qui labore ratione.",
            "notes": "Hic est sed occaecati a. Consequuntur veritatis adipisci dolores porro voluptatem non. Pariatur voluptatem dolorum culpa numquam aspernatur fugiat dolorum at.",
            "emergency": "0",
            "phone": "1-703-770-2234",
            "flag": "USA.png",
            "created_at": "2026-07-10 09:50:10",
            "updated_at": "2026-07-10 09:50:10"
        },
        "floor": {
            "id": 589,
            "name": "eaque",
            "number": 27,
            "rows": 10,
            "columns": 5,
            "racks": [
                {
                    "id": 620,
                    "name": "omnis"
                }
            ],
            "created_at": "2026-07-10 09:50:11",
            "updated_at": "2026-07-10 09:50:11"
        },
        "manager": {
            "id": 5459,
            "username": "tristian12",
            "email": "[email protected]",
            "name": "Antonietta Anderson",
            "firstname": "Antonietta",
            "lastname": "Anderson",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/f5b728588f18fbe3cf72d04039270c59?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/f5b728588f18fbe3cf72d04039270c59?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "created_at": "2026-07-10 09:50:11",
        "updated_at": "2026-07-10 09:50:11"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/racks

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The unique name of the rack. Must not be greater than 255 characters. Example: Rack A-101

location_id   integer     

The ID of the location where this rack is placed. The id of an existing record in the locations table. Example: 5

floor_id   integer     

The ID of the floor where this rack is located. The id of an existing record in the floors table. Example: 12

description   string  optional    

Additional details about the rack. Must not be greater than 1000 characters. Example: 42U rack with redundant power.

room   string  optional    

Optional room identifier within the floor. Must not be greater than 255 characters. Example: Server Room 2B

units_number   integer  optional    

Total number of units (U) available in the rack. Must be at least 0. Must not be greater than 120. Example: 42

weight   number  optional    

Maximum supported weight of devices in kg. Must be at least 0. Example: 350

manager_id   integer  optional    

The ID of the user who manages this rack. The id of an existing record in the users table. Example: 42

Update rack

requires authentication

Updates the attributes of an existing rack.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/racks/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Rack A-101\",
    \"location_id\": 5,
    \"floor_id\": 12,
    \"description\": \"42U rack with redundant power.\",
    \"room\": \"Server Room 2B\",
    \"units_number\": 42,
    \"weight\": 350,
    \"manager_id\": 42
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/racks/5'
payload = {
    "name": "Rack A-101",
    "location_id": 5,
    "floor_id": 12,
    "description": "42U rack with redundant power.",
    "room": "Server Room 2B",
    "units_number": 42,
    "weight": 350,
    "manager_id": 42
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/racks/5';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Rack A-101',
            'location_id' => 5,
            'floor_id' => 12,
            'description' => '42U rack with redundant power.',
            'room' => 'Server Room 2B',
            'units_number' => 42,
            'weight' => 350.0,
            'manager_id' => 42,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 621,
        "name": "omnis",
        "floor_id": 590,
        "location_id": 3022,
        "description": "Et molestias cum rem necessitatibus.",
        "room": "minus",
        "units_number": 87,
        "weight": 158,
        "speed": 10,
        "manager_id": 5462,
        "location": {
            "id": 3022,
            "app_id": null,
            "name": "Dickens Ltd",
            "address": "577 Conn Glens Suite 601\nWest Bernardtown, AL 31451",
            "city": "West Carmela",
            "state": "Maine",
            "description": "Ad ab dignissimos et id magnam. Omnis placeat reiciendis omnis omnis perspiciatis. Qui aspernatur voluptates iusto illum non temporibus inventore.",
            "notes": "Impedit sint at rem deserunt commodi voluptas rem. Voluptas eos et ut quisquam et quos animi.",
            "emergency": "0",
            "phone": "(860) 218-1670",
            "flag": "USA.png",
            "created_at": "2026-07-10 09:50:11",
            "updated_at": "2026-07-10 09:50:11"
        },
        "floor": {
            "id": 590,
            "name": "quisquam",
            "number": 51,
            "rows": 8,
            "columns": 4,
            "racks": [
                {
                    "id": 621,
                    "name": "omnis"
                }
            ],
            "created_at": "2026-07-10 09:50:12",
            "updated_at": "2026-07-10 09:50:12"
        },
        "manager": {
            "id": 5462,
            "username": "ojaskolski",
            "email": "[email protected]",
            "name": "Cletus Reilly",
            "firstname": "Cletus",
            "lastname": "Reilly",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/8bca86f5121c9429328140f5d75a93df?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/8bca86f5121c9429328140f5d75a93df?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "created_at": "2026-07-10 09:50:12",
        "updated_at": "2026-07-10 09:50:12"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/racks/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Rack ID. Example: 5

Body Parameters

name   string  optional    

The unique name of the rack. Must not be greater than 255 characters. Example: Rack A-101

location_id   integer  optional    

The ID of the location where this rack is placed. The id of an existing record in the locations table. Example: 5

floor_id   integer  optional    

The ID of the floor where this rack is located. The id of an existing record in the floors table. Example: 12

description   string  optional    

Additional details about the rack. Must not be greater than 1000 characters. Example: 42U rack with redundant power.

room   string  optional    

Optional room identifier within the floor. Must not be greater than 255 characters. Example: Server Room 2B

units_number   integer  optional    

Total number of units (U) available in the rack. Must be at least 0. Must not be greater than 120. Example: 42

weight   number  optional    

Maximum supported weight of devices in kg. Must be at least 0. Example: 350

manager_id   integer  optional    

The ID of the user who manages this rack. The id of an existing record in the users table. Example: 42

Delete rack

requires authentication

Permanently removes a rack from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/racks/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/racks/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/racks/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/racks/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

Rack ID. Example: 5

Floors

List floors

requires authentication

Returns a paginated list of floors.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/floors?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/floors'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/floors';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 591,
            "name": "unde",
            "number": 48,
            "rows": 4,
            "columns": 9,
            "racks": [],
            "created_at": "2026-07-10 09:50:12",
            "updated_at": "2026-07-10 09:50:12"
        },
        {
            "id": 592,
            "name": "ut",
            "number": 33,
            "rows": 9,
            "columns": 3,
            "racks": [],
            "created_at": "2026-07-10 09:50:13",
            "updated_at": "2026-07-10 09:50:13"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/floors?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/floors",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/floors

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, number, location_id, rows, columns. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, number, location_id. Example: id

Show floor

requires authentication

Display detailed information about a single floor by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/floors/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/floors/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/floors/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 593,
        "name": "sed",
        "number": 68,
        "rows": 8,
        "columns": 7,
        "racks": [],
        "created_at": "2026-07-10 09:50:13",
        "updated_at": "2026-07-10 09:50:13"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/floors/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the floor. Example: 1

Create floor

requires authentication

Store a new floor in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/floors" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Floor 1\",
    \"number\": 2,
    \"rows\": 10,
    \"columns\": 8,
    \"location_id\": 1
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/floors'
payload = {
    "name": "Floor 1",
    "number": 2,
    "rows": 10,
    "columns": 8,
    "location_id": 1
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/floors';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Floor 1',
            'number' => 2,
            'rows' => 10,
            'columns' => 8,
            'location_id' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 594,
        "name": "illo",
        "number": 2,
        "rows": 6,
        "columns": 9,
        "racks": [],
        "created_at": "2026-07-10 09:50:14",
        "updated_at": "2026-07-10 09:50:14"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/floors

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The unique name of the floor. Must not be greater than 255 characters. Example: Floor 1

number   integer     

The floor number (e.g. 1 for first floor, 2 for second floor). Must be at least 1. Example: 2

rows   integer     

The number of rows in the floor grid. Must be at least 1. Example: 10

columns   integer     

The number of columns in the floor grid. Must be at least 1. Example: 8

location_id   integer     

The ID of the location this floor belongs to. The id of an existing record in the locations table. Example: 1

Update floor

requires authentication

Updates the specified floor with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/floors/3" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Updated Floor 2\",
    \"number\": 3,
    \"rows\": 12,
    \"columns\": 15,
    \"location_id\": 2
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/floors/3'
payload = {
    "name": "Updated Floor 2",
    "number": 3,
    "rows": 12,
    "columns": 15,
    "location_id": 2
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/floors/3';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Updated Floor 2',
            'number' => 3,
            'rows' => 12,
            'columns' => 15,
            'location_id' => 2,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 595,
        "name": "deserunt",
        "number": 65,
        "rows": 2,
        "columns": 3,
        "racks": [],
        "created_at": "2026-07-10 09:50:14",
        "updated_at": "2026-07-10 09:50:14"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/floors/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the floor. Example: 3

Body Parameters

name   string  optional    

The unique name of the floor. Must not be greater than 255 characters. Example: Updated Floor 2

number   integer  optional    

The floor number (e.g. 1 for first floor, 2 for second floor). Must be at least 1. Example: 3

rows   integer  optional    

The number of rows in the floor grid. Must be at least 1. Example: 12

columns   integer  optional    

The number of columns in the floor grid. Must be at least 1. Example: 15

location_id   integer  optional    

The ID of the location this floor belongs to. The id of an existing record in the locations table. Example: 2

Delete floor

requires authentication

Removes the specified floor from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/floors/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/floors/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/floors/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/floors/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the floor. Example: 5

Item Models

List item models

requires authentication

Returns a paginated list of item models.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/item-models?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/item-models'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/item-models';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 1519,
            "name": "expedita",
            "label": "aliquid",
            "type_id": 1954,
            "type": {
                "id": 1954,
                "name": "veritatis"
            },
            "location_id": 3029,
            "status": "in_use",
            "description": "Ullam repellat molestiae quisquam beatae aspernatur animi.",
            "is_part": true,
            "mountable": false,
            "manufacturer": "Stracke, Reichert and Doyle",
            "position": "rerum",
            "size": 0,
            "image": "https://via.placeholder.com/640x480.png/0011bb?text=illum",
            "data_ports": 6,
            "serialnumber1": "bc58f319-0dbf-36a7-a14a-95ba2be13fbe",
            "serialnumber2": "360ac2f2-8a05-3b85-82a7-31102d95af9d",
            "service_tag": "84c72877-3e0e-339f-834b-17c3a4d48f08",
            "comments": "Rerum accusamus omnis nemo at architecto vero. Ad impedit et exercitationem. Officia quia aliquid ut et. Qui quibusdam voluptas ut. Voluptatem nesciunt veritatis eveniet minus.",
            "notes": "Ipsam nostrum incidunt aut nihil omnis. Ut ab et minima. Officiis sapiente reiciendis dolorem aut et enim.",
            "purchase_date": "2007-01-01",
            "warranty_months": 25,
            "warranty_info": "Optio id pariatur rerum debitis a et.",
            "function": "laborum",
            "maintenance_instruction": "Et placeat beatae occaecati molestias voluptatem recusandae id. Consequuntur voluptatibus et illo velit commodi expedita numquam. Et eveniet vel id odio. Doloremque nostrum qui qui.",
            "origin": "Tanzania",
            "buy_price": 498.64,
            "appdata": "a:1:{s:3:\"key\";s:3:\"non\";}",
            "fields_data": "a:1:{s:5:\"field\";s:8:\"voluptas\";}",
            "parts_data": "a:1:{s:4:\"part\";s:3:\"qui\";}",
            "created_at": "2026-07-10T07:50:15.000000Z",
            "updated_at": "2026-07-10T07:50:15.000000Z"
        },
        {
            "id": 1520,
            "name": "est",
            "label": "recusandae",
            "type_id": 1955,
            "type": {
                "id": 1955,
                "name": "asperiores"
            },
            "location_id": 3030,
            "status": "available",
            "description": "Quis unde ipsa laudantium nostrum quod quod.",
            "is_part": true,
            "mountable": false,
            "manufacturer": "Zieme PLC",
            "position": "neque",
            "size": 0,
            "image": "https://via.placeholder.com/640x480.png/000044?text=et",
            "data_ports": 9,
            "serialnumber1": "be505654-645d-3924-8bae-de18cdff3e28",
            "serialnumber2": "423af26b-6dec-3486-8f16-5fde6b98b736",
            "service_tag": "3d6ccd66-3ed6-3a1a-9f0b-efc09a1c626b",
            "comments": "Sapiente ut dolorem nihil debitis ipsam. Quia qui rerum porro numquam ut saepe. Tenetur ad incidunt dolores cupiditate quod est pariatur.",
            "notes": "Exercitationem quo fugiat pariatur rerum. Maiores provident inventore sed architecto eveniet accusantium. Quis sunt repellendus quam mollitia. Aut quo earum inventore dolore tempora autem ducimus.",
            "purchase_date": "1998-06-30",
            "warranty_months": 16,
            "warranty_info": "Et illum qui eius neque voluptate optio.",
            "function": "veniam",
            "maintenance_instruction": "Enim distinctio sint aut sunt vel aut vero. Reiciendis rerum porro nihil quia vel qui. Ea aut quis ut dolorum ut odio repellat.",
            "origin": "Western Sahara",
            "buy_price": 256.61,
            "appdata": "a:1:{s:3:\"key\";s:10:\"laudantium\";}",
            "fields_data": "a:1:{s:5:\"field\";s:4:\"ipsa\";}",
            "parts_data": "a:1:{s:4:\"part\";s:5:\"saepe\";}",
            "created_at": "2026-07-10T07:50:15.000000Z",
            "updated_at": "2026-07-10T07:50:15.000000Z"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/item-models?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/item-models",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/item-models

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, label, manufacturer, status, type_id, location_id, created_at. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, label, manufacturer, status, type_id. Example: id

Show item model

requires authentication

Display detailed information about a single item model by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/item-models/10" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/item-models/10'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/item-models/10';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1521,
        "name": "facere",
        "label": "voluptas",
        "type_id": 1956,
        "type": {
            "id": 1956,
            "name": "aliquid"
        },
        "location_id": 3031,
        "status": "available",
        "description": "Sunt eligendi quia quae nulla.",
        "is_part": false,
        "mountable": true,
        "manufacturer": "Marks PLC",
        "position": "cupiditate",
        "size": 0,
        "image": "https://via.placeholder.com/640x480.png/001133?text=sint",
        "data_ports": 2,
        "serialnumber1": "0fd30395-eeb9-37b5-a0b5-f6010f3e13c8",
        "serialnumber2": "b37951e0-3e96-342e-a532-94b613c0e14d",
        "service_tag": "58b327b5-03f0-3556-b383-be7c7514d94c",
        "comments": "Aut aut earum laboriosam nesciunt rerum est non incidunt. Quos et at rerum ut sint. Amet neque laboriosam nostrum est consequuntur. Aut veritatis ad accusamus id non libero ut.",
        "notes": "Molestiae temporibus id similique ut sed id. Consequuntur iure vel sunt aut consequuntur voluptas quam consequuntur. Et laborum quos dolorem eligendi. Quam distinctio iusto veritatis non.",
        "purchase_date": "2025-12-27",
        "warranty_months": 14,
        "warranty_info": "Repudiandae quasi recusandae accusamus ipsum corrupti.",
        "function": "sint",
        "maintenance_instruction": "Totam non sint ea non eveniet eum magni cumque. Neque in debitis perferendis voluptatem. Architecto cum et est ab et quasi. Deserunt necessitatibus ullam et. Modi quam eum nostrum.",
        "origin": "Korea",
        "buy_price": 100.64,
        "appdata": "a:1:{s:3:\"key\";s:2:\"et\";}",
        "fields_data": "a:1:{s:5:\"field\";s:7:\"aperiam\";}",
        "parts_data": "a:1:{s:4:\"part\";s:12:\"perspiciatis\";}",
        "created_at": "2026-07-10T07:50:16.000000Z",
        "updated_at": "2026-07-10T07:50:16.000000Z"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/item-models/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item model. Example: 10

Create item model

requires authentication

Store a new item model in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/item-models" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Dell PowerEdge R740\",
    \"type_id\": 1,
    \"location_id\": 5,
    \"label\": \"High-Performance Server\",
    \"status\": \"active\",
    \"description\": \"Dual CPU server with support for up to 3TB RAM.\",
    \"is_part\": false,
    \"mountable\": true,
    \"manufacturer\": \"Dell\",
    \"position\": \"front\",
    \"size\": 2,
    \"image\": \"lsrtmoirzadephoia\",
    \"serialnumber1\": \"SN123456789\",
    \"serialnumber2\": \"SN987654321\",
    \"service_tag\": \"ST-001122\",
    \"comments\": \"mtohis\",
    \"notes\": \"eevoroxvqnqeojebycmyu\",
    \"purchase_date\": \"2026-07-10T09:50:16\",
    \"warranty_months\": 36,
    \"warranty_info\": \"drd\",
    \"function\": \"izbrdjbxfueqhzbr\",
    \"maintenance_instruction\": \"x\",
    \"origin\": \"gmzrw\",
    \"buy_price\": 2500
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/item-models'
payload = {
    "name": "Dell PowerEdge R740",
    "type_id": 1,
    "location_id": 5,
    "label": "High-Performance Server",
    "status": "active",
    "description": "Dual CPU server with support for up to 3TB RAM.",
    "is_part": false,
    "mountable": true,
    "manufacturer": "Dell",
    "position": "front",
    "size": 2,
    "image": "lsrtmoirzadephoia",
    "serialnumber1": "SN123456789",
    "serialnumber2": "SN987654321",
    "service_tag": "ST-001122",
    "comments": "mtohis",
    "notes": "eevoroxvqnqeojebycmyu",
    "purchase_date": "2026-07-10T09:50:16",
    "warranty_months": 36,
    "warranty_info": "drd",
    "function": "izbrdjbxfueqhzbr",
    "maintenance_instruction": "x",
    "origin": "gmzrw",
    "buy_price": 2500
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/item-models';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Dell PowerEdge R740',
            'type_id' => 1,
            'location_id' => 5,
            'label' => 'High-Performance Server',
            'status' => 'active',
            'description' => 'Dual CPU server with support for up to 3TB RAM.',
            'is_part' => false,
            'mountable' => true,
            'manufacturer' => 'Dell',
            'position' => 'front',
            'size' => 2,
            'image' => 'lsrtmoirzadephoia',
            'serialnumber1' => 'SN123456789',
            'serialnumber2' => 'SN987654321',
            'service_tag' => 'ST-001122',
            'comments' => 'mtohis',
            'notes' => 'eevoroxvqnqeojebycmyu',
            'purchase_date' => '2026-07-10T09:50:16',
            'warranty_months' => 36,
            'warranty_info' => 'drd',
            'function' => 'izbrdjbxfueqhzbr',
            'maintenance_instruction' => 'x',
            'origin' => 'gmzrw',
            'buy_price' => 2500.0,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1522,
        "name": "eum",
        "label": "voluptatem",
        "type_id": 1957,
        "type": {
            "id": 1957,
            "name": "error"
        },
        "location_id": 3032,
        "status": "in_use",
        "description": "Ut et maiores ratione eos.",
        "is_part": false,
        "mountable": true,
        "manufacturer": "Waelchi, Carroll and Kozey",
        "position": "tenetur",
        "size": 0,
        "image": "https://via.placeholder.com/640x480.png/00dddd?text=excepturi",
        "data_ports": 4,
        "serialnumber1": "753079dc-ad82-373d-8244-228abdf0ad98",
        "serialnumber2": "e7a637b4-213a-3e07-bec7-6236f607188f",
        "service_tag": "8a9362b9-006e-334b-8fb0-7ea79c628c3e",
        "comments": "Possimus officiis rerum id rerum iure. Recusandae qui excepturi nostrum ipsum aut nesciunt. Nam eum dolorem culpa ad et nisi reiciendis.",
        "notes": "Et aspernatur et dolorum ut. Autem est ullam cupiditate ex numquam. Hic error iure error et at. Temporibus rerum rem porro tempore reiciendis.",
        "purchase_date": "2003-03-01",
        "warranty_months": 28,
        "warranty_info": "Qui veniam corporis enim quo.",
        "function": "culpa",
        "maintenance_instruction": "Sed nobis dignissimos expedita et similique porro. Enim et magnam suscipit sint occaecati tempore temporibus. Et voluptas qui aut perferendis expedita.",
        "origin": "Bahamas",
        "buy_price": 634.84,
        "appdata": "a:1:{s:3:\"key\";s:5:\"minus\";}",
        "fields_data": "a:1:{s:5:\"field\";s:11:\"accusantium\";}",
        "parts_data": "a:1:{s:4:\"part\";s:10:\"recusandae\";}",
        "created_at": "2026-07-10T07:50:16.000000Z",
        "updated_at": "2026-07-10T07:50:16.000000Z"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/item-models

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The unique name of the item model. Must not be greater than 255 characters. Example: Dell PowerEdge R740

type_id   integer     

The type ID the model belongs to. The id of an existing record in the item_types table. Example: 1

location_id   integer  optional    

The location ID the model is associated with (optional). The id of an existing record in the locations table. Example: 5

label   string  optional    

A custom label for the model. Must not be greater than 255 characters. Example: High-Performance Server

status   string  optional    

The current status of the model. Must not be greater than 255 characters. Example: active

description   string  optional    

Detailed description of the model. Must not be greater than 1000 characters. Example: Dual CPU server with support for up to 3TB RAM.

is_part   boolean  optional    

Whether the model represents a part (1) or not (0). Example: false

mountable   boolean  optional    

Whether the model can be mounted (1) or not (0). Example: true

manufacturer   string  optional    

The name of the manufacturer. Must not be greater than 255 characters. Example: Dell

position   string  optional    

The default mounting position of the model in the rack. Allowed values: full, front, rear. Example: front

Must be one of:
  • full
  • front
  • rear
size   integer  optional    

Size in rack units. Must be at least 0. Example: 2

image   string  optional    

Must not be greater than 255 characters. Example: lsrtmoirzadephoia

serialnumber1   string  optional    

Primary serial number field. Must not be greater than 255 characters. Example: SN123456789

serialnumber2   string  optional    

Secondary serial number field. Must not be greater than 255 characters. Example: SN987654321

service_tag   string  optional    

Service tag or asset tag. Must not be greater than 255 characters. Example: ST-001122

comments   string  optional    

Must not be greater than 1000 characters. Example: mtohis

notes   string  optional    

Must not be greater than 2000 characters. Example: eevoroxvqnqeojebycmyu

purchase_date   string  optional    

Must be a valid date. Example: 2026-07-10T09:50:16

warranty_months   integer  optional    

Warranty duration in months. Must be at least 0. Example: 36

warranty_info   string  optional    

Must not be greater than 500 characters. Example: drd

function   string  optional    

Must not be greater than 255 characters. Example: izbrdjbxfueqhzbr

maintenance_instruction   string  optional    

Must not be greater than 1000 characters. Example: x

origin   string  optional    

Must not be greater than 255 characters. Example: gmzrw

buy_price   number  optional    

Purchase price of the model. Must be at least 0. Example: 2500

Update item model

requires authentication

Updates the specified item model with the provided request data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/item-models/12" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Dell PowerEdge R740\",
    \"type_id\": 1,
    \"location_id\": 5,
    \"label\": \"High-Performance Server\",
    \"status\": \"active\",
    \"description\": \"Dual CPU server with support for up to 3TB RAM.\",
    \"is_part\": false,
    \"mountable\": true,
    \"manufacturer\": \"Dell\",
    \"position\": \"front\",
    \"size\": 2,
    \"image\": \"dxpchnkrsotznzyndi\",
    \"serialnumber1\": \"SN123456789\",
    \"serialnumber2\": \"SN987654321\",
    \"service_tag\": \"ST-001122\",
    \"comments\": \"gbwnlxkqqaqtqbbmegd\",
    \"notes\": \"vfrwijvss\",
    \"purchase_date\": \"2026-07-10T09:50:16\",
    \"warranty_months\": 36,
    \"warranty_info\": \"yzkbbhdlbfxc\",
    \"function\": \"vchwgcxydqaz\",
    \"maintenance_instruction\": \"sfnpanidufvsvjluvs\",
    \"origin\": \"z\",
    \"buy_price\": 2500
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/item-models/12'
payload = {
    "name": "Dell PowerEdge R740",
    "type_id": 1,
    "location_id": 5,
    "label": "High-Performance Server",
    "status": "active",
    "description": "Dual CPU server with support for up to 3TB RAM.",
    "is_part": false,
    "mountable": true,
    "manufacturer": "Dell",
    "position": "front",
    "size": 2,
    "image": "dxpchnkrsotznzyndi",
    "serialnumber1": "SN123456789",
    "serialnumber2": "SN987654321",
    "service_tag": "ST-001122",
    "comments": "gbwnlxkqqaqtqbbmegd",
    "notes": "vfrwijvss",
    "purchase_date": "2026-07-10T09:50:16",
    "warranty_months": 36,
    "warranty_info": "yzkbbhdlbfxc",
    "function": "vchwgcxydqaz",
    "maintenance_instruction": "sfnpanidufvsvjluvs",
    "origin": "z",
    "buy_price": 2500
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/item-models/12';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Dell PowerEdge R740',
            'type_id' => 1,
            'location_id' => 5,
            'label' => 'High-Performance Server',
            'status' => 'active',
            'description' => 'Dual CPU server with support for up to 3TB RAM.',
            'is_part' => false,
            'mountable' => true,
            'manufacturer' => 'Dell',
            'position' => 'front',
            'size' => 2,
            'image' => 'dxpchnkrsotznzyndi',
            'serialnumber1' => 'SN123456789',
            'serialnumber2' => 'SN987654321',
            'service_tag' => 'ST-001122',
            'comments' => 'gbwnlxkqqaqtqbbmegd',
            'notes' => 'vfrwijvss',
            'purchase_date' => '2026-07-10T09:50:16',
            'warranty_months' => 36,
            'warranty_info' => 'yzkbbhdlbfxc',
            'function' => 'vchwgcxydqaz',
            'maintenance_instruction' => 'sfnpanidufvsvjluvs',
            'origin' => 'z',
            'buy_price' => 2500.0,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1523,
        "name": "ut",
        "label": "dolorum",
        "type_id": 1958,
        "type": {
            "id": 1958,
            "name": "esse"
        },
        "location_id": 3033,
        "status": "in_use",
        "description": "Aliquid similique voluptatem consectetur officia doloribus voluptas et.",
        "is_part": true,
        "mountable": false,
        "manufacturer": "Hayes-O'Keefe",
        "position": "eos",
        "size": 0,
        "image": "https://via.placeholder.com/640x480.png/00bbbb?text=et",
        "data_ports": 4,
        "serialnumber1": "ab8b2ffd-b744-3461-9e17-df694f0c2b41",
        "serialnumber2": "cf0675e0-1232-39a9-b985-d6713f737ae8",
        "service_tag": "d5775d34-6d5d-3ea2-acae-ff91f5639073",
        "comments": "Et nostrum consequatur soluta eligendi maxime. Quis quaerat aut vel sint. Ipsam dolorem adipisci dignissimos est consectetur sit.",
        "notes": "Et dicta corrupti dolor officiis porro dignissimos animi. Enim quia consectetur mollitia est. Eum eveniet et id voluptatem voluptas perspiciatis qui. Alias id nihil labore explicabo nemo.",
        "purchase_date": "1982-06-17",
        "warranty_months": 26,
        "warranty_info": "Enim esse repellat et non.",
        "function": "cumque",
        "maintenance_instruction": "Quibusdam nisi quam facilis aliquid est omnis quia. Iure vitae sapiente ea ducimus. Est magnam eum esse animi. Hic exercitationem provident esse eum est accusantium quo.",
        "origin": "Aruba",
        "buy_price": 956.69,
        "appdata": "a:1:{s:3:\"key\";s:2:\"ut\";}",
        "fields_data": "a:1:{s:5:\"field\";s:2:\"ut\";}",
        "parts_data": "a:1:{s:4:\"part\";s:5:\"dolor\";}",
        "created_at": "2026-07-10T07:50:17.000000Z",
        "updated_at": "2026-07-10T07:50:17.000000Z"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/item-models/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item model. Example: 12

Body Parameters

name   string  optional    

The unique name of the item model. Must be unique across all models. Must not be greater than 255 characters. Example: Dell PowerEdge R740

type_id   integer  optional    

The type ID the model belongs to. The id of an existing record in the item_types table. Example: 1

location_id   integer  optional    

The location ID the model is associated with (optional). The id of an existing record in the locations table. Example: 5

label   string  optional    

A custom label for the model. Must not be greater than 255 characters. Example: High-Performance Server

status   string  optional    

The current status of the model. Must not be greater than 255 characters. Example: active

description   string  optional    

Detailed description of the model. Must not be greater than 1000 characters. Example: Dual CPU server with support for up to 3TB RAM.

is_part   boolean  optional    

Whether the model represents a part (1) or not (0). Example: false

mountable   boolean  optional    

Whether the model can be mounted (1) or not (0). Example: true

manufacturer   string  optional    

The name of the manufacturer. Must not be greater than 255 characters. Example: Dell

position   string  optional    

The default mounting position of the model in the rack. Allowed values: full, front, rear. Example: front

Must be one of:
  • full
  • front
  • rear
size   integer  optional    

Size in rack units. Must be at least 0. Example: 2

image   string  optional    

Must not be greater than 255 characters. Example: dxpchnkrsotznzyndi

serialnumber1   string  optional    

Primary serial number field. Must not be greater than 255 characters. Example: SN123456789

serialnumber2   string  optional    

Secondary serial number field. Must not be greater than 255 characters. Example: SN987654321

service_tag   string  optional    

Service tag or asset tag. Must not be greater than 255 characters. Example: ST-001122

comments   string  optional    

Must not be greater than 1000 characters. Example: gbwnlxkqqaqtqbbmegd

notes   string  optional    

Must not be greater than 2000 characters. Example: vfrwijvss

purchase_date   string  optional    

Must be a valid date. Example: 2026-07-10T09:50:16

warranty_months   integer  optional    

Warranty duration in months. Must be at least 0. Example: 36

warranty_info   string  optional    

Must not be greater than 500 characters. Example: yzkbbhdlbfxc

function   string  optional    

Must not be greater than 255 characters. Example: vchwgcxydqaz

maintenance_instruction   string  optional    

Must not be greater than 1000 characters. Example: sfnpanidufvsvjluvs

origin   string  optional    

Must not be greater than 255 characters. Example: z

buy_price   number  optional    

Purchase price of the model. Must be at least 0. Example: 2500

Delete item model

requires authentication

Removes the specified item model from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/item-models/15" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/item-models/15'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/item-models/15';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/item-models/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item model. Example: 15

Users

List users

requires authentication

Returns a paginated list of users

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/users?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/users'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/users';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 5473,
            "username": "dkozey",
            "email": "[email protected]",
            "name": "Jany Ebert",
            "firstname": "Jany",
            "lastname": "Ebert",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/bdc353231b656b4c29d3ce7f810f6591?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/bdc353231b656b4c29d3ce7f810f6591?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        {
            "id": 5474,
            "username": "lind.name",
            "email": "[email protected]",
            "name": "Hillary O'Reilly",
            "firstname": "Hillary",
            "lastname": "O'Reilly",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/20194d4c359cb7b1bc684d77c354796c?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/20194d4c359cb7b1bc684d77c354796c?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/users?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/users",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, email, firstname, lastname, company, status. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, email, firstname, lastname, company, status. Example: id

Fetch user by email

requires authentication

Returns a user that matches the provided email.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/users/find-by-email" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/users/find-by-email'
payload = {
    "email": "[email protected]"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/users/find-by-email';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => '[email protected]',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 5475,
        "username": "ioreilly",
        "email": "[email protected]",
        "name": "Kiel Wisoky",
        "firstname": "Kiel",
        "lastname": "Wisoky",
        "gender": "0",
        "avatar": "//www.gravatar.com/avatar/d8d4bf03ae27f28af393ddfaeb725e18?s=30&d=mm&r=g",
        "large_avatar": "//www.gravatar.com/avatar/d8d4bf03ae27f28af393ddfaeb725e18?s=130&d=mm&r=g",
        "company": null,
        "active": 1,
        "status": "Active",
        "address1": null,
        "address2": null,
        "city": null,
        "state": null,
        "postcode": null,
        "country_code": null,
        "country_name": "United States",
        "locale": null,
        "timezone": 0,
        "last_login": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/users/find-by-email

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

The email address of the user to find. Example: [email protected]

Show User

requires authentication

Updates the specified user with provided data.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/users/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/users/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/users/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 5476,
        "username": "mosciski.dora",
        "email": "[email protected]",
        "name": "Dusty Abshire",
        "firstname": "Dusty",
        "lastname": "Abshire",
        "devices": [],
        "orders": [],
        "gender": "0",
        "avatar": "//www.gravatar.com/avatar/2758779b2640a0eaa2233ccbdfdfbc9b?s=30&d=mm&r=g",
        "large_avatar": "//www.gravatar.com/avatar/2758779b2640a0eaa2233ccbdfdfbc9b?s=130&d=mm&r=g",
        "company": null,
        "active": 1,
        "status": "Active",
        "address1": null,
        "address2": null,
        "city": null,
        "state": null,
        "postcode": null,
        "country_code": null,
        "country_name": "United States",
        "locale": null,
        "timezone": 0,
        "last_login": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/users/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the user. Example: 1

Create user

requires authentication

Creates a new user account with the provided details.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"username\": \"johndoe\",
    \"firstname\": \"John\",
    \"lastname\": \"Doe\",
    \"email\": \"[email protected]\",
    \"password\": \"secret123\",
    \"password_confirmation\": \"secret123\",
    \"role\": 2,
    \"active\": 1,
    \"company\": \"Acme Inc.\",
    \"date_of_birth\": \"1990-05-15\",
    \"address1\": \"123 Main Street\",
    \"address2\": \"Apt 4B\",
    \"city\": \"New York\",
    \"state\": \"NY\",
    \"postcode\": \"10001\",
    \"country_code\": \"US\",
    \"locale\": \"en\",
    \"timezone\": \"America\\/New_York\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/users'
payload = {
    "username": "johndoe",
    "firstname": "John",
    "lastname": "Doe",
    "email": "[email protected]",
    "password": "secret123",
    "password_confirmation": "secret123",
    "role": 2,
    "active": 1,
    "company": "Acme Inc.",
    "date_of_birth": "1990-05-15",
    "address1": "123 Main Street",
    "address2": "Apt 4B",
    "city": "New York",
    "state": "NY",
    "postcode": "10001",
    "country_code": "US",
    "locale": "en",
    "timezone": "America\/New_York"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/users';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'username' => 'johndoe',
            'firstname' => 'John',
            'lastname' => 'Doe',
            'email' => '[email protected]',
            'password' => 'secret123',
            'password_confirmation' => 'secret123',
            'role' => 2,
            'active' => 1,
            'company' => 'Acme Inc.',
            'date_of_birth' => '1990-05-15',
            'address1' => '123 Main Street',
            'address2' => 'Apt 4B',
            'city' => 'New York',
            'state' => 'NY',
            'postcode' => '10001',
            'country_code' => 'US',
            'locale' => 'en',
            'timezone' => 'America/New_York',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 5477,
        "username": "pbednar",
        "email": "[email protected]",
        "name": "Josephine Zemlak",
        "firstname": "Josephine",
        "lastname": "Zemlak",
        "gender": "0",
        "avatar": "//www.gravatar.com/avatar/5347afaf0b9ba93625625e7cd857ff9f?s=30&d=mm&r=g",
        "large_avatar": "//www.gravatar.com/avatar/5347afaf0b9ba93625625e7cd857ff9f?s=130&d=mm&r=g",
        "company": null,
        "active": 1,
        "status": "Active",
        "address1": null,
        "address2": null,
        "city": null,
        "state": null,
        "postcode": null,
        "country_code": null,
        "country_name": "United States",
        "locale": null,
        "timezone": 0,
        "last_login": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

username   string     

The username for the user. Must be unique. Example: johndoe

firstname   string     

The user's first name. Must not be greater than 255 characters. Example: John

lastname   string     

The user's last name. Must not be greater than 255 characters. Example: Doe

email   string     

The user's email address. Must be unique. Must be a valid email address. Example: [email protected]

password   string     

The user's password (minimum 6 characters). Must be at least 6 characters. Example: secret123

password_confirmation   string     

Confirmation of the password. Must match the password field. Must be at least 6 characters. Example: secret123

role   integer  optional    

The role ID to assign to the user. The id of an existing record in the roles table. Must not be one of 1. Example: 2

active   integer  optional    

User account status. Allowed values: 1 (active), 0 (inactive), -1 (banned). Example: 1

Must be one of:
  • 0
  • 1
  • -1
company   string  optional    

The company name associated with the user. Must not be greater than 255 characters. Example: Acme Inc.

date_of_birth   string  optional    

The user's date of birth in YYYY-MM-DD format. Must be a valid date. Must be a valid date in the format Y-m-d. Example: 1990-05-15

address1   string  optional    

The first line of the user's street address. Example: 123 Main Street

address2   string  optional    

The second line of the user's street address (optional). Example: Apt 4B

city   string  optional    

The city where the user resides. Example: New York

state   string  optional    

The state or province of the user's address. Example: NY

postcode   string  optional    

The postal code or ZIP code of the user's address. Example: 10001

country_code   string  optional    

The ISO 3166-1 alpha-2 country code for the user's country. Must exist in the countries table. The code of an existing record in the countries table. Example: US

locale   string  optional    

The user's preferred locale/language code. Example: en

timezone   string  optional    

The user's timezone identifier. Must be a valid timezone. Must be a valid time zone, such as Africa/Accra. Must not be one of America/Coyhaique. Example: America/New_York

Update User

requires authentication

Updates the specified user with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/users/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"username\": \"johndoe\",
    \"firstname\": \"John\",
    \"lastname\": \"Doe\",
    \"email\": \"[email protected]\",
    \"password\": \"secret123\",
    \"password_confirmation\": \"secret123\",
    \"role\": 2,
    \"active\": 1,
    \"company\": \"Acme Inc.\",
    \"date_of_birth\": \"1990-05-15\",
    \"address1\": \"123 Main Street\",
    \"address2\": \"Apt 4B\",
    \"city\": \"New York\",
    \"state\": \"NY\",
    \"postcode\": \"10001\",
    \"country_code\": \"US\",
    \"locale\": \"en\",
    \"timezone\": \"America\\/New_York\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/users/1'
payload = {
    "username": "johndoe",
    "firstname": "John",
    "lastname": "Doe",
    "email": "[email protected]",
    "password": "secret123",
    "password_confirmation": "secret123",
    "role": 2,
    "active": 1,
    "company": "Acme Inc.",
    "date_of_birth": "1990-05-15",
    "address1": "123 Main Street",
    "address2": "Apt 4B",
    "city": "New York",
    "state": "NY",
    "postcode": "10001",
    "country_code": "US",
    "locale": "en",
    "timezone": "America\/New_York"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/users/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'username' => 'johndoe',
            'firstname' => 'John',
            'lastname' => 'Doe',
            'email' => '[email protected]',
            'password' => 'secret123',
            'password_confirmation' => 'secret123',
            'role' => 2,
            'active' => 1,
            'company' => 'Acme Inc.',
            'date_of_birth' => '1990-05-15',
            'address1' => '123 Main Street',
            'address2' => 'Apt 4B',
            'city' => 'New York',
            'state' => 'NY',
            'postcode' => '10001',
            'country_code' => 'US',
            'locale' => 'en',
            'timezone' => 'America/New_York',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 5478,
        "username": "zita.renner",
        "email": "[email protected]",
        "name": "Norberto Emmerich",
        "firstname": "Norberto",
        "lastname": "Emmerich",
        "gender": "0",
        "avatar": "//www.gravatar.com/avatar/6fdbde8918552e042b97ba85e11bea4f?s=30&d=mm&r=g",
        "large_avatar": "//www.gravatar.com/avatar/6fdbde8918552e042b97ba85e11bea4f?s=130&d=mm&r=g",
        "company": null,
        "active": 1,
        "status": "Active",
        "address1": null,
        "address2": null,
        "city": null,
        "state": null,
        "postcode": null,
        "country_code": null,
        "country_name": "United States",
        "locale": null,
        "timezone": 0,
        "last_login": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/users/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the user. Example: 1

Body Parameters

username   string  optional    

The username for the user. Must be unique. Example: johndoe

firstname   string  optional    

The user's first name. Must not be greater than 255 characters. Example: John

lastname   string  optional    

The user's last name. Must not be greater than 255 characters. Example: Doe

email   string  optional    

The user's email address. Must be unique. Must be a valid email address. Example: [email protected]

password   string  optional    

The user's password (minimum 6 characters). Must be at least 6 characters. Example: secret123

password_confirmation   string  optional    

Confirmation of the password. Must match the password field. This field is required when password is present. Must be at least 6 characters. Example: secret123

role   integer  optional    

The role ID to assign to the user. The id of an existing record in the roles table. Must not be one of 1. Example: 2

active   integer  optional    

User account status. Allowed values: 1 (active), 0 (inactive), -1 (suspended). Example: 1

Must be one of:
  • 0
  • 1
  • -1
company   string  optional    

The company name associated with the user. Must not be greater than 255 characters. Example: Acme Inc.

date_of_birth   string  optional    

The user's date of birth in YYYY-MM-DD format. Must be a valid date. Must be a valid date in the format Y-m-d. Example: 1990-05-15

address1   string  optional    

The first line of the user's street address. Example: 123 Main Street

address2   string  optional    

The second line of the user's street address (optional). Example: Apt 4B

city   string  optional    

The city where the user resides. Example: New York

state   string  optional    

The state or province of the user's address. Example: NY

postcode   string  optional    

The postal code or ZIP code of the user's address. Example: 10001

country_code   string  optional    

The ISO 3166-1 alpha-2 country code for the user's country. Must exist in the countries table. The code of an existing record in the countries table. Example: US

locale   string  optional    

The user's preferred locale/language code. Example: en

timezone   string  optional    

The user's timezone identifier. Must be a valid timezone. Must be a valid time zone, such as Africa/Accra. Must not be one of America/Coyhaique. Example: America/New_York

User bandwidth

requires authentication

Returns an array of bandwidth usage values for a specified period of time.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/users/1/bandwidth" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"start_date\": \"2025-09-22 00:00:00\",
    \"end_date\": \"2025-09-22 23:59:59\",
    \"device_ids\": [
        5
    ],
    \"device_selection\": \"all\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/users/1/bandwidth'
payload = {
    "start_date": "2025-09-22 00:00:00",
    "end_date": "2025-09-22 23:59:59",
    "device_ids": [
        5
    ],
    "device_selection": "all"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/users/1/bandwidth';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'start_date' => '2025-09-22 00:00:00',
            'end_date' => '2025-09-22 23:59:59',
            'device_ids' => [
                5,
            ],
            'device_selection' => 'all',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "BW_TOTAL": "79.67 GB",
        "BW_IN": "41.30 GB",
        "BW_OUT": "38.37 GB",
        "95TH_PERC": "1.32 MBps",
        "95TH_PERC_IN": "0.68 MBps",
        "95TH_PERC_OUT": "0.64 MBps"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/users/{id}/bandwidth

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the user. Example: 1

Body Parameters

start_date   string     

The start date and time for the bandwidth report. Must be a valid date. Example: 2025-09-22 00:00:00

end_date   string     

The end date and time for the bandwidth report. Must be a valid date. Example: 2025-09-22 23:59:59

device_ids   integer[]  optional    
device_selection   string  optional    

Optional predefined device selection for the user. Allowed values: all, server, order. This field is required when device_ids is not present. Example: all

Must be one of:
  • all
  • server
  • order

Delete User

requires authentication

Removes the specified user from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/users/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/users/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/users/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/users/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the user. Example: 5

Authentication

Verify API token and check if it has the given ability.

requires authentication

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/users/verify-token-ability" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ability\": \"impersonate-users\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/users/verify-token-ability'
payload = {
    "ability": "impersonate-users"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/users/verify-token-ability';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ability' => 'impersonate-users',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "abilities": [
            "impersonate-users"
        ],
        "valid": true
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/users/verify-token-ability

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

ability   string     

The ability (permission) name to verify for the current token. Must not be greater than 128 characters. Example: impersonate-users

Ports

List Network Ports

requires authentication

Returns a paginated list of ports.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ports?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ports'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ports';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 7508,
            "name": null,
            "description": "Id rerum molestiae esse aliquam dolorem.",
            "item_id": 1068,
            "colocation_id": 0,
            "connected_item": null,
            "connected_port": null,
            "port_number": 48,
            "port_index": 11,
            "port_mode": "access",
            "port_label": "quia",
            "user_label": "necessitatibus",
            "speed": "100",
            "high_speed": "100",
            "if_type": "194",
            "physaddress": "EE:A1:85:AE:B0:74",
            "pullable": 1,
            "primary": 1,
            "vlan": 0,
            "vlans": [],
            "opstate": "down",
            "adminstate": "down",
            "type": "",
            "ifInUcastPkts": 6234,
            "ifOutUcastPkts": 6606,
            "ifInErrors": 0,
            "ifOutErrors": 0,
            "ifInOctets": 0,
            "ifOutOctets": 0,
            "poll_time": 2026,
            "poll_period": 300,
            "current_in_bps": null,
            "current_out_bps": null,
            "current_total_bps": null,
            "current_usage_percent": null,
            "rate_valid": false,
            "created_at": "2026-07-10 09:50:19",
            "updated_at": "2026-07-10 09:50:19"
        },
        {
            "id": 7509,
            "name": null,
            "description": "Aut ut qui dolor omnis assumenda.",
            "item_id": 1069,
            "colocation_id": 0,
            "connected_item": null,
            "connected_port": null,
            "port_number": 9,
            "port_index": 51,
            "port_mode": "access",
            "port_label": "ratione",
            "user_label": "occaecati",
            "speed": "1000",
            "high_speed": "100",
            "if_type": "232",
            "physaddress": "1D:05:76:52:5E:FB",
            "pullable": 0,
            "primary": 0,
            "vlan": 0,
            "vlans": [],
            "opstate": "up",
            "adminstate": "down",
            "type": "",
            "ifInUcastPkts": 9949,
            "ifOutUcastPkts": 7873,
            "ifInErrors": 0,
            "ifOutErrors": 0,
            "ifInOctets": 0,
            "ifOutOctets": 0,
            "poll_time": 2026,
            "poll_period": 300,
            "current_in_bps": null,
            "current_out_bps": null,
            "current_total_bps": null,
            "current_usage_percent": null,
            "rate_valid": false,
            "created_at": "2026-07-10 09:50:20",
            "updated_at": "2026-07-10 09:50:20"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ports?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/ports",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, item_id, colocation_id, port_number, port_index, name, port_label, description. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, item_id, colocation_id, port_number, port_index, name, port_label, description. Example: id

Show port

requires authentication

Display detailed information about a single port by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ports/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ports/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ports/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 7510,
        "name": null,
        "description": "Laborum cum omnis cumque a aut.",
        "item": {
            "id": 1070,
            "name": null,
            "label": "ullam",
            "type_id": 1963,
            "location_id": 3039,
            "status": "available",
            "description": "Tenetur iste accusantium magnam in qui nulla.",
            "is_part": false,
            "mountable": true,
            "manufacturer": "Fisher-Reichel",
            "position": null,
            "size": 8,
            "image": null,
            "data_ports": 0,
            "serialnumber1": "SN667PV",
            "serialnumber2": null,
            "service_tag": "ST104IU",
            "comments": null,
            "notes": null,
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "fields_data": null,
            "parts_data": null,
            "created_at": "2026-07-10T07:50:20.000000Z",
            "updated_at": "2026-07-10T07:50:20.000000Z"
        },
        "colocation": null,
        "connected_item": null,
        "connected_port": null,
        "port_number": 20,
        "port_index": 14,
        "port_mode": "access",
        "port_label": "sit",
        "user_label": "deserunt",
        "speed": "100",
        "high_speed": "100",
        "if_type": "68",
        "physaddress": "45:BD:23:98:78:47",
        "pullable": 0,
        "primary": 1,
        "vlan": 0,
        "vlans": [],
        "opstate": "down",
        "adminstate": "down",
        "type": "",
        "ifInUcastPkts": 3775,
        "ifOutUcastPkts": 3269,
        "ifInErrors": 0,
        "ifOutErrors": 0,
        "ifInOctets": 0,
        "ifOutOctets": 0,
        "poll_time": 2026,
        "poll_period": 300,
        "current_in_bps": null,
        "current_out_bps": null,
        "current_total_bps": null,
        "current_usage_percent": null,
        "rate_valid": false,
        "created_at": "2026-07-10 09:50:21",
        "updated_at": "2026-07-10 09:50:21"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ports/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the port. Example: 1

Create Port

requires authentication

Store a new port in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ports" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"port_number\": 1,
    \"device_id\": 115,
    \"port_label\": 32,
    \"if_type\": 1,
    \"pullable\": true,
    \"description\": \"This is description of the port\",
    \"user_label\": \"Uplink port\",
    \"physaddress\": \"00:0a:95:9d:68:16\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ports'
payload = {
    "port_number": 1,
    "device_id": 115,
    "port_label": 32,
    "if_type": 1,
    "pullable": true,
    "description": "This is description of the port",
    "user_label": "Uplink port",
    "physaddress": "00:0a:95:9d:68:16"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ports';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'port_number' => 1,
            'device_id' => 115,
            'port_label' => 32,
            'if_type' => 1,
            'pullable' => true,
            'description' => 'This is description of the port',
            'user_label' => 'Uplink port',
            'physaddress' => '00:0a:95:9d:68:16',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 7511,
        "name": null,
        "description": "Veniam rerum possimus soluta ut quia.",
        "item": {
            "id": 1071,
            "name": null,
            "label": "id",
            "type_id": 1965,
            "location_id": 3041,
            "status": "available",
            "description": "Eos ad exercitationem sed aut nihil aut.",
            "is_part": false,
            "mountable": true,
            "manufacturer": "Waters-Dickens",
            "position": null,
            "size": 3,
            "image": null,
            "data_ports": 0,
            "serialnumber1": "SN210PR",
            "serialnumber2": null,
            "service_tag": "ST465VX",
            "comments": null,
            "notes": null,
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "fields_data": null,
            "parts_data": null,
            "created_at": "2026-07-10T07:50:21.000000Z",
            "updated_at": "2026-07-10T07:50:21.000000Z"
        },
        "colocation": null,
        "connected_item": null,
        "connected_port": null,
        "port_number": 31,
        "port_index": 17,
        "port_mode": "trunk",
        "port_label": "explicabo",
        "user_label": "aliquid",
        "speed": "100",
        "high_speed": "100",
        "if_type": "13",
        "physaddress": "0A:55:8C:76:F7:F7",
        "pullable": 1,
        "primary": 1,
        "vlan": 0,
        "vlans": [],
        "opstate": "up",
        "adminstate": "down",
        "type": "",
        "ifInUcastPkts": 4492,
        "ifOutUcastPkts": 6157,
        "ifInErrors": 0,
        "ifOutErrors": 0,
        "ifInOctets": 0,
        "ifOutOctets": 0,
        "poll_time": 2026,
        "poll_period": 300,
        "current_in_bps": null,
        "current_out_bps": null,
        "current_total_bps": null,
        "current_usage_percent": null,
        "rate_valid": false,
        "created_at": "2026-07-10 09:50:22",
        "updated_at": "2026-07-10 09:50:22"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

port_number   integer     

The number of the port. Must be at least 1. Example: 1

device_id   integer     

Device Id for which port should be created. The id of an existing record in the items table. Example: 115

port_label   string  optional    

The label of the port. Must not be greater than 255 characters. Example: 32

if_type   integer  optional    

Type of the port. Port types: 1 => other, 2 => regular1822, 3 => hdh1822, 4 => ddnX25, 5 => rfc877x25, 6 => ethernetCsmacd, 7 => iso88023Csmacd, 8 => iso88024TokenBus, 9 => iso88025TokenRing, 10 => iso88026Man, 11 => starLan, 12 => proteon10Mbit, 13 => proteon80Mbit, 14 => hyperchannel, 15 => fddi, 16 => lapb, 17 => sdlc, 18 => ds1, 19 => e1, 20 => basicISDN, 21 => primaryISDN, 22 => propPointToPointSerial, 23 => ppp, 24 => softwareLoopback, 25 => eon, 26 => ethernet3Mbit, 27 => nsip, 28 => slip, 29 => ultra, 30 => ds3, 31 => sip, 32 => frameRelay, 33 => rs232, 34 => para, 35 => arcnet, 36 => arcnetPlus, 37 => atm, 38 => miox25, 39 => sonet, 40 => x25ple, 41 => iso88022llc, 42 => localTalk, 43 => smdsDxi, 44 => frameRelayService, 45 => v35, 46 => hssi, 47 => hippi, 48 => modem, 49 => aal5, 50 => sonetPath, 51 => sonetVT, 52 => smdsIcip, 53 => propVirtual, 54 => propMultiplexor, 55 => ieee80212, 56 => fibreChannel, 57 => hippiInterface, 58 => frameRelayInterconnect, 59 => aflane8023, 60 => aflane8025, 61 => cctEmul, 62 => fastEther, 63 => isdn, 64 => v11, 65 => v36, 66 => g703at64k, 67 => g703at2mb, 68 => qllc, 69 => fastEtherFX, 70 => channel, 71 => ieee80211, 72 => ibm370parChan, 73 => escon, 74 => dlsw, 75 => isdns, 76 => isdnu, 77 => lapd, 78 => ipSwitch, 79 => rsrb, 80 => atmLogical, 81 => ds0, 82 => ds0Bundle, 83 => bsc, 84 => async, 85 => cnr, 86 => iso88025Dtr, 87 => eplrs, 88 => arap, 89 => propCnls, 90 => hostPad, 91 => termPad, 92 => frameRelayMPI, 93 => x213, 94 => adsl, 95 => radsl, 96 => sdsl, 97 => vdsl, 98 => iso88025CRFPInt, 99 => myrinet, 100 => voiceEM, 101 => voiceFXO, 102 => voiceFXS, 103 => voiceEncap, 104 => voiceOverIp, 105 => atmDxi, 106 => atmFuni, 107 => atmIma, 108 => pppMultilinkBundle, 109 => ipOverCdlc, 110 => ipOverClaw, 111 => stackToStack, 112 => virtualIpAddress, 113 => mpc, 114 => ipOverAtm, 115 => iso88025Fiber, 116 => tdlc, 117 => gigabitEthernet, 118 => hdlc, 119 => lapf, 120 => v37, 121 => x25mlp, 122 => x25huntGroup, 123 => trasnpHdlc, 124 => interleave, 125 => fast, 126 => ip, 127 => docsCableMaclayer, 128 => docsCableDownstream, 129 => docsCableUpstream, 130 => a12MppSwitch, 131 => tunnel, 132 => coffee, 133 => ces, 134 => atmSubInterface, 135 => l2vlan, 136 => l3ipvlan, 137 => l3ipxvlan, 138 => digitalPowerline, 139 => mediaMailOverIp, 140 => dtm, 141 => dcn, 142 => ipForward, 143 => msdsl, 144 => ieee1394, 145 => if-gsn, 146 => dvbRccMacLayer, 147 => dvbRccDownstream, 148 => dvbRccUpstream, 149 => atmVirtual, 150 => mplsTunnel, 151 => srp, 152 => voiceOverAtm, 153 => voiceOverFrameRelay, 154 => idsl, 155 => compositeLink, 156 => ss7SigLink, 157 => propWirelessP2P, 158 => frForward, 159 => rfc1483, 160 => usb, 161 => ieee8023adLag, 162 => bgppolicyaccounting, 163 => frf16MfrBundle, 164 => h323Gatekeeper, 165 => h323Proxy, 166 => mpls, 167 => mfSigLink, 168 => hdsl2, 169 => shdsl, 170 => ds1FDL, 171 => pos, 172 => dvbAsiIn, 173 => dvbAsiOut, 174 => plc, 175 => nfas, 176 => tr008, 177 => gr303RDT, 178 => gr303IDT, 179 => isup, 180 => propDocsWirelessMaclayer, 181 => propDocsWirelessDownstream, 182 => propDocsWirelessUpstream, 183 => hiperlan2, 184 => propBWAp2Mp, 185 => sonetOverheadChannel, 186 => digitalWrapperOverheadChannel, 187 => aal2, 188 => radioMAC, 189 => atmRadio, 190 => imt, 191 => mvl, 192 => reachDSL, 193 => frDlciEndPt, 194 => atmVciEndPt, 195 => opticalChannel, 196 => opticalTransport, 197 => propAtm, 198 => voiceOverCable, 199 => infiniband, 200 => teLink, 201 => q2931, 202 => virtualTg, 203 => sipTg, 204 => sipSig, 205 => docsCableUpstreamChannel, 206 => econet, 207 => pon155, 208 => pon622, 209 => bridge, 210 => linegroup, 211 => voiceEMFGD, 212 => voiceFGDEANA, 213 => voiceDID, 214 => mpegTransport, 215 => sixToFour, 216 => gtp, 217 => pdnEtherLoop1, 218 => pdnEtherLoop2, 219 => opticalChannelGroup, 220 => homepna, 221 => gfp, 222 => ciscoISLvlan, 223 => actelisMetaLOOP, 224 => fcipLink, 225 => rpr, 226 => qam, 227 => lmp, 228 => cblVectaStar, 229 => docsCableMCmtsDownstream, 230 => adsl2, 231 => macSecControlledIF, 232 => macSecUncontrolledIF, 233 => aviciOpticalEther, 234 => atmbond. Example: 1

Must be one of:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
pullable   boolean  optional    

Determine if the port is pullable. Example: true

description   string  optional    

The description of the port. Example: This is description of the port

user_label   string  optional    

The user label of the port. Example: Uplink port

physaddress   string  optional    

The physical address of the port. Example: 00:0a:95:9d:68:16

Update Port

requires authentication

Updates the specified port with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/ports/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"port_number\": 1,
    \"port_label\": 32,
    \"if_type\": 1,
    \"pullable\": true,
    \"description\": \"This is description of the port\",
    \"user_label\": \"Uplink port\",
    \"physaddress\": \"00:0a:95:9d:68:16\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ports/1'
payload = {
    "port_number": 1,
    "port_label": 32,
    "if_type": 1,
    "pullable": true,
    "description": "This is description of the port",
    "user_label": "Uplink port",
    "physaddress": "00:0a:95:9d:68:16"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ports/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'port_number' => 1,
            'port_label' => 32,
            'if_type' => 1,
            'pullable' => true,
            'description' => 'This is description of the port',
            'user_label' => 'Uplink port',
            'physaddress' => '00:0a:95:9d:68:16',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 7512,
        "name": null,
        "description": "Velit unde pariatur adipisci.",
        "item": null,
        "colocation": null,
        "connected_item": null,
        "connected_port": null,
        "port_number": 9,
        "port_index": 33,
        "port_mode": "access",
        "port_label": "maxime",
        "user_label": "quasi",
        "speed": "1000",
        "high_speed": "100",
        "if_type": "137",
        "physaddress": "E4:17:82:BD:B0:42",
        "pullable": 0,
        "primary": 0,
        "vlan": 0,
        "vlans": [],
        "opstate": "up",
        "adminstate": "down",
        "type": "",
        "ifInUcastPkts": 7740,
        "ifOutUcastPkts": 8772,
        "ifInErrors": 0,
        "ifOutErrors": 0,
        "ifInOctets": 0,
        "ifOutOctets": 0,
        "poll_time": 2026,
        "poll_period": 300,
        "current_in_bps": null,
        "current_out_bps": null,
        "current_total_bps": null,
        "current_usage_percent": null,
        "rate_valid": false,
        "created_at": "2026-07-10 09:50:24",
        "updated_at": "2026-07-10 09:50:24"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/ports/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the port. Example: 1

Body Parameters

port_number   integer     

The number of the port. Must be at least 1. Example: 1

port_label   string  optional    

The label of the port. Must not be greater than 255 characters. Example: 32

if_type   integer  optional    

Type of the port. Port types: 1 => other, 2 => regular1822, 3 => hdh1822, 4 => ddnX25, 5 => rfc877x25, 6 => ethernetCsmacd, 7 => iso88023Csmacd, 8 => iso88024TokenBus, 9 => iso88025TokenRing, 10 => iso88026Man, 11 => starLan, 12 => proteon10Mbit, 13 => proteon80Mbit, 14 => hyperchannel, 15 => fddi, 16 => lapb, 17 => sdlc, 18 => ds1, 19 => e1, 20 => basicISDN, 21 => primaryISDN, 22 => propPointToPointSerial, 23 => ppp, 24 => softwareLoopback, 25 => eon, 26 => ethernet3Mbit, 27 => nsip, 28 => slip, 29 => ultra, 30 => ds3, 31 => sip, 32 => frameRelay, 33 => rs232, 34 => para, 35 => arcnet, 36 => arcnetPlus, 37 => atm, 38 => miox25, 39 => sonet, 40 => x25ple, 41 => iso88022llc, 42 => localTalk, 43 => smdsDxi, 44 => frameRelayService, 45 => v35, 46 => hssi, 47 => hippi, 48 => modem, 49 => aal5, 50 => sonetPath, 51 => sonetVT, 52 => smdsIcip, 53 => propVirtual, 54 => propMultiplexor, 55 => ieee80212, 56 => fibreChannel, 57 => hippiInterface, 58 => frameRelayInterconnect, 59 => aflane8023, 60 => aflane8025, 61 => cctEmul, 62 => fastEther, 63 => isdn, 64 => v11, 65 => v36, 66 => g703at64k, 67 => g703at2mb, 68 => qllc, 69 => fastEtherFX, 70 => channel, 71 => ieee80211, 72 => ibm370parChan, 73 => escon, 74 => dlsw, 75 => isdns, 76 => isdnu, 77 => lapd, 78 => ipSwitch, 79 => rsrb, 80 => atmLogical, 81 => ds0, 82 => ds0Bundle, 83 => bsc, 84 => async, 85 => cnr, 86 => iso88025Dtr, 87 => eplrs, 88 => arap, 89 => propCnls, 90 => hostPad, 91 => termPad, 92 => frameRelayMPI, 93 => x213, 94 => adsl, 95 => radsl, 96 => sdsl, 97 => vdsl, 98 => iso88025CRFPInt, 99 => myrinet, 100 => voiceEM, 101 => voiceFXO, 102 => voiceFXS, 103 => voiceEncap, 104 => voiceOverIp, 105 => atmDxi, 106 => atmFuni, 107 => atmIma, 108 => pppMultilinkBundle, 109 => ipOverCdlc, 110 => ipOverClaw, 111 => stackToStack, 112 => virtualIpAddress, 113 => mpc, 114 => ipOverAtm, 115 => iso88025Fiber, 116 => tdlc, 117 => gigabitEthernet, 118 => hdlc, 119 => lapf, 120 => v37, 121 => x25mlp, 122 => x25huntGroup, 123 => trasnpHdlc, 124 => interleave, 125 => fast, 126 => ip, 127 => docsCableMaclayer, 128 => docsCableDownstream, 129 => docsCableUpstream, 130 => a12MppSwitch, 131 => tunnel, 132 => coffee, 133 => ces, 134 => atmSubInterface, 135 => l2vlan, 136 => l3ipvlan, 137 => l3ipxvlan, 138 => digitalPowerline, 139 => mediaMailOverIp, 140 => dtm, 141 => dcn, 142 => ipForward, 143 => msdsl, 144 => ieee1394, 145 => if-gsn, 146 => dvbRccMacLayer, 147 => dvbRccDownstream, 148 => dvbRccUpstream, 149 => atmVirtual, 150 => mplsTunnel, 151 => srp, 152 => voiceOverAtm, 153 => voiceOverFrameRelay, 154 => idsl, 155 => compositeLink, 156 => ss7SigLink, 157 => propWirelessP2P, 158 => frForward, 159 => rfc1483, 160 => usb, 161 => ieee8023adLag, 162 => bgppolicyaccounting, 163 => frf16MfrBundle, 164 => h323Gatekeeper, 165 => h323Proxy, 166 => mpls, 167 => mfSigLink, 168 => hdsl2, 169 => shdsl, 170 => ds1FDL, 171 => pos, 172 => dvbAsiIn, 173 => dvbAsiOut, 174 => plc, 175 => nfas, 176 => tr008, 177 => gr303RDT, 178 => gr303IDT, 179 => isup, 180 => propDocsWirelessMaclayer, 181 => propDocsWirelessDownstream, 182 => propDocsWirelessUpstream, 183 => hiperlan2, 184 => propBWAp2Mp, 185 => sonetOverheadChannel, 186 => digitalWrapperOverheadChannel, 187 => aal2, 188 => radioMAC, 189 => atmRadio, 190 => imt, 191 => mvl, 192 => reachDSL, 193 => frDlciEndPt, 194 => atmVciEndPt, 195 => opticalChannel, 196 => opticalTransport, 197 => propAtm, 198 => voiceOverCable, 199 => infiniband, 200 => teLink, 201 => q2931, 202 => virtualTg, 203 => sipTg, 204 => sipSig, 205 => docsCableUpstreamChannel, 206 => econet, 207 => pon155, 208 => pon622, 209 => bridge, 210 => linegroup, 211 => voiceEMFGD, 212 => voiceFGDEANA, 213 => voiceDID, 214 => mpegTransport, 215 => sixToFour, 216 => gtp, 217 => pdnEtherLoop1, 218 => pdnEtherLoop2, 219 => opticalChannelGroup, 220 => homepna, 221 => gfp, 222 => ciscoISLvlan, 223 => actelisMetaLOOP, 224 => fcipLink, 225 => rpr, 226 => qam, 227 => lmp, 228 => cblVectaStar, 229 => docsCableMCmtsDownstream, 230 => adsl2, 231 => macSecControlledIF, 232 => macSecUncontrolledIF, 233 => aviciOpticalEther, 234 => atmbond. Example: 1

Must be one of:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
pullable   boolean  optional    

Determine if the port is pullable. Example: true

description   string  optional    

The description of the port. Example: This is description of the port

user_label   string  optional    

The user label of the port. Example: Uplink port

physaddress   string  optional    

The physical address of the port. Example: 00:0a:95:9d:68:16

Assign port

requires authentication

Assign network port to another port

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ports/1/assign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"connected_item\": 12,
    \"connected_port\": 115
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ports/1/assign'
payload = {
    "connected_item": 12,
    "connected_port": 115
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ports/1/assign';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'connected_item' => 12,
            'connected_port' => 115,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 7513,
        "name": null,
        "description": "Eius sint reiciendis tempora facilis quo.",
        "item": {
            "id": 1073,
            "name": null,
            "label": "corrupti",
            "type_id": 1969,
            "location_id": 3045,
            "status": "available",
            "description": "Et sint et eligendi possimus aut veritatis ea.",
            "is_part": false,
            "mountable": true,
            "manufacturer": "Armstrong Group",
            "position": null,
            "size": 5,
            "image": null,
            "data_ports": 0,
            "serialnumber1": "SN511DN",
            "serialnumber2": null,
            "service_tag": "ST186FL",
            "comments": null,
            "notes": null,
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "fields_data": null,
            "parts_data": null,
            "created_at": "2026-07-10T07:50:24.000000Z",
            "updated_at": "2026-07-10T07:50:24.000000Z"
        },
        "colocation": null,
        "connected_item": null,
        "connected_port": null,
        "port_number": 17,
        "port_index": 21,
        "port_mode": "trunk",
        "port_label": "inventore",
        "user_label": "eaque",
        "speed": "10000",
        "high_speed": "1000",
        "if_type": "24",
        "physaddress": "27:9E:8C:75:33:E5",
        "pullable": 1,
        "primary": 1,
        "vlan": 0,
        "vlans": [],
        "opstate": "up",
        "adminstate": "down",
        "type": "",
        "ifInUcastPkts": 2557,
        "ifOutUcastPkts": 732,
        "ifInErrors": 0,
        "ifOutErrors": 0,
        "ifInOctets": 0,
        "ifOutOctets": 0,
        "poll_time": 2026,
        "poll_period": 300,
        "current_in_bps": null,
        "current_out_bps": null,
        "current_total_bps": null,
        "current_usage_percent": null,
        "rate_valid": false,
        "created_at": "2026-07-10 09:50:25",
        "updated_at": "2026-07-10 09:50:25"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ports/{id}/assign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the port. Example: 1

Body Parameters

connected_item   integer     

Item id of connected item. The id of an existing record in the items table. Example: 12

connected_port   integer     

Port Id of connected port. The id of an existing record in the item_ports table. Example: 115

Unassign port

requires authentication

Unassign network port

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ports/1/unassign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ports/1/unassign'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ports/1/unassign';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 7514,
        "name": null,
        "description": "Aut delectus rem sed molestiae.",
        "item": {
            "id": 1074,
            "name": null,
            "label": "voluptas",
            "type_id": 1971,
            "location_id": 3047,
            "status": "available",
            "description": "Cupiditate doloremque deleniti ipsum temporibus similique.",
            "is_part": false,
            "mountable": true,
            "manufacturer": "McClure-Kreiger",
            "position": null,
            "size": 9,
            "image": null,
            "data_ports": 0,
            "serialnumber1": "SN107VA",
            "serialnumber2": null,
            "service_tag": "ST287ED",
            "comments": null,
            "notes": null,
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "fields_data": null,
            "parts_data": null,
            "created_at": "2026-07-10T07:50:25.000000Z",
            "updated_at": "2026-07-10T07:50:25.000000Z"
        },
        "colocation": null,
        "connected_item": null,
        "connected_port": null,
        "port_number": 17,
        "port_index": 34,
        "port_mode": "access",
        "port_label": "ipsam",
        "user_label": "molestias",
        "speed": "10000",
        "high_speed": "1000",
        "if_type": "103",
        "physaddress": "67:9C:43:90:46:67",
        "pullable": 1,
        "primary": 0,
        "vlan": 0,
        "vlans": [],
        "opstate": "down",
        "adminstate": "down",
        "type": "",
        "ifInUcastPkts": 337,
        "ifOutUcastPkts": 9360,
        "ifInErrors": 0,
        "ifOutErrors": 0,
        "ifInOctets": 0,
        "ifOutOctets": 0,
        "poll_time": 2026,
        "poll_period": 300,
        "current_in_bps": null,
        "current_out_bps": null,
        "current_total_bps": null,
        "current_usage_percent": null,
        "rate_valid": false,
        "created_at": "2026-07-10 09:50:26",
        "updated_at": "2026-07-10 09:50:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ports/{id}/unassign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the port. Example: 1

Enable port

requires authentication

Enable port with given id.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ports/1/enable" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ports/1/enable'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ports/1/enable';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ports/{id}/enable

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the port. Example: 1

Disable port

requires authentication

Disable port with given id.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ports/1/disable" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ports/1/disable'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ports/1/disable';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ports/{id}/disable

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the port. Example: 1

Delete Port

requires authentication

Removes the specified port from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/ports/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ports/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ports/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/ports/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the port. Example: 5

Orders

List orders

requires authentication

Returns a paginated list of orders

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/orders?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 577,
            "ordernumber": 367486,
            "user_id": 5500,
            "status": "pending",
            "service_status": "waiting",
            "type": "Colocation",
            "options": {
                "autostart": true
            },
            "service": null,
            "created_at": "2026-07-10 09:50:26",
            "updated_at": "2026-07-10 09:50:26"
        },
        {
            "id": 578,
            "ordernumber": 239662,
            "user_id": 5501,
            "status": "accepted",
            "service_status": "suspended",
            "type": "Colocation",
            "options": {
                "autostart": true
            },
            "service": null,
            "created_at": "2026-07-10 09:50:26",
            "updated_at": "2026-07-10 09:50:26"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/orders?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/orders",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/orders

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, ordernumber, status, service_status, type, user_id. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, ordernumber, status, service_status, type, user_id. Example: id

Show order

requires authentication

Display detailed information about a single order by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/orders/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 579,
        "ordernumber": 311134,
        "user_id": 5502,
        "status": "accepted",
        "service_status": "terminated",
        "type": "Colocation",
        "options": {
            "autostart": true
        },
        "service": null,
        "created_at": "2026-07-10 09:50:26",
        "updated_at": "2026-07-10 09:50:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/orders/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 1

Create order

requires authentication

Creates a new order in the system based on the given module, client, and criteria.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/orders" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"module\": \"Server\",
    \"client\": 1,
    \"auto_accept\": true
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders'
payload = {
    "module": "Server",
    "client": 1,
    "auto_accept": true
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'module' => 'Server',
            'client' => 1,
            'auto_accept' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 580,
        "ordernumber": 557707,
        "user_id": 5503,
        "status": "pending",
        "service_status": "provisioning",
        "type": "Colocation",
        "options": {
            "autostart": true
        },
        "service": null,
        "created_at": "2026-07-10 09:50:26",
        "updated_at": "2026-07-10 09:50:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/orders

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

module   string     

The provisioning module to use for the order. Allowed values: Server, Colocation. Example: Server

Must be one of:
  • Server
  • Colocation
client   integer     

The ID of the client creating the order. The id of an existing record in the users table. Example: 1

auto_accept   boolean  optional    

When true, the order is automatically accepted and the service is provisioned immediately after creation. Example: true

criteria   string[]  optional    
location   integer  optional    

ID of the location the device must be assigned to. The id of an existing record in the locations table. Example: 1

require_pdu   boolean  optional    

When true, only devices with a PDU connection are matched. Example: true

require_switch   boolean  optional    

When true, only devices with a switch connection are matched. Example: true

parts   object  optional    

Part requirements keyed by component type ID. Each entry is an array of requirement sets (model IDs, metadata criteria). Multiple sets are treated as OR.

metadata   object  optional    

Metadata field requirements keyed by field ID. Each entry must contain a value key.

service   string[]  optional    
ssh_keys   integer[]  optional    

SSH key ID. The id of an existing record in the ssh_keys table.

template   integer  optional    

ID of the OS template to install. Requires install_os in actions.activate to trigger actual installation. The id of an existing record in the os_templates table. Example: 2

hostname   string  optional    

Hostname to assign to the provisioned server. Example: vps.local

username   string  optional    

OS login username. Example: user

password   string  optional    

OS login password. Stored encrypted. Example: pass

root_password   string  optional    

Root password for the OS. Stored encrypted. Example: rootpass

disk_addon   integer  optional    

ID of the disk layout addon to apply during OS installation. The id of an existing record in the os_addons table. Example: 79

extras   integer[]  optional    

Addon ID. The id of an existing record in the os_addons table.

additional_ips   string  optional    

Subnet mask for additional IP assignment. Use CIDR notation to request the next available subnet of that size. Example: /29

monthly_traffic_limit   integer  optional    

Total monthly traffic limit in GB (inbound + outbound combined). Managed by UsageCollector. Must be at least 0. Example: 100

monthly_traffic_limit_in   integer  optional    

Monthly inbound traffic limit in GB. Managed by UsageCollector. Must be at least 0. Example: 100

monthly_traffic_limit_out   integer  optional    

Monthly outbound traffic limit in GB. Managed by UsageCollector. Must be at least 0. Example: 100

monthly_traffic_percentile_limit   integer  optional    

Monthly 95th-percentile traffic limit in GB. Managed by UsageCollector. Must be at least 0. Example: 100

access_level   integer  optional    

ID of the service access level to assign to the provisioned service. The id of an existing record in the services_access_levels table. Example: 1

other   string[]  optional    
custom_device   integer  optional    

Forces assignment to a specific device ID instead of automatic matching. The id of an existing record in the items table. Example: 171

actions   string[]  optional    
activate   string[]  optional    
suspend   string[]  optional    
unsuspend   string[]  optional    
terminate   string[]  optional    

Quick create & activate order

requires authentication

Creates a new order for a specific device and customer. The order is automatically accepted and the device assigned.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/orders/quick-create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"module\": \"Server\",
    \"client\": 1,
    \"device_id\": 10
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/quick-create'
payload = {
    "module": "Server",
    "client": 1,
    "device_id": 10
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/quick-create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'module' => 'Server',
            'client' => 1,
            'device_id' => 10,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 581,
        "ordernumber": 787227,
        "user_id": 5504,
        "status": "pending",
        "service_status": "provisioning",
        "type": "Server",
        "options": {
            "autostart": true
        },
        "service": null,
        "created_at": "2026-07-10 09:50:26",
        "updated_at": "2026-07-10 09:50:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/orders/quick-create

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

module   string     

The provisioning module to use for the order. Allowed values: Server, Colocation. Example: Server

Must be one of:
  • Server
  • Colocation
client   integer     

The ID of the client creating the order. The id of an existing record in the users table. Example: 1

device_id   integer     

The ID of the device to assign to the order. The device must be available and not assigned to another customer. The id of an existing record in the items table. Example: 10

Update order

requires authentication

Update order details before it is accepted.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/orders/123" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client\": 1
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/123'
payload = {
    "client": 1
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/123';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'client' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 582,
        "ordernumber": 935070,
        "user_id": 5505,
        "status": "pending",
        "service_status": "waiting",
        "type": "Server",
        "options": {
            "autostart": true
        },
        "service": null,
        "created_at": "2026-07-10 09:50:26",
        "updated_at": "2026-07-10 09:50:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/orders/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 123

Body Parameters

client   integer  optional    

The ID of the client assigned to the order. The id of an existing record in the users table. Example: 1

criteria   string[]  optional    
location   integer  optional    

ID of the location the device must be assigned to. The id of an existing record in the locations table. Example: 1

require_pdu   boolean  optional    

When true, only devices with a PDU connection are matched. Example: true

require_switch   boolean  optional    

When true, only devices with a switch connection are matched. Example: true

parts   object  optional    

Part requirements keyed by component type ID. Each entry is an array of requirement sets (model IDs, metadata criteria). Multiple sets are treated as OR.

metadata   object  optional    

Metadata field requirements keyed by field ID. Each entry must contain a value key.

service   string[]  optional    
ssh_keys   integer[]  optional    

SSH key ID. The id of an existing record in the ssh_keys table.

template   integer  optional    

ID of the OS template to install. Requires install_os in actions.activate to trigger actual installation. The id of an existing record in the os_templates table. Example: 4

hostname   string  optional    

Hostname to assign to the provisioned server. Example: updated-vps.local

username   string  optional    

OS login username. Example: user

password   string  optional    

OS login password. Stored encrypted. Example: pass

root_password   string  optional    

Root password for the OS. Stored encrypted. Example: rootpass

disk_addon   integer  optional    

ID of the disk layout addon to apply during OS installation. The id of an existing record in the os_addons table. Example: 79

extras   integer[]  optional    

Addon ID. The id of an existing record in the os_addons table.

additional_ips   string  optional    

Subnet mask for additional IP assignment. Use CIDR notation to request the next available subnet of that size. Example: /29

monthly_traffic_limit   integer  optional    

Total monthly traffic limit in GB (inbound + outbound combined). Managed by UsageCollector. Must be at least 0. Example: 100

monthly_traffic_limit_in   integer  optional    

Monthly inbound traffic limit in GB. Managed by UsageCollector. Must be at least 0. Example: 100

monthly_traffic_limit_out   integer  optional    

Monthly outbound traffic limit in GB. Managed by UsageCollector. Must be at least 0. Example: 100

monthly_traffic_percentile_limit   integer  optional    

Monthly 95th-percentile traffic limit in GB. Managed by UsageCollector. Must be at least 0. Example: 100

access_level   integer  optional    

ID of the service access level to assign to the provisioned service. The id of an existing record in the services_access_levels table. Example: 1

other   string[]  optional    
custom_device   integer  optional    

Forces assignment to a specific device ID instead of automatic matching. The id of an existing record in the items table. Example: 171

actions   string[]  optional    
activate   string[]  optional    
suspend   string[]  optional    
unsuspend   string[]  optional    
terminate   string[]  optional    

Delete order

requires authentication

Deletes an order by ID.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/orders/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/orders/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 1

Accept order

requires authentication

Accepts an order by ID and optionally activates the service if configured.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/orders/1/accept" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/1/accept'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/1/accept';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 583,
        "ordernumber": 352538,
        "user_id": 5506,
        "status": "pending",
        "service_status": "terminated",
        "type": "Server",
        "options": {
            "autostart": true
        },
        "service": null,
        "created_at": "2026-07-10 09:50:26",
        "updated_at": "2026-07-10 09:50:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/orders/{id}/accept

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 1

Activate service

requires authentication

Activates the service assigned to the specified order.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/orders/1/service/activate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/1/service/activate'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/1/service/activate';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "order": {
            "id": 31,
            "ordernumber": 16,
            "user_id": 1,
            "status": "accepted",
            "service_status": "activated",
            "type": "Server",
            "options": [],
            "service": {
                "id": 40,
                "related_id": 41,
                "type": "Server",
                "status": "provisioning",
                "related": {
                    "label": "label6",
                    "model": "Generic",
                    "location": "New York",
                    "location_flag": null,
                    "rack": null,
                    "device_status": "running",
                    "uptime": "172 days, 18h 17m 15s",
                    "ip_addresses": [
                        "192.168.56.128"
                    ],
                    "metadata": []
                },
                "access_level": {
                    "id": 1,
                    "name": "Full Access",
                    "type": "Server",
                    "default": true
                },
                "created_at": "2025-10-16 09:41:48"
            },
            "created_at": "2025-10-16 09:41:48",
            "updated_at": "2025-10-20 12:45:21"
        },
        "result": true
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/orders/{id}/service/activate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 1

Suspend service

requires authentication

Suspends the service assigned to the specified order.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/orders/1/service/suspend" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/1/service/suspend'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/1/service/suspend';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "order": {
            "id": 31,
            "ordernumber": 16,
            "user_id": 1,
            "status": "accepted",
            "service_status": "suspended",
            "type": "Server",
            "options": [],
            "service": {
                "id": 40,
                "related_id": 41,
                "type": "Server",
                "status": "provisioning",
                "related": {
                    "label": "label6",
                    "model": "Generic",
                    "location": "New York",
                    "location_flag": null,
                    "rack": null,
                    "device_status": "running",
                    "uptime": "172 days, 18h 17m 15s",
                    "ip_addresses": [
                        "192.168.56.128"
                    ],
                    "metadata": []
                },
                "access_level": {
                    "id": 1,
                    "name": "Full Access",
                    "type": "Server",
                    "default": true
                },
                "created_at": "2025-10-16 09:41:48"
            },
            "created_at": "2025-10-16 09:41:48",
            "updated_at": "2025-10-20 12:45:21"
        },
        "result": true
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/orders/{id}/service/suspend

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 1

Unsuspend service

requires authentication

Unsuspends the service assigned to the specified order.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/orders/1/service/unsuspend" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/1/service/unsuspend'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/1/service/unsuspend';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "order": {
            "id": 31,
            "ordernumber": 16,
            "user_id": 1,
            "status": "accepted",
            "service_status": "activated",
            "type": "Server",
            "options": [],
            "service": {
                "id": 40,
                "related_id": 41,
                "type": "Server",
                "status": "provisioning",
                "related": {
                    "label": "label6",
                    "model": "Generic",
                    "location": "New York",
                    "location_flag": null,
                    "rack": null,
                    "device_status": "running",
                    "uptime": "172 days, 18h 17m 15s",
                    "ip_addresses": [
                        "192.168.56.128"
                    ],
                    "metadata": []
                },
                "access_level": {
                    "id": 1,
                    "name": "Full Access",
                    "type": "Server",
                    "default": true
                },
                "created_at": "2025-10-16 09:41:48"
            },
            "created_at": "2025-10-16 09:41:48",
            "updated_at": "2025-10-20 12:45:21"
        },
        "result": true
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/orders/{id}/service/unsuspend

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 1

Terminate service

requires authentication

Terminates the service belonging to the specified order.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/orders/1/service/terminate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/1/service/terminate'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/1/service/terminate';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "order": {
            "id": 31,
            "ordernumber": 16,
            "user_id": 1,
            "status": "accepted",
            "service_status": "terminated",
            "type": "Server",
            "options": [],
            "service": [],
            "created_at": "2025-10-16 09:41:48",
            "updated_at": "2025-10-20 12:45:21"
        },
        "result": true
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/orders/{id}/service/terminate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 1

List provisioning logs

requires authentication

Returns a paginated list of provisioning logs for a given order.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/orders/123/provisioning-logs?per_page=10&page=1&sort_by=date_string&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=message" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/123/provisioning-logs'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'date_string',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'message',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/123/provisioning-logs';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'date_string',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'message',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "date": "2025-10-16 09:41:48",
            "level": "NOTICE",
            "message": "#ServerProvisioningModule Activate service action has been started"
        },
        {
            "date": "2025-10-16 09:41:48",
            "level": "INFO",
            "message": "#ServerProvisioningModule Found the applicable device model: http://easydcim_hostname/backend/devices/41/summary with hostname  192.168.56.128"
        },
        {
            "date": "2025-10-16 09:41:48",
            "level": "INFO",
            "message": "#ServerProvisioningModule Device status has changed"
        },
        {
            "date": "2025-10-16 09:41:48",
            "level": "INFO",
            "message": "#ServerProvisioningModule Device is going to be used during provisioning process"
        },
        {
            "date": "2025-10-16 09:41:48",
            "level": "INFO",
            "message": "#ServerProvisioningModule Client and order have been associated with device"
        },
        {
            "date": "2025-10-16 09:41:48",
            "level": "INFO",
            "message": "#ServerProvisioningModule Save the changes on device model"
        },
        {
            "date": "2025-10-16 09:41:48",
            "level": "ERROR",
            "message": "#ServerProvisioningModule Project ID not found for service ID: 40"
        },
        {
            "date": "2025-10-16 09:41:49",
            "level": "INFO",
            "message": "#ServerProvisioningModule [Usage Collector] Trying to set monthly traffic limit"
        },
        {
            "date": "2025-10-16 09:41:49",
            "level": "INFO",
            "message": "#ServerProvisioningModule [Usage Collector] Start Date has been set: first day of this month"
        },
        {
            "date": "2025-10-16 09:41:49",
            "level": "INFO",
            "message": "#ServerProvisioningModule [Usage Collector] Traffic limit IN/OUT has been set: 1 GB. Traffic limit IN has been set: 0.1 GB. Traffic limit OUT has been set: 0.1 GB. Traffic percentile limit has been set: 10 Mbps."
        }
    ],
    "links": {
        "first": "https://your-easydcim.com/api/v3/admin/orders/31/provisioning-logs?page=1",
        "last": "https://your-easydcim.com/api/v3/admin/orders/31/provisioning-logs?page=3",
        "prev": null,
        "next": "https://your-easydcim.com/api/v3/admin/orders/31/provisioning-logs?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 3,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/orders/31/provisioning-logs?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/orders/31/provisioning-logs?page=2",
                "label": "2",
                "page": 2,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/orders/31/provisioning-logs?page=3",
                "label": "3",
                "page": 3,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/orders/31/provisioning-logs?page=2",
                "label": "Next »",
                "page": 2,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/orders/31/provisioning-logs",
        "per_page": 10,
        "to": 10,
        "total": 30,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/orders/{id}/provisioning-logs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the order. Example: 123

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: date_string, level. Example: date_string

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: message. Example: message

Get order actions

requires authentication

Returns available global and module-specific actions for the given module type and action.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/orders/actions/list?type=Server&action=activate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"Colocation\",
    \"action\": \"suspend\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/actions/list'
payload = {
    "type": "Colocation",
    "action": "suspend"
}
params = {
  'type': 'Server',
  'action': 'activate',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/actions/list';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'type' => 'Server',
            'action' => 'activate',
        ],
        'json' => [
            'type' => 'Colocation',
            'action' => 'suspend',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "globalActions": [
            "boot",
            "ports"
        ],
        "allActions": {
            "boot": "Boot a device",
            "ports": "Enable traffic aggregation ports",
            "notifications_delete": "Delete notifications",
            "install_os": "[OS Installation] Install Operating System",
            "ipmi_create_operator_account": "[IPMI Integration] Create Operator Account",
            "ipam_assign_subnet": "[IP Address Management] Assign Subnet",
            "ipam_set_primary_ip": "[IP Address Management] Assign Primary IP to Device",
            "remove_dns": "[DNS Management] Delete zones and rDNS records",
            "add_dns_zone": "[DNS Management] Create zone",
            "add_rdns": "[DNS Management] Create rDNS records",
            "uc_set_usage_limit": "[Usage Collector] Set the monthly traffic limit"
        }
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/orders/actions/list

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

type   string     

The module type. Allowed: Server, Colocation. Example: Server

action   string     

The order action. Allowed: activate, suspend, unsuspend, terminate. Example: activate

Body Parameters

type   string     

Example: Colocation

Must be one of:
  • Server
  • Colocation
action   string     

Example: suspend

Must be one of:
  • activate
  • suspend
  • unsuspend
  • terminate

Get Devices in Stock Based on Criteria

requires authentication

Returns a devices in stock number based on order criteria

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/orders/stock" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"criteria\": {
        \"model\": 12,
        \"location\": 12,
        \"require_parts\": 1,
        \"parts\": {
            \"8\": {
                \"model\": [
                    16,
                    12
                ],
                \"hdd.size\": [
                    1048576,
                    2048576
                ]
            },
            \"9\": {
                \"model\": [
                    25,
                    21
                ],
                \"ssd.size\": [
                    \"524288|1048576\",
                    524288
                ]
            }
        }
    }
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/orders/stock'
payload = {
    "criteria": {
        "model": 12,
        "location": 12,
        "require_parts": 1,
        "parts": {
            "8": {
                "model": [
                    16,
                    12
                ],
                "hdd.size": [
                    1048576,
                    2048576
                ]
            },
            "9": {
                "model": [
                    25,
                    21
                ],
                "ssd.size": [
                    "524288|1048576",
                    524288
                ]
            }
        }
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/orders/stock';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'criteria' => [
                'model' => 12,
                'location' => 12,
                'require_parts' => 1,
                'parts' => [
                    8 => [
                        'model' => [
                            16,
                            12,
                        ],
                        'hdd.size' => [
                            1048576,
                            2048576,
                        ],
                    ],
                    [
                        'model' => [
                            25,
                            21,
                        ],
                        'ssd.size' => [
                            '524288|1048576',
                            524288,
                        ],
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "stock": 10
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/orders/stock

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

criteria   object     

Criteria for searching the devices in stock. Can include model, location, parts, metadata, etc.

Device Bays

List Device Bays

requires authentication

Returns a paginated list of device bays.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/device-bays?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/device-bays'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/device-bays';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 75,
            "name": "Rachelle Russel I",
            "order": 8,
            "parent_id": 1076,
            "child_id": 1075,
            "created_at": "2026-07-10 09:50:29",
            "updated_at": "2026-07-10 09:50:29"
        },
        {
            "id": 76,
            "name": "Miss Marcella Lockman",
            "order": 7,
            "parent_id": 1078,
            "child_id": 1077,
            "created_at": "2026-07-10 09:50:31",
            "updated_at": "2026-07-10 09:50:31"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/device-bays?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/device-bays",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/device-bays

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, parent_id, child_id, name. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, parent_id, child_id, name. Example: id

Show Device Bay

requires authentication

Display detailed information about a single device bay by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/device-bays/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/device-bays/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/device-bays/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 77,
        "name": "Dr. Alejandra Raynor Jr.",
        "order": 3,
        "parent": {
            "id": 1080,
            "label": "consequuntur",
            "model": "eos",
            "product_id": 0,
            "model_id": 1549,
            "parent_id": 0,
            "type_id": 6,
            "user_id": 5523,
            "order_id": 0,
            "location_id": 3059,
            "rack_id": 0,
            "blade_id": 0,
            "os_installation": 0,
            "colocation_id": 0,
            "provisioning_id": 0,
            "manufacturer": "Mann LLC",
            "description": "Est in expedita aut maxime unde officiis.",
            "comments": null,
            "status": "available",
            "device_status": "running",
            "service_status": "activated",
            "function": null,
            "serialnumber1": "SN431ER",
            "serialnumber2": null,
            "service_tag": "ST475RP",
            "location": "Aufderhar-Vandervort",
            "metadata": [],
            "locked": 0,
            "last_discovered": "Never",
            "discovery_time": 0,
            "last_polled": "Never",
            "poller_disabled": 0,
            "poller_time": 0,
            "last_hour_traffic": 0,
            "last_day_traffic": 0,
            "last_week_traffic": 0,
            "last_month_traffic": 0,
            "current_month_traffic": 0,
            "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
            "device_traffic": null
        },
        "child": null,
        "created_at": "2026-07-10 09:50:34",
        "updated_at": "2026-07-10 09:50:34"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/device-bays/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device bay. Example: 1

Create Device Bay

requires authentication

Store a new device bay in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/device-bays" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"First Device Bay\",
    \"parent_id\": 10,
    \"child_id\": 18,
    \"order\": 1
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/device-bays'
payload = {
    "name": "First Device Bay",
    "parent_id": 10,
    "child_id": 18,
    "order": 1
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/device-bays';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'First Device Bay',
            'parent_id' => 10,
            'child_id' => 18,
            'order' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 78,
        "name": "Claudine Runolfsdottir DVM",
        "order": 3,
        "parent": {
            "id": 1082,
            "label": "doloremque",
            "model": "ipsa",
            "product_id": 0,
            "model_id": 1553,
            "parent_id": 0,
            "type_id": 6,
            "user_id": 5529,
            "order_id": 0,
            "location_id": 3063,
            "rack_id": 0,
            "blade_id": 0,
            "os_installation": 0,
            "colocation_id": 0,
            "provisioning_id": 0,
            "manufacturer": "Dicki-Rowe",
            "description": "Numquam ut beatae et quaerat odit.",
            "comments": null,
            "status": "available",
            "device_status": "running",
            "service_status": "activated",
            "function": null,
            "serialnumber1": "SN607VF",
            "serialnumber2": null,
            "service_tag": "ST998NT",
            "location": "Krajcik-Cassin",
            "metadata": [],
            "locked": 0,
            "last_discovered": "Never",
            "discovery_time": 0,
            "last_polled": "Never",
            "poller_disabled": 0,
            "poller_time": 0,
            "last_hour_traffic": 0,
            "last_day_traffic": 0,
            "last_week_traffic": 0,
            "last_month_traffic": 0,
            "current_month_traffic": 0,
            "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
            "device_traffic": null
        },
        "child": {
            "id": 1081,
            "label": "deleniti",
            "model": "est",
            "product_id": 0,
            "model_id": 1551,
            "parent_id": 0,
            "type_id": 1982,
            "user_id": 5526,
            "order_id": 0,
            "location_id": 3063,
            "rack_id": 0,
            "blade_id": 0,
            "os_installation": 0,
            "colocation_id": 0,
            "provisioning_id": 0,
            "manufacturer": "Langworth, McGlynn and Huel",
            "description": "Et unde assumenda delectus officiis.",
            "comments": null,
            "status": "available",
            "device_status": "running",
            "service_status": "activated",
            "function": null,
            "serialnumber1": "SN490NI",
            "serialnumber2": null,
            "service_tag": "ST044HT",
            "location": "Krajcik-Cassin",
            "metadata": [],
            "locked": 0,
            "last_discovered": "Never",
            "discovery_time": 0,
            "last_polled": "Never",
            "poller_disabled": 0,
            "poller_time": 0,
            "last_hour_traffic": 0,
            "last_day_traffic": 0,
            "last_week_traffic": 0,
            "last_month_traffic": 0,
            "current_month_traffic": 0,
            "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
            "device_traffic": null
        },
        "created_at": "2026-07-10 09:50:36",
        "updated_at": "2026-07-10 09:50:36"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/device-bays

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The name of the device bay. Example: First Device Bay

parent_id   integer     

Parent Id of device bay. Must be device id of Blade type device. The id of an existing record in the items table. Example: 10

child_id   integer     

Child Id of device bay. Must be device id of size 0 device. The id of an existing record in the items table. Example: 18

order   integer  optional    

The order of the device bay. Example: 1

Update Device Bay

requires authentication

Updates the specified device bay with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/device-bays/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"First Device Bay\",
    \"child_id\": 18,
    \"order\": 1
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/device-bays/1'
payload = {
    "name": "First Device Bay",
    "child_id": 18,
    "order": 1
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/device-bays/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'First Device Bay',
            'child_id' => 18,
            'order' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 79,
        "name": "Dee Zulauf",
        "order": 1,
        "parent": {
            "id": 1084,
            "label": "pariatur",
            "model": "perferendis",
            "product_id": 0,
            "model_id": 1557,
            "parent_id": 0,
            "type_id": 6,
            "user_id": 5535,
            "order_id": 0,
            "location_id": 3067,
            "rack_id": 0,
            "blade_id": 0,
            "os_installation": 0,
            "colocation_id": 0,
            "provisioning_id": 0,
            "manufacturer": "Bailey-Bosco",
            "description": "Rerum enim et sapiente sed tempora rem itaque.",
            "comments": null,
            "status": "available",
            "device_status": "running",
            "service_status": "activated",
            "function": null,
            "serialnumber1": "SN834XH",
            "serialnumber2": null,
            "service_tag": "ST715EG",
            "location": "Wilkinson Inc",
            "metadata": [],
            "locked": 0,
            "last_discovered": "Never",
            "discovery_time": 0,
            "last_polled": "Never",
            "poller_disabled": 0,
            "poller_time": 0,
            "last_hour_traffic": 0,
            "last_day_traffic": 0,
            "last_week_traffic": 0,
            "last_month_traffic": 0,
            "current_month_traffic": 0,
            "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
            "device_traffic": null
        },
        "child": null,
        "created_at": "2026-07-10 09:50:39",
        "updated_at": "2026-07-10 09:50:39"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/device-bays/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device bay. Example: 1

Body Parameters

name   string  optional    

The name of the device bay. Example: First Device Bay

child_id   integer  optional    

Child Id of device bay. Must be device id of size 0 device. The id of an existing record in the items table. Example: 18

order   integer  optional    

The order of the device bay. Example: 1

Delete Device Bay

requires authentication

Removes the specified device bay from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/device-bays/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/device-bays/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/device-bays/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/device-bays/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device bay. Example: 5

Item Types

List Item Types

requires authentication

Returns a paginated list of item types.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/types?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/types'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/types';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 1988,
            "name": "sint",
            "description": "Consequatur qui quo quam eos fugiat ut.",
            "hardware": 0,
            "software": 0,
            "predefined": 0,
            "color": "olive",
            "created_at": "2026-07-10 09:50:39",
            "updated_at": "2026-07-10 09:50:39"
        },
        {
            "id": 1989,
            "name": "a",
            "description": "Ut fugiat dolores aspernatur repudiandae et neque.",
            "hardware": 1,
            "software": 1,
            "predefined": 1,
            "color": "navy",
            "created_at": "2026-07-10 09:50:39",
            "updated_at": "2026-07-10 09:50:39"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/types?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/types",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/types

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, predefined. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, description. Example: id

Show Item Type

requires authentication

Display detailed information about a single item type by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/types/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/types/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/types/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1990,
        "name": "reiciendis",
        "description": "Sunt quis eum vero voluptatem sed.",
        "hardware": 0,
        "software": 1,
        "predefined": 1,
        "color": "maroon",
        "created_at": "2026-07-10 09:50:39",
        "updated_at": "2026-07-10 09:50:39"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/types/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item type. Example: 1

Create Item Type

requires authentication

Store a new item type in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Blade\",
    \"description\": \"Blade type description\",
    \"group\": \"hardware\",
    \"color\": \"#A8DBA8\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/types'
payload = {
    "name": "Blade",
    "description": "Blade type description",
    "group": "hardware",
    "color": "#A8DBA8"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/types';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Blade',
            'description' => 'Blade type description',
            'group' => 'hardware',
            'color' => '#A8DBA8',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1991,
        "name": "aliquid",
        "description": "Eius reiciendis incidunt aperiam tempore soluta.",
        "hardware": 1,
        "software": 1,
        "predefined": 0,
        "color": "green",
        "created_at": "2026-07-10 09:50:39",
        "updated_at": "2026-07-10 09:50:39"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/types

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The name of the item type. Example: Blade

description   string  optional    

The description of the item type. Example: Blade type description

group   string  optional    

The group of the type. Example: hardware

Must be one of:
  • hardware
  • software
color   string  optional    

The color of the item type. Example: #A8DBA8

Update Item Type

requires authentication

Updates the specified item type with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/types/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Blade\",
    \"description\": \"Blade type description\",
    \"group\": \"hardware\",
    \"color\": \"#A8DBA8\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/types/1'
payload = {
    "name": "Blade",
    "description": "Blade type description",
    "group": "hardware",
    "color": "#A8DBA8"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/types/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Blade',
            'description' => 'Blade type description',
            'group' => 'hardware',
            'color' => '#A8DBA8',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1992,
        "name": "eum",
        "description": "Aut voluptate dolorum possimus natus dolor minima.",
        "hardware": 0,
        "software": 1,
        "predefined": 1,
        "color": "green",
        "created_at": "2026-07-10 09:50:39",
        "updated_at": "2026-07-10 09:50:39"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/types/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item type. Example: 1

Body Parameters

name   string  optional    

The name of the item type. Example: Blade

description   string  optional    

The description of the item type. Example: Blade type description

group   string  optional    

The group of the type. Example: hardware

Must be one of:
  • hardware
  • software
color   string  optional    

The color of the item type. Example: #A8DBA8

Delete Item type

requires authentication

Removes the specified item type from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/types/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/types/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/types/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/types/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item type. Example: 5

Groups

List Groups

requires authentication

Returns a paginated list of groups.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/groups?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/groups'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/groups';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 64,
            "title": "Estevan Tillman DDS"
        },
        {
            "id": 65,
            "title": "Murl Carroll"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/groups?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/groups",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/groups

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, title. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, title. Example: id

List Permissions

requires authentication

Returns a paginated list of permissions.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/permissions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/permissions'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/permissions';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 481,
            "name": "occaecati.ut.dolor",
            "display_name": "Maximillia Carroll",
            "created_at": "2026-07-10 09:50:39",
            "updated_at": "2026-07-10 09:50:39"
        },
        {
            "id": 482,
            "name": "in.quibusdam.non",
            "display_name": "Ciara Bashirian IV",
            "created_at": "2026-07-10 09:50:39",
            "updated_at": "2026-07-10 09:50:39"
        }
    ]
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/permissions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Show Group

requires authentication

Display detailed information about a single group by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/groups/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/groups/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/groups/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 66,
        "title": "Bernhard Dickinson",
        "permissions": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/groups/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the group. Example: 1

Create Group

requires authentication

Store a new group in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/groups" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Employees\",
    \"permissions\": [
        1
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/groups'
payload = {
    "title": "Employees",
    "permissions": [
        1
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/groups';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'title' => 'Employees',
            'permissions' => [
                1,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 67,
        "title": "Prof. Kiara McClure DVM",
        "permissions": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/groups

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

title   string     

The name of the group. Example: Employees

permissions   integer[]  optional    

Array of permissions ids. The id of an existing record in the permissions table.

Update Group

requires authentication

Updates the specified group with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/groups/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Employees\",
    \"permissions\": [
        1
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/groups/1'
payload = {
    "title": "Employees",
    "permissions": [
        1
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/groups/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'title' => 'Employees',
            'permissions' => [
                1,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 68,
        "title": "Arvid Runte",
        "permissions": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/groups/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the group. Example: 1

Body Parameters

title   string  optional    

The name of the group. Example: Employees

permissions   integer[]  optional    

Array of permissions ids. The id of an existing record in the permissions table.

Delete Group

requires authentication

Removes the specified group from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/groups/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/groups/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/groups/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/groups/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the group. Example: 5

Items

List Items

requires authentication

Returns a paginated list of items.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/items?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/items'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/items';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 1085,
            "model_id": 1559,
            "parent_id": 0,
            "type_id": 1993,
            "user_id": 5538,
            "location_id": 3069,
            "rack_id": 0,
            "position": null,
            "image": null,
            "is_part": 1,
            "mountable": 0,
            "model": "temporibus",
            "manufacturer": "Rau, Blanda and Stamm",
            "serialnumber1": "SN764XH",
            "serialnumber2": null,
            "service_tag": "ST551GH",
            "comments": null,
            "label": "ut",
            "description": "Eum laudantium id ullam sequi sed assumenda voluptatem.",
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "status": "available",
            "function": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "notes": null,
            "created_at": "2026-07-10 09:50:39",
            "updated_at": "2026-07-10 09:50:39"
        },
        {
            "id": 1086,
            "model_id": 1561,
            "parent_id": 0,
            "type_id": 1995,
            "user_id": 5541,
            "location_id": 3071,
            "rack_id": 0,
            "position": null,
            "image": null,
            "is_part": 1,
            "mountable": 0,
            "model": "cumque",
            "manufacturer": "Jacobson, Bartoletti and Larson",
            "serialnumber1": "SN290JW",
            "serialnumber2": null,
            "service_tag": "ST551WU",
            "comments": null,
            "label": "consectetur",
            "description": "Magni quisquam ut error enim.",
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "status": "available",
            "function": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "notes": null,
            "created_at": "2026-07-10 09:50:40",
            "updated_at": "2026-07-10 09:50:40"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/items?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/items",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/items

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, model_id, parent_id, type_id, user_id, location_id, label, description. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, model_id, parent_id, type_id, user_id, location_id, label, description. Example: id

Show Item

requires authentication

Display detailed information about a single item by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/items/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/items/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/items/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1087,
        "model": {
            "id": 1563,
            "name": "repellat",
            "label": null,
            "type_id": 1997,
            "location_id": 0,
            "status": null,
            "description": null,
            "is_part": false,
            "mountable": true,
            "manufacturer": null,
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": null,
            "serialnumber1": null,
            "serialnumber2": null,
            "service_tag": null,
            "comments": null,
            "notes": null,
            "purchase_date": null,
            "warranty_months": null,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": null,
            "appdata": false,
            "fields_data": false,
            "parts_data": false,
            "created_at": "2026-07-10T07:50:42.000000Z",
            "updated_at": "2026-07-10T07:50:42.000000Z"
        },
        "user": {
            "id": 5544,
            "username": "brannon.schuster",
            "email": "[email protected]",
            "name": "Guido Kassulke",
            "firstname": "Guido",
            "lastname": "Kassulke",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/2c60241ee7134118d12700cbf86f97eb?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/2c60241ee7134118d12700cbf86f97eb?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "type": {
            "id": 1997,
            "name": "molestiae",
            "description": "Sed aperiam ipsa delectus sunt.",
            "hardware": 1,
            "software": 1,
            "predefined": 1,
            "color": "silver",
            "created_at": "2026-07-10 09:50:41",
            "updated_at": "2026-07-10 09:50:41"
        },
        "parent": null,
        "location": {
            "id": 3073,
            "app_id": null,
            "name": "Douglas-Gerlach",
            "address": "58879 Lockman Highway Apt. 897\nHowardside, DC 44539",
            "city": "Hughside",
            "state": "District of Columbia",
            "description": "Aperiam rerum non sit officia. Qui omnis corporis quas molestiae incidunt rerum. Facere iusto nihil dolor neque temporibus est. Veniam voluptates natus animi accusantium et eligendi pariatur sequi.",
            "notes": "Vero voluptas dolorum sint quibusdam et. Autem voluptas exercitationem repellat dolores ut mollitia. Autem et aliquid occaecati. Omnis aut voluptatem saepe molestiae. Alias corporis rerum quia est.",
            "emergency": "1",
            "phone": "760.203.5207",
            "flag": "USA.png",
            "created_at": "2026-07-10 09:50:42",
            "updated_at": "2026-07-10 09:50:42"
        },
        "rack": null,
        "metadata": [],
        "position": null,
        "image": null,
        "is_part": 0,
        "mountable": 1,
        "manufacturer": "Champlin-Mertz",
        "serialnumber1": "SN426FC",
        "serialnumber2": null,
        "service_tag": "ST068JL",
        "comments": null,
        "label": "dolore",
        "description": "In et consequatur animi quam.",
        "purchase_date": "2025-07-10",
        "warranty_months": 24,
        "warranty_info": null,
        "status": "available",
        "function": null,
        "origin": null,
        "buy_price": 0,
        "appdata": false,
        "notes": null,
        "created_at": "2026-07-10 09:50:41",
        "updated_at": "2026-07-10 09:50:41"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/items/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item. Example: 1

Show Item QR Code

requires authentication

Display QR code for item by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/items/1/qrcode?size=300" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/items/1/qrcode'
params = {
  'size': '300',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/items/1/qrcode';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'size' => '300',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAAFAAQMAAAD3XjfpAAAABlBMVEX///8AAABVwtN+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB6UlEQVRoge2WQZbDIAxDuYHvf0tu4GmxZDxpAnRdMX1pge9ZKEaiNY3fGeZj9GY9pu9fryen2BW4A2Nh7M2F1+PNEBd4AFosWKg+5ijCrAs8B9mrVD1egMBvQfwKJ8gSgecgDADNG8YZRfdOIfAWnFt3f5/JJfAWrMOyg6H/FRD4CKJBs107KpqV9yBwC1JoNCeQDCOPgBe4A4d9/nOEGVPRyVBc4BJsvAlFDWTmHuygCdyCV709S0LxuMkL3IBInrHOiyYul2EEznunwCXo2a68aPa54dwReACOL6YQXLT0LwmBK7BDcj4joaK2zyKBGzCETrsMsl/+gcAd2Oapt/IGePaH3i5wC5oT8LTUzkSKTzqFwGdw7MFHYZgMo4io6qQCn8GW5xueadAbWlsagMAFOE00dO+1T6vcApcgHIARFNueF876XgSuwDZPf41xukJrVXKBT2A0btG0T1OF2sbkErgA2au9xFAiKBN4BuLgZ/TAE2wKL3APelmcytNP2dcCl2Ce/LRMY7gbWrhEksAnkLIasscZSexndwaSwBUIlxwf6lwKsmsFbkAaQHn2qEqxBX4BUvmRUdnSqbnAMzBzKBSGqVJ+gVuQXTlYNm8mk+OSJHADZiClwqF8GOmYXZJL4A2o8SvjD1rk6zzrRJ7rAAAAAElFTkSuQmCC"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/items/{id}/qrcode

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item. Example: 1

Query Parameters

size   integer  optional    

The size of the QR code. Example: 300

Create Item

requires authentication

Store a new item in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/items" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"label\": \"Intel Xeon\",
    \"model\": 123,
    \"type_id\": 1,
    \"user_id\": 5,
    \"parent_id\": 10,
    \"location_id\": 3,
    \"is_part\": true,
    \"manufacturer\": \"Intel\",
    \"serialnumber1\": \"SN123456789\",
    \"service_tag\": \"ST987654\",
    \"comments\": \"Example comment\",
    \"description\": \"Intel Xeon server CPU with 8 cores\",
    \"purchase_date\": \"2025-09-17\",
    \"warranty_months\": 36,
    \"warranty_info\": \"Standard 3-year warranty\",
    \"status\": \"available\",
    \"function\": \"Server CPU\",
    \"origin\": \"Warehouse A\",
    \"buy_price\": 2500.5,
    \"appdata\": {
        \"key\": \"value\"
    },
    \"notes\": \"Needs firmware update\",
    \"metadata\": [
        {
            \"metadata_id\": 37,
            \"value\": \"1\",
            \"raw_value\": \"1\"
        }
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/items'
payload = {
    "label": "Intel Xeon",
    "model": 123,
    "type_id": 1,
    "user_id": 5,
    "parent_id": 10,
    "location_id": 3,
    "is_part": true,
    "manufacturer": "Intel",
    "serialnumber1": "SN123456789",
    "service_tag": "ST987654",
    "comments": "Example comment",
    "description": "Intel Xeon server CPU with 8 cores",
    "purchase_date": "2025-09-17",
    "warranty_months": 36,
    "warranty_info": "Standard 3-year warranty",
    "status": "available",
    "function": "Server CPU",
    "origin": "Warehouse A",
    "buy_price": 2500.5,
    "appdata": {
        "key": "value"
    },
    "notes": "Needs firmware update",
    "metadata": [
        {
            "metadata_id": 37,
            "value": "1",
            "raw_value": "1"
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/items';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'label' => 'Intel Xeon',
            'model' => 123,
            'type_id' => 1,
            'user_id' => 5,
            'parent_id' => 10,
            'location_id' => 3,
            'is_part' => true,
            'manufacturer' => 'Intel',
            'serialnumber1' => 'SN123456789',
            'service_tag' => 'ST987654',
            'comments' => 'Example comment',
            'description' => 'Intel Xeon server CPU with 8 cores',
            'purchase_date' => '2025-09-17',
            'warranty_months' => 36,
            'warranty_info' => 'Standard 3-year warranty',
            'status' => 'available',
            'function' => 'Server CPU',
            'origin' => 'Warehouse A',
            'buy_price' => 2500.5,
            'appdata' => [
                'key' => 'value',
            ],
            'notes' => 'Needs firmware update',
            'metadata' => [
                [
                    'metadata_id' => 37,
                    'value' => '1',
                    'raw_value' => '1',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1088,
        "model": {
            "id": 1565,
            "name": "et",
            "label": null,
            "type_id": 1999,
            "location_id": 0,
            "status": null,
            "description": null,
            "is_part": true,
            "mountable": false,
            "manufacturer": null,
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": null,
            "serialnumber1": null,
            "serialnumber2": null,
            "service_tag": null,
            "comments": null,
            "notes": null,
            "purchase_date": null,
            "warranty_months": null,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": null,
            "appdata": false,
            "fields_data": false,
            "parts_data": false,
            "created_at": "2026-07-10T07:50:43.000000Z",
            "updated_at": "2026-07-10T07:50:43.000000Z"
        },
        "user": {
            "id": 5547,
            "username": "glynch",
            "email": "[email protected]",
            "name": "Marisol Welch",
            "firstname": "Marisol",
            "lastname": "Welch",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/d0daf83c8e56728fa095f6145b2c6bbb?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/d0daf83c8e56728fa095f6145b2c6bbb?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "type": {
            "id": 1999,
            "name": "hic",
            "description": "Iste culpa repudiandae cumque quis et ducimus.",
            "hardware": 0,
            "software": 0,
            "predefined": 1,
            "color": "olive",
            "created_at": "2026-07-10 09:50:42",
            "updated_at": "2026-07-10 09:50:42"
        },
        "parent": null,
        "location": {
            "id": 3075,
            "app_id": null,
            "name": "Lowe, Roob and Jerde",
            "address": "3712 Cole Extension Suite 489\nLake Letamouth, IN 99833",
            "city": "West Watsonchester",
            "state": "Vermont",
            "description": "Ex qui officia ullam earum voluptatem enim sequi rerum. Reiciendis ab ut excepturi eum et earum. Omnis cum explicabo qui aliquid aspernatur saepe.",
            "notes": "Iusto doloremque placeat eum ipsam omnis laudantium. Incidunt nulla et numquam nihil quam architecto. Et amet provident quia eum.",
            "emergency": "0",
            "phone": "1-337-774-8498",
            "flag": "Germany.png",
            "created_at": "2026-07-10 09:50:43",
            "updated_at": "2026-07-10 09:50:43"
        },
        "rack": null,
        "metadata": [],
        "position": null,
        "image": null,
        "is_part": 1,
        "mountable": 0,
        "manufacturer": "Koelpin Ltd",
        "serialnumber1": "SN244HJ",
        "serialnumber2": null,
        "service_tag": "ST326MX",
        "comments": null,
        "label": "officiis",
        "description": "Unde quis vel qui nihil.",
        "purchase_date": "2025-07-10",
        "warranty_months": 24,
        "warranty_info": null,
        "status": "available",
        "function": null,
        "origin": null,
        "buy_price": 0,
        "appdata": false,
        "notes": null,
        "created_at": "2026-07-10 09:50:42",
        "updated_at": "2026-07-10 09:50:42"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/items

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

label   string     

The name of the item. Example: Intel Xeon

model   string     

The model ID of the item, or a custom string for new models. Example: 123

type_id   integer     

The type ID of the item. The id of an existing record in the item_types table. Example: 1

user_id   integer  optional    

The user ID assigned to the item. The id of an existing record in the users table. Example: 5

parent_id   integer  optional    

The parent item ID, if this item is mountable. The id of an existing record in the items table. Example: 10

location_id   integer  optional    

The location ID where the item is stored. The id of an existing record in the locations table. Example: 3

is_part   boolean  optional    

Determine if this item is part. Example: true

manufacturer   string  optional    

The manufacturer of the item. Example: Intel

serialnumber1   string  optional    

Primary serial number of the item. Example: SN123456789

service_tag   string  optional    

Unique service tag or identifier of the item. Example: ST987654

comments   string  optional    

Any additional comments about the item. Example: Example comment

description   string  optional    

Detailed description of the item. Example: Intel Xeon server CPU with 8 cores

purchase_date   string  optional    

The purchase date of the item. Must be a valid date. Must be a valid date in the format Y-m-d. Example: 2025-09-17

warranty_months   integer  optional    

Warranty period in months. Example: 36

warranty_info   string  optional    

Additional warranty information. Example: Standard 3-year warranty

status   string  optional    

Current status of the item. Example: available

Must be one of:
  • available
  • bought
  • defect
  • in use
  • not_delivered
  • sold
  • repair
  • not_set
function   string  optional    

The function or role of the item. Example: Server CPU

origin   string  optional    

The origin or source of the item. Example: Warehouse A

buy_price   number  optional    

Purchase price of the item. Example: 2500.5

appdata   object  optional    

Additional application-specific data for the item.

notes   string  optional    

Additional notes about the item. Example: Needs firmware update

metadata   object[]     
metadata_id   integer     

The ID of the metadata type. The id of an existing record in the types_fields table. Example: 37

value   string     

The value of the metadata entry. Example: 1

raw_value   string  optional    

Optional raw value for the metadata entry. Example: 1

Update Item

requires authentication

Updates the specified item with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/items/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"label\": \"Intel Xeon\",
    \"model\": 123,
    \"user_id\": 5,
    \"parent_id\": 10,
    \"location_id\": 3,
    \"is_part\": true,
    \"manufacturer\": \"Intel\",
    \"serialnumber1\": \"SN123456789\",
    \"service_tag\": \"ST987654\",
    \"comments\": \"Example comment\",
    \"description\": \"Intel Xeon server CPU with 8 cores\",
    \"purchase_date\": \"2025-09-17\",
    \"warranty_months\": 36,
    \"warranty_info\": \"Standard 3-year warranty\",
    \"status\": \"available\",
    \"function\": \"Server CPU\",
    \"origin\": \"Warehouse A\",
    \"buy_price\": 2500.5,
    \"appdata\": {
        \"key\": \"value\"
    },
    \"notes\": \"Needs firmware update\",
    \"metadata\": [
        {
            \"metadata_id\": 37,
            \"value\": \"1\",
            \"raw_value\": \"1\"
        }
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/items/1'
payload = {
    "label": "Intel Xeon",
    "model": 123,
    "user_id": 5,
    "parent_id": 10,
    "location_id": 3,
    "is_part": true,
    "manufacturer": "Intel",
    "serialnumber1": "SN123456789",
    "service_tag": "ST987654",
    "comments": "Example comment",
    "description": "Intel Xeon server CPU with 8 cores",
    "purchase_date": "2025-09-17",
    "warranty_months": 36,
    "warranty_info": "Standard 3-year warranty",
    "status": "available",
    "function": "Server CPU",
    "origin": "Warehouse A",
    "buy_price": 2500.5,
    "appdata": {
        "key": "value"
    },
    "notes": "Needs firmware update",
    "metadata": [
        {
            "metadata_id": 37,
            "value": "1",
            "raw_value": "1"
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/items/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'label' => 'Intel Xeon',
            'model' => 123,
            'user_id' => 5,
            'parent_id' => 10,
            'location_id' => 3,
            'is_part' => true,
            'manufacturer' => 'Intel',
            'serialnumber1' => 'SN123456789',
            'service_tag' => 'ST987654',
            'comments' => 'Example comment',
            'description' => 'Intel Xeon server CPU with 8 cores',
            'purchase_date' => '2025-09-17',
            'warranty_months' => 36,
            'warranty_info' => 'Standard 3-year warranty',
            'status' => 'available',
            'function' => 'Server CPU',
            'origin' => 'Warehouse A',
            'buy_price' => 2500.5,
            'appdata' => [
                'key' => 'value',
            ],
            'notes' => 'Needs firmware update',
            'metadata' => [
                [
                    'metadata_id' => 37,
                    'value' => '1',
                    'raw_value' => '1',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1089,
        "model": {
            "id": 1567,
            "name": "tempora",
            "label": null,
            "type_id": 2001,
            "location_id": 0,
            "status": null,
            "description": null,
            "is_part": false,
            "mountable": true,
            "manufacturer": null,
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": null,
            "serialnumber1": null,
            "serialnumber2": null,
            "service_tag": null,
            "comments": null,
            "notes": null,
            "purchase_date": null,
            "warranty_months": null,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": null,
            "appdata": false,
            "fields_data": false,
            "parts_data": false,
            "created_at": "2026-07-10T07:50:45.000000Z",
            "updated_at": "2026-07-10T07:50:45.000000Z"
        },
        "user": {
            "id": 5550,
            "username": "ludie05",
            "email": "[email protected]",
            "name": "Destany Bode",
            "firstname": "Destany",
            "lastname": "Bode",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/0cf62eac7c53b994f66915315b416272?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/0cf62eac7c53b994f66915315b416272?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "type": {
            "id": 2001,
            "name": "voluptatum",
            "description": "Quaerat exercitationem et omnis pariatur nobis voluptatem ipsum.",
            "hardware": 1,
            "software": 1,
            "predefined": 1,
            "color": "maroon",
            "created_at": "2026-07-10 09:50:43",
            "updated_at": "2026-07-10 09:50:43"
        },
        "parent": null,
        "location": {
            "id": 3077,
            "app_id": null,
            "name": "Blanda, Feest and Lakin",
            "address": "688 Alfonso Gardens Apt. 834\nSouth Walker, NE 82007",
            "city": "Gibsonville",
            "state": "Montana",
            "description": "Sequi quis optio modi rerum inventore assumenda. Voluptatibus quis soluta deserunt doloribus ullam enim ullam.",
            "notes": "Est et odio id. Sint dolore cumque magni qui inventore voluptates ex. Consequatur iusto rerum expedita.",
            "emergency": "0",
            "phone": "480.539.1032",
            "flag": "Germany.png",
            "created_at": "2026-07-10 09:50:45",
            "updated_at": "2026-07-10 09:50:45"
        },
        "rack": null,
        "metadata": [],
        "position": null,
        "image": null,
        "is_part": 0,
        "mountable": 1,
        "manufacturer": "Lang-Wilkinson",
        "serialnumber1": "SN950TD",
        "serialnumber2": null,
        "service_tag": "ST616WX",
        "comments": null,
        "label": "similique",
        "description": "Ad blanditiis ut voluptatum id.",
        "purchase_date": "2025-07-10",
        "warranty_months": 24,
        "warranty_info": null,
        "status": "available",
        "function": null,
        "origin": null,
        "buy_price": 0,
        "appdata": false,
        "notes": null,
        "created_at": "2026-07-10 09:50:43",
        "updated_at": "2026-07-10 09:50:43"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/items/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item. Example: 1

Body Parameters

label   string  optional    

The name of the item. Example: Intel Xeon

model   integer  optional    

The model ID of the item. Example: 123

user_id   integer  optional    

The user ID assigned to the item. The id of an existing record in the users table. Example: 5

parent_id   integer  optional    

The parent item ID, if this item is mountable. The id of an existing record in the items table. Example: 10

location_id   integer  optional    

The location ID where the item is stored. The id of an existing record in the locations table. Example: 3

is_part   boolean  optional    

Determine if this item is part. Example: true

manufacturer   string  optional    

The manufacturer of the item. Example: Intel

serialnumber1   string  optional    

Primary serial number of the item. Example: SN123456789

service_tag   string  optional    

Unique service tag or identifier of the item. Example: ST987654

comments   string  optional    

Any additional comments about the item. Example: Example comment

description   string  optional    

Detailed description of the item. Example: Intel Xeon server CPU with 8 cores

purchase_date   string  optional    

The purchase date of the item. Must be a valid date. Must be a valid date in the format Y-m-d. Example: 2025-09-17

warranty_months   integer  optional    

Warranty period in months. Example: 36

warranty_info   string  optional    

Additional warranty information. Example: Standard 3-year warranty

status   string  optional    

Current status of the item. Example: available

Must be one of:
  • available
  • bought
  • defect
  • in use
  • not_delivered
  • sold
  • repair
  • not_set
function   string  optional    

The function or role of the item. Example: Server CPU

origin   string  optional    

The origin or source of the item. Example: Warehouse A

buy_price   number  optional    

Purchase price of the item. Example: 2500.5

appdata   object  optional    

Additional application-specific data for the item.

notes   string  optional    

Additional notes about the item. Example: Needs firmware update

metadata   object[]     
metadata_id   integer     

The ID of the metadata type. The id of an existing record in the types_fields table. Example: 37

value   string     

The value of the metadata entry. Example: 1

raw_value   string  optional    

Optional raw value for the metadata entry. Example: 1

Assign Metadata To Item

requires authentication

Assigns metadata for specified item.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/items/1/metadata/assign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"slug\": \"ipmi.ip\",
    \"value\": \"192.168.56.180\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/items/1/metadata/assign'
payload = {
    "slug": "ipmi.ip",
    "value": "192.168.56.180"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/items/1/metadata/assign';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'slug' => 'ipmi.ip',
            'value' => '192.168.56.180',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1090,
        "model": {
            "id": 1569,
            "name": "adipisci",
            "label": null,
            "type_id": 2003,
            "location_id": 0,
            "status": null,
            "description": null,
            "is_part": true,
            "mountable": false,
            "manufacturer": null,
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": null,
            "serialnumber1": null,
            "serialnumber2": null,
            "service_tag": null,
            "comments": null,
            "notes": null,
            "purchase_date": null,
            "warranty_months": null,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": null,
            "appdata": false,
            "fields_data": false,
            "parts_data": false,
            "created_at": "2026-07-10T07:50:46.000000Z",
            "updated_at": "2026-07-10T07:50:46.000000Z"
        },
        "user": {
            "id": 5553,
            "username": "may57",
            "email": "[email protected]",
            "name": "Omer Kling",
            "firstname": "Omer",
            "lastname": "Kling",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/58c29e10d28f3614e7da6c4a7ba172a9?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/58c29e10d28f3614e7da6c4a7ba172a9?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "type": {
            "id": 2003,
            "name": "corrupti",
            "description": "Dolores esse eos et sed.",
            "hardware": 1,
            "software": 0,
            "predefined": 1,
            "color": "blue",
            "created_at": "2026-07-10 09:50:45",
            "updated_at": "2026-07-10 09:50:45"
        },
        "parent": null,
        "location": {
            "id": 3079,
            "app_id": null,
            "name": "Powlowski-Raynor",
            "address": "50548 Cullen Fork Suite 598\nLarkinhaven, ID 96649-7513",
            "city": "Jeanside",
            "state": "Montana",
            "description": "Sed quia omnis recusandae commodi exercitationem. Exercitationem doloribus voluptatibus suscipit. Ullam earum laborum dolorum qui in esse modi.",
            "notes": "Nemo necessitatibus sit reiciendis laboriosam. Pariatur et nisi assumenda esse. Dolorum aliquam et corporis amet. Esse dicta incidunt repellat.",
            "emergency": "1",
            "phone": "(931) 705-5211",
            "flag": "USA.png",
            "created_at": "2026-07-10 09:50:46",
            "updated_at": "2026-07-10 09:50:46"
        },
        "rack": null,
        "metadata": [],
        "position": null,
        "image": null,
        "is_part": 1,
        "mountable": 0,
        "manufacturer": "Kilback-Cassin",
        "serialnumber1": "SN610JI",
        "serialnumber2": null,
        "service_tag": "ST452MI",
        "comments": null,
        "label": "odit",
        "description": "Illo id ullam illo possimus.",
        "purchase_date": "2025-07-10",
        "warranty_months": 24,
        "warranty_info": null,
        "status": "available",
        "function": null,
        "origin": null,
        "buy_price": 0,
        "appdata": false,
        "notes": null,
        "created_at": "2026-07-10 09:50:45",
        "updated_at": "2026-07-10 09:50:45"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/items/{id}/metadata/assign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item. Example: 1

Body Parameters

slug   string     

The slug of the item metadata field. The slug of an existing record in the types_fields table. Example: ipmi.ip

value   string  optional    

The value for the item metadata field. Null clears the value. Example: 192.168.56.180

Delete Item

requires authentication

Removes the specified item from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/items/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/items/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/items/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/items/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item. Example: 5

Item Type Fields

List Item Type Fields

requires authentication

Returns a paginated list of item type fields.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/fields?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/fields'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/fields';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 157,
            "related_type": null,
            "element": "text",
            "group": "Base",
            "slug": "aut.perspiciatis.qui",
            "label": "Prof. Giuseppe Lockman V",
            "options": {
                "sint consectetur maiores ducimus aut": "sint consectetur maiores ducimus aut"
            },
            "predefined": 1,
            "hidden": 0,
            "provisionable": 0,
            "combined": 0,
            "filterable": 0,
            "filterable_type": null,
            "unique": 1,
            "sortable": 0,
            "encrypted": 0,
            "additional_rules": [
                "libero",
                "facilis",
                "cum",
                "necessitatibus",
                "voluptatum"
            ],
            "order": 70,
            "types": [],
            "created_at": "2026-07-10 09:50:46",
            "updated_at": "2026-07-10 09:50:46"
        },
        {
            "id": 158,
            "related_type": null,
            "element": "text_multi",
            "group": "Base",
            "slug": "aut.quia.autem",
            "label": "Prof. Brennon Pollich",
            "options": {
                "pariatur qui dolor et est": "pariatur qui dolor et est"
            },
            "predefined": 1,
            "hidden": 0,
            "provisionable": 1,
            "combined": 0,
            "filterable": 0,
            "filterable_type": null,
            "unique": 1,
            "sortable": 0,
            "encrypted": 0,
            "additional_rules": [
                "consequuntur",
                "sed",
                "rerum",
                "recusandae",
                "autem"
            ],
            "order": 37,
            "types": [],
            "created_at": "2026-07-10 09:50:46",
            "updated_at": "2026-07-10 09:50:46"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/fields?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/fields",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/fields

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, slug, predefined, label, unique. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, slug, predefined, label, unique. Example: id

Show Item Type Field

requires authentication

Display detailed information about a single item type field by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/fields/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/fields/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/fields/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 159,
        "related_type": null,
        "element": "text_multi",
        "group": "Base",
        "slug": "placeat.beatae.adipisci",
        "label": "Leatha Schaefer",
        "options": {
            "asperiores blanditiis quo repellendus doloribus": "asperiores blanditiis quo repellendus doloribus"
        },
        "predefined": 1,
        "hidden": 0,
        "provisionable": 0,
        "combined": 0,
        "filterable": 0,
        "filterable_type": null,
        "unique": 0,
        "sortable": 1,
        "encrypted": 1,
        "additional_rules": [
            "nobis",
            "non",
            "at",
            "nobis",
            "aliquid"
        ],
        "order": 19,
        "values": [],
        "types": [],
        "created_at": "2026-07-10 09:50:46",
        "updated_at": "2026-07-10 09:50:46"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/fields/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item type field. Example: 1

Create Item Type Field

requires authentication

Store a new item type field in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/fields" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"element\": \"text\",
    \"group\": \"Base\",
    \"slug\": \"hostname\",
    \"label\": \"Host Name\",
    \"options\": \"option1,option2\",
    \"hidden\": false,
    \"provisionable\": true,
    \"combined\": false,
    \"filterable\": true,
    \"filterable_type\": \"equals\",
    \"unique\": true,
    \"sortable\": true,
    \"encrypted\": false,
    \"additional_rules\": [
        \"ip\",
        \"email\"
    ],
    \"order\": 1,
    \"types\": [
        1
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/fields'
payload = {
    "element": "text",
    "group": "Base",
    "slug": "hostname",
    "label": "Host Name",
    "options": "option1,option2",
    "hidden": false,
    "provisionable": true,
    "combined": false,
    "filterable": true,
    "filterable_type": "equals",
    "unique": true,
    "sortable": true,
    "encrypted": false,
    "additional_rules": [
        "ip",
        "email"
    ],
    "order": 1,
    "types": [
        1
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/fields';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'element' => 'text',
            'group' => 'Base',
            'slug' => 'hostname',
            'label' => 'Host Name',
            'options' => 'option1,option2',
            'hidden' => false,
            'provisionable' => true,
            'combined' => false,
            'filterable' => true,
            'filterable_type' => 'equals',
            'unique' => true,
            'sortable' => true,
            'encrypted' => false,
            'additional_rules' => [
                'ip',
                'email',
            ],
            'order' => 1,
            'types' => [
                1,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 160,
        "related_type": null,
        "element": "text_multi",
        "group": "Base",
        "slug": "beatae.quod.tempore",
        "label": "Shaun Wolff V",
        "options": {
            "temporibus alias debitis ut voluptatum": "temporibus alias debitis ut voluptatum"
        },
        "predefined": 1,
        "hidden": 1,
        "provisionable": 0,
        "combined": 0,
        "filterable": 0,
        "filterable_type": null,
        "unique": 0,
        "sortable": 0,
        "encrypted": 0,
        "additional_rules": [
            "aliquid",
            "aut",
            "et",
            "culpa",
            "beatae"
        ],
        "order": 68,
        "values": [],
        "types": [],
        "created_at": "2026-07-10 09:50:46",
        "updated_at": "2026-07-10 09:50:46"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/fields

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

element   string     

The type of element. Example: text

Must be one of:
  • text
  • dropdown
  • text_multi
  • textarea
group   string  optional    

The group this field belongs to. Can be "Base", "System", "IPMI Additional Settings", "SSH Settings", or a custom group. Must not be greater than 255 characters. Example: Base

slug   string     

Unique identifier for the field. Must not be greater than 255 characters. Example: hostname

label   string     

Human-readable label for the field. Must not be greater than 255 characters. Example: Host Name

options   string  optional    

Comma seperated optional list for dropdown element type. Example: option1,option2

hidden   boolean  optional    

Determines if the field is hidden. Example: false

provisionable   boolean  optional    

Determines if the field is provisionable. Example: true

combined   boolean  optional    

Determines if the field is combined. Example: false

filterable   boolean  optional    

Determines if the field is filterable. Example: true

filterable_type   string  optional    

Type of filter. This field is required when filterable is 1. Example: equals

unique   boolean  optional    

Determines if the field value must be unique. Example: true

sortable   boolean  optional    

Determines if the field is sortable. Example: true

encrypted   boolean  optional    

Determines if the field value will be stored encrypted. Example: false

additional_rules   object  optional    

Additional rules for the field.

order   integer  optional    

Position of the field in the list. Must be at least 0. Example: 1

types   integer[]  optional    

List of related item type IDs. The id of an existing record in the item_types table.

Update Item Type Field

requires authentication

Updates the specified item type field with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/fields/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"element\": \"text\",
    \"group\": \"Base\",
    \"slug\": \"hostname\",
    \"label\": \"Host Name\",
    \"options\": \"option1,option2\",
    \"hidden\": false,
    \"provisionable\": true,
    \"combined\": false,
    \"filterable\": true,
    \"filterable_type\": \"equals\",
    \"unique\": true,
    \"sortable\": true,
    \"encrypted\": false,
    \"additional_rules\": [
        \"ip\",
        \"email\"
    ],
    \"order\": 1,
    \"types\": [
        1
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/fields/1'
payload = {
    "element": "text",
    "group": "Base",
    "slug": "hostname",
    "label": "Host Name",
    "options": "option1,option2",
    "hidden": false,
    "provisionable": true,
    "combined": false,
    "filterable": true,
    "filterable_type": "equals",
    "unique": true,
    "sortable": true,
    "encrypted": false,
    "additional_rules": [
        "ip",
        "email"
    ],
    "order": 1,
    "types": [
        1
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/fields/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'element' => 'text',
            'group' => 'Base',
            'slug' => 'hostname',
            'label' => 'Host Name',
            'options' => 'option1,option2',
            'hidden' => false,
            'provisionable' => true,
            'combined' => false,
            'filterable' => true,
            'filterable_type' => 'equals',
            'unique' => true,
            'sortable' => true,
            'encrypted' => false,
            'additional_rules' => [
                'ip',
                'email',
            ],
            'order' => 1,
            'types' => [
                1,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 161,
        "related_type": null,
        "element": "textarea",
        "group": "Base",
        "slug": "corrupti.ipsum.dignissimos",
        "label": "Hilbert Oberbrunner",
        "options": {
            "ad rerum consectetur magni id": "ad rerum consectetur magni id"
        },
        "predefined": 0,
        "hidden": 1,
        "provisionable": 1,
        "combined": 0,
        "filterable": 0,
        "filterable_type": null,
        "unique": 0,
        "sortable": 0,
        "encrypted": 1,
        "additional_rules": [
            "quam",
            "qui",
            "in",
            "totam",
            "molestiae"
        ],
        "order": 81,
        "values": [],
        "types": [],
        "created_at": "2026-07-10 09:50:46",
        "updated_at": "2026-07-10 09:50:46"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/fields/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item type field. Example: 1

Body Parameters

element   string  optional    

The type of element. Example: text

Must be one of:
  • text
  • dropdown
  • text_multi
  • textarea
group   string  optional    

The group this field belongs to. Can be "Base", "System", "IPMI Additional Settings", "SSH Settings", or a custom group. Must not be greater than 255 characters. Example: Base

slug   string  optional    

Unique identifier for the field. Must not be greater than 255 characters. Example: hostname

label   string  optional    

Human-readable label for the field. Must not be greater than 255 characters. Example: Host Name

options   string  optional    

Comma seperated optional list for dropdown element type. Example: option1,option2

hidden   boolean  optional    

Determines if the field is hidden. Example: false

provisionable   boolean  optional    

Determines if the field is provisionable. Example: true

combined   boolean  optional    

Determines if the field is combined. Example: false

filterable   boolean  optional    

Determines if the field is filterable. Example: true

filterable_type   string  optional    

Type of filter. This field is required when filterable is 1. Example: equals

unique   boolean  optional    

Determines if the field value must be unique. Example: true

sortable   boolean  optional    

Determines if the field is sortable. Example: true

encrypted   boolean  optional    

Determines if the field value will be stored encrypted. Example: false

additional_rules   object  optional    

Additional rules for the field.

order   integer  optional    

Position of the field in the list. Must be at least 0. Example: 1

types   integer[]  optional    

List of related item type IDs. The id of an existing record in the item_types table.

Delete Item Type Field

requires authentication

Removes the specified item type field from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/fields/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/fields/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/fields/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/fields/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the item type field. Example: 5

Power Ports

List Power Ports

requires authentication

Returns a paginated list of power ports.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/power-ports?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/power-ports'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/power-ports';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 445,
            "name": "placeat",
            "description": "Est enim esse autem aut.",
            "item_id": 1091,
            "colocation_id": 0,
            "port_number": 7,
            "port_label": "est",
            "user_label": "quidem",
            "outlet_state": "outletOn",
            "connected_item": null,
            "connected_port": null,
            "power_usage": 68,
            "power_usage_units": "Amps",
            "power_usage_value": 68,
            "power_usage_unit": "amps",
            "power_usage_label": "68 Amps",
            "created_at": "2026-07-10 09:50:46",
            "updated_at": "2026-07-10 09:50:46"
        },
        {
            "id": 446,
            "name": "veniam",
            "description": "Consequatur et ab ea.",
            "item_id": 1092,
            "colocation_id": 0,
            "port_number": 3,
            "port_label": "voluptas",
            "user_label": "rerum",
            "outlet_state": "down",
            "connected_item": null,
            "connected_port": null,
            "power_usage": 3,
            "power_usage_units": "Amps",
            "power_usage_value": 3,
            "power_usage_unit": "amps",
            "power_usage_label": "3 Amps",
            "created_at": "2026-07-10 09:50:48",
            "updated_at": "2026-07-10 09:50:48"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/power-ports?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/power-ports",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/power-ports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, item_id, colocation_id, port_number, port_index, name, port_label, description. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, item_id, colocation_id, port_number, port_index, name, port_label, description. Example: id

Show Power Port

requires authentication

Display detailed information about a single power port by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/power-ports/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/power-ports/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/power-ports/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 447,
        "name": "rerum",
        "description": "Deleniti nulla minima cupiditate eum possimus aliquid.",
        "item": {
            "id": 1093,
            "name": null,
            "label": "quia",
            "type_id": 2009,
            "location_id": 3089,
            "status": "available",
            "description": "Facilis nesciunt est fuga est.",
            "is_part": false,
            "mountable": true,
            "manufacturer": "Howe-Larson",
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": 0,
            "serialnumber1": "SN921QM",
            "serialnumber2": null,
            "service_tag": "ST978SW",
            "comments": null,
            "notes": null,
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "fields_data": null,
            "parts_data": null,
            "created_at": "2026-07-10T07:50:51.000000Z",
            "updated_at": "2026-07-10T07:50:51.000000Z"
        },
        "colocation": null,
        "port_number": 21,
        "port_label": "aliquam",
        "user_label": "voluptatibus",
        "outlet_state": "up",
        "connected_item": null,
        "connected_port": null,
        "power_usage": 18,
        "power_usage_units": "Amps",
        "power_usage_value": 18,
        "power_usage_unit": "amps",
        "power_usage_label": "18 Amps",
        "created_at": "2026-07-10 09:50:51",
        "updated_at": "2026-07-10 09:50:51"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/power-ports/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the power port. Example: 1

Create Power Port

requires authentication

Store a new power port in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/power-ports" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"port_number\": 1,
    \"device_id\": 115,
    \"port_label\": \"Power Port 1\",
    \"primary\": true,
    \"description\": \"This is description of the power port\",
    \"user_label\": \"Description of power port\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/power-ports'
payload = {
    "port_number": 1,
    "device_id": 115,
    "port_label": "Power Port 1",
    "primary": true,
    "description": "This is description of the power port",
    "user_label": "Description of power port"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/power-ports';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'port_number' => 1,
            'device_id' => 115,
            'port_label' => 'Power Port 1',
            'primary' => true,
            'description' => 'This is description of the power port',
            'user_label' => 'Description of power port',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 448,
        "name": "deserunt",
        "description": "Culpa repellendus aut delectus dolor beatae eligendi facere.",
        "item": {
            "id": 1094,
            "name": null,
            "label": "quasi",
            "type_id": 2011,
            "location_id": 3093,
            "status": "available",
            "description": "Id nostrum dolorum qui qui omnis sequi mollitia.",
            "is_part": false,
            "mountable": true,
            "manufacturer": "Anderson Ltd",
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": 0,
            "serialnumber1": "SN851ZL",
            "serialnumber2": null,
            "service_tag": "ST668HF",
            "comments": null,
            "notes": null,
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "fields_data": null,
            "parts_data": null,
            "created_at": "2026-07-10T07:50:53.000000Z",
            "updated_at": "2026-07-10T07:50:53.000000Z"
        },
        "colocation": null,
        "port_number": 14,
        "port_label": "ut",
        "user_label": "ratione",
        "outlet_state": "down",
        "connected_item": null,
        "connected_port": null,
        "power_usage": 77,
        "power_usage_units": "Amps",
        "power_usage_value": 77,
        "power_usage_unit": "amps",
        "power_usage_label": "77 Amps",
        "created_at": "2026-07-10 09:50:53",
        "updated_at": "2026-07-10 09:50:53"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/power-ports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

port_number   integer     

The number of the power port. Must be at least 1. Example: 1

device_id   integer     

Device Id for which power port should be created. The id of an existing record in the items table. Example: 115

port_label   string  optional    

The label of the power port. Must not be greater than 255 characters. Example: Power Port 1

primary   boolean  optional    

Determine if the power port is primary. Example: true

description   string  optional    

The description of the power port. Example: This is description of the power port

user_label   string  optional    

The user label of the power port. Example: Description of power port

Update Power Port

requires authentication

Updates the specified power port with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/power-ports/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"port_number\": 1,
    \"port_label\": 32,
    \"primary\": true,
    \"description\": \"This is description of the power port\",
    \"user_label\": \"Description of power port\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/power-ports/1'
payload = {
    "port_number": 1,
    "port_label": 32,
    "primary": true,
    "description": "This is description of the power port",
    "user_label": "Description of power port"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/power-ports/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'port_number' => 1,
            'port_label' => 32,
            'primary' => true,
            'description' => 'This is description of the power port',
            'user_label' => 'Description of power port',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 449,
        "name": "unde",
        "description": "Laborum sit cupiditate dolores excepturi sed quo impedit.",
        "item": {
            "id": 1095,
            "name": null,
            "label": "ex",
            "type_id": 2013,
            "location_id": 3097,
            "status": "available",
            "description": "Distinctio officiis est vel repellat non itaque enim.",
            "is_part": false,
            "mountable": true,
            "manufacturer": "Schulist-Kuvalis",
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": 0,
            "serialnumber1": "SN872TH",
            "serialnumber2": null,
            "service_tag": "ST462DW",
            "comments": null,
            "notes": null,
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "fields_data": null,
            "parts_data": null,
            "created_at": "2026-07-10T07:50:56.000000Z",
            "updated_at": "2026-07-10T07:50:56.000000Z"
        },
        "colocation": null,
        "port_number": 10,
        "port_label": "libero",
        "user_label": "est",
        "outlet_state": "up",
        "connected_item": null,
        "connected_port": null,
        "power_usage": 50,
        "power_usage_units": "Amps",
        "power_usage_value": 50,
        "power_usage_unit": "amps",
        "power_usage_label": "50 Amps",
        "created_at": "2026-07-10 09:50:56",
        "updated_at": "2026-07-10 09:50:56"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/power-ports/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the power port. Example: 1

Body Parameters

port_number   integer  optional    

The number of the power port. Must be at least 1. Example: 1

port_label   string  optional    

The label of the power port. Must not be greater than 255 characters. Example: 32

primary   boolean  optional    

Determine if the power port is primary. Example: true

description   string  optional    

The description of the power port. Example: This is description of the power port

user_label   string  optional    

The user label of the power port. Example: Description of power port

Assign Power Port

requires authentication

Assign power port to another port

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/power-ports/1/assign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"connected_item\": 12,
    \"connected_port\": 115
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/power-ports/1/assign'
payload = {
    "connected_item": 12,
    "connected_port": 115
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/power-ports/1/assign';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'connected_item' => 12,
            'connected_port' => 115,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 450,
        "name": "et",
        "description": "Quos totam fugit at quia cumque iste beatae.",
        "item": {
            "id": 1096,
            "name": null,
            "label": "distinctio",
            "type_id": 2015,
            "location_id": 3101,
            "status": "available",
            "description": "Aut vel consequatur quia quas inventore.",
            "is_part": false,
            "mountable": true,
            "manufacturer": "Koepp PLC",
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": 0,
            "serialnumber1": "SN778HO",
            "serialnumber2": null,
            "service_tag": "ST853DE",
            "comments": null,
            "notes": null,
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "fields_data": null,
            "parts_data": null,
            "created_at": "2026-07-10T07:50:58.000000Z",
            "updated_at": "2026-07-10T07:50:58.000000Z"
        },
        "colocation": null,
        "port_number": 47,
        "port_label": "ratione",
        "user_label": "dolorem",
        "outlet_state": "down",
        "connected_item": null,
        "connected_port": null,
        "power_usage": 17,
        "power_usage_units": "Amps",
        "power_usage_value": 17,
        "power_usage_unit": "amps",
        "power_usage_label": "17 Amps",
        "created_at": "2026-07-10 09:50:58",
        "updated_at": "2026-07-10 09:50:58"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/power-ports/{id}/assign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the power port. Example: 1

Body Parameters

connected_item   integer     

Item id of connected item. The id of an existing record in the items table. Example: 12

connected_port   integer     

Port Id of connected port. The id of an existing record in the item_power_ports table. Example: 115

Unassign Power Port

requires authentication

Unassigns power port

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/power-ports/1/unassign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/power-ports/1/unassign'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/power-ports/1/unassign';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 451,
        "name": "perferendis",
        "description": "Placeat ducimus qui qui molestias aut.",
        "item": {
            "id": 1097,
            "name": null,
            "label": "soluta",
            "type_id": 2017,
            "location_id": 3105,
            "status": "available",
            "description": "Occaecati eius excepturi ut dolorum iusto at asperiores.",
            "is_part": false,
            "mountable": true,
            "manufacturer": "Douglas-Keebler",
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": 0,
            "serialnumber1": "SN054VV",
            "serialnumber2": null,
            "service_tag": "ST590KX",
            "comments": null,
            "notes": null,
            "purchase_date": "2025-07-10",
            "warranty_months": 24,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": 0,
            "appdata": false,
            "fields_data": null,
            "parts_data": null,
            "created_at": "2026-07-10T07:51:01.000000Z",
            "updated_at": "2026-07-10T07:51:01.000000Z"
        },
        "colocation": null,
        "port_number": 28,
        "port_label": "maxime",
        "user_label": "aliquid",
        "outlet_state": "outletOff",
        "connected_item": null,
        "connected_port": null,
        "power_usage": 57,
        "power_usage_units": "Amps",
        "power_usage_value": 57,
        "power_usage_unit": "amps",
        "power_usage_label": "57 Amps",
        "created_at": "2026-07-10 09:51:01",
        "updated_at": "2026-07-10 09:51:01"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/power-ports/{id}/unassign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the power port. Example: 1

Perform action on a specific Power Port

requires authentication

Executes an outlet action (outletOn, outletOff, outletReboot) for a given port.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/power-ports/1/action" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"action\": \"outletOff\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/power-ports/1/action'
payload = {
    "action": "outletOff"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/power-ports/1/action';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'action' => 'outletOff',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 452,
        "name": "unde",
        "description": "Quo vel quo voluptas autem et.",
        "item": null,
        "colocation": null,
        "port_number": 43,
        "port_label": "nihil",
        "user_label": "est",
        "outlet_state": "down",
        "connected_item": null,
        "connected_port": null,
        "power_usage": 40,
        "power_usage_units": "Amps",
        "power_usage_value": 40,
        "power_usage_unit": "amps",
        "power_usage_label": "40 Amps",
        "created_at": "2026-07-10 09:51:03",
        "updated_at": "2026-07-10 09:51:03"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/power-ports/{id}/action

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the power port. Example: 1

Body Parameters

action   string     

The outlet action to perform. Must be one of: outletOn, outletOff, outletReboot. Example: outletOff

Must be one of:
  • outletOn
  • outletOff
  • outletReboot

Delete Power Port

requires authentication

Removes the specified power port from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/power-ports/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/power-ports/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/power-ports/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/power-ports/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the power port. Example: 5

Sensors

List Sensors

requires authentication

Returns a paginated list of sensors.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/sensors?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/sensors'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/sensors';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 713,
            "item_id": 1099,
            "name": "consequuntur",
            "class": "Fans",
            "type": "Power",
            "unit": "Celsius",
            "index": "Power",
            "reading": 216,
            "last_polled": "0000-00-00 00:00:00",
            "configuration": [],
            "created_at": "2026-07-10 09:51:07",
            "updated_at": "2026-07-10 09:51:07"
        },
        {
            "id": 714,
            "item_id": 1100,
            "name": "itaque",
            "class": "Power Supply",
            "type": "Power",
            "unit": "Watts",
            "index": "Power",
            "reading": 730,
            "last_polled": "0000-00-00 00:00:00",
            "configuration": [],
            "created_at": "2026-07-10 09:51:08",
            "updated_at": "2026-07-10 09:51:08"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/sensors?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/sensors",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/sensors

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, item_id, name, class, type. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, item_id, name, class, type. Example: id

Show sensor

requires authentication

Display detailed information about a single sensor by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/sensors/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/sensors/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/sensors/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 715,
        "item_id": 1101,
        "name": "accusantium",
        "class": "Power Supply",
        "type": "Thermal",
        "unit": "RPM",
        "index": "Thermal",
        "reading": 720,
        "last_polled": "0000-00-00 00:00:00",
        "configuration": [],
        "created_at": "2026-07-10 09:51:09",
        "updated_at": "2026-07-10 09:51:09"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/sensors/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the sensor. Example: 1

Delete Sensor

requires authentication

Removes the specified sensor from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/sensors/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/sensors/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/sensors/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/sensors/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the sensor. Example: 5

Access Levels

List Services Access Levels

requires authentication

Returns a paginated list of access levels.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/service-access-levels?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/service-access-levels'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/service-access-levels';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 60,
            "name": "vero",
            "type": "Colocation",
            "default": 1,
            "value": "a:5:{s:13:\"base_features\";a:5:{i:0;s:8:\"position\";i:1;s:5:\"label\";i:2;s:11:\"description\";i:3;s:8:\"location\";i:4;s:5:\"model\";}s:18:\"traffic_statistics\";a:5:{i:0;s:9:\"filtering\";i:1;s:17:\"left_sidebar_link\";i:2;s:17:\"widget_last_month\";i:3;s:23:\"widget_last_month_graph\";i:4;s:20:\"widget_network_ports\";}s:5:\"power\";a:6:{i:0;s:20:\"widget_average_usage\";i:1;s:17:\"left_sidebar_link\";i:2;s:23:\"widget_last_month_graph\";i:3;s:17:\"widget_last_month\";i:4;s:7:\"outlets\";i:5;s:9:\"filtering\";}s:4:\"ipam\";a:1:{i:0;s:30:\"ipam_widget_in_service_summary\";}s:11:\"dns-manager\";a:4:{i:0;s:11:\"create_rdns\";i:1;s:11:\"delete_rdns\";i:2;s:22:\"rdns_left_sidebar_link\";i:3;s:11:\"update_rdns\";}}"
        },
        {
            "id": 61,
            "name": "tempore",
            "type": "Server",
            "default": 0,
            "value": "a:5:{s:13:\"base_features\";a:5:{i:0;s:5:\"model\";i:1;s:8:\"position\";i:2;s:5:\"label\";i:3;s:11:\"description\";i:4;s:8:\"location\";}s:18:\"traffic_statistics\";a:5:{i:0;s:17:\"widget_last_month\";i:1;s:9:\"filtering\";i:2;s:20:\"widget_network_ports\";i:3;s:23:\"widget_last_month_graph\";i:4;s:17:\"left_sidebar_link\";}s:5:\"power\";a:6:{i:0;s:23:\"widget_last_month_graph\";i:1;s:9:\"filtering\";i:2;s:17:\"widget_last_month\";i:3;s:7:\"outlets\";i:4;s:20:\"widget_average_usage\";i:5;s:17:\"left_sidebar_link\";}s:4:\"ipam\";a:1:{i:0;s:30:\"ipam_widget_in_service_summary\";}s:11:\"dns-manager\";a:4:{i:0;s:11:\"delete_rdns\";i:1;s:11:\"update_rdns\";i:2;s:22:\"rdns_left_sidebar_link\";i:3;s:11:\"create_rdns\";}}"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/service-access-levels?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/service-access-levels",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/service-access-levels

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, type. Example: id

Devices

List Devices

requires authentication

Returns a paginated list of devices.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/devices?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 1102,
            "label": "eaque",
            "model": "cupiditate",
            "product_id": 0,
            "model_id": 1593,
            "parent_id": 0,
            "type_id": 2027,
            "user_id": 5621,
            "order_id": 592,
            "location_id": 3119,
            "rack_id": 0,
            "blade_id": 0,
            "os_installation": 0,
            "colocation_id": 0,
            "provisioning_id": 0,
            "manufacturer": "Gaylord LLC",
            "description": "Nulla distinctio optio voluptatibus autem.",
            "comments": null,
            "status": "available",
            "device_status": "running",
            "service_status": "activated",
            "function": null,
            "serialnumber1": "SN888FG",
            "serialnumber2": null,
            "service_tag": "ST909GT",
            "location": "Sporer-Braun",
            "metadata": [],
            "locked": 0,
            "last_discovered": "Never",
            "discovery_time": 0,
            "last_polled": "Never",
            "poller_disabled": 0,
            "poller_time": 0,
            "last_hour_traffic": 0,
            "last_day_traffic": 0,
            "last_week_traffic": 0,
            "last_month_traffic": 0,
            "current_month_traffic": 0,
            "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
            "device_traffic": null
        },
        {
            "id": 1103,
            "label": "a",
            "model": "officiis",
            "product_id": 0,
            "model_id": 1595,
            "parent_id": 0,
            "type_id": 2029,
            "user_id": 5628,
            "order_id": 593,
            "location_id": 3123,
            "rack_id": 0,
            "blade_id": 0,
            "os_installation": 0,
            "colocation_id": 0,
            "provisioning_id": 0,
            "manufacturer": "Denesik LLC",
            "description": "Esse accusamus ratione ut neque incidunt.",
            "comments": null,
            "status": "available",
            "device_status": "running",
            "service_status": "activated",
            "function": null,
            "serialnumber1": "SN120EE",
            "serialnumber2": null,
            "service_tag": "ST480VR",
            "location": "Pfannerstill, Barton and Jacobi",
            "metadata": [],
            "locked": 0,
            "last_discovered": "Never",
            "discovery_time": 0,
            "last_polled": "Never",
            "poller_disabled": 0,
            "poller_time": 0,
            "last_hour_traffic": 0,
            "last_day_traffic": 0,
            "last_week_traffic": 0,
            "last_month_traffic": 0,
            "current_month_traffic": 0,
            "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
            "device_traffic": null
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/devices?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/devices",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/devices

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, model_id, order_id, parent_id, colocation_id, type_id, user_id, location_id, rack_id, provisioning_id, label, model, manufacturer, serialnumber1, serialnumber2, service_tag, description, comments, status, device_status, service_status, function, poller_disabled, locked, metadata. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, model_id, order_id, parent_id, colocation_id, type_id, user_id, location_id, rack_id, provisioning_id, label, model, manufacturer, serialnumber1, serialnumber2, service_tag, description, comments, status, device_status, service_status, function, poller_disabled, locked, metadata. Example: id

Show Device

requires authentication

Display detailed information about a single device by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/devices/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1104,
        "product_id": 0,
        "model_id": 1597,
        "parent_id": 0,
        "type_id": 2031,
        "user_id": 5635,
        "order_id": 594,
        "location_id": 3127,
        "rack_id": 0,
        "blade_id": 0,
        "os_installation": 0,
        "colocation_id": 0,
        "provisioning_id": 0,
        "position": null,
        "image": null,
        "tags": null,
        "size": 1,
        "size_position": "full",
        "data_ports": 0,
        "power_supplies": 0,
        "manufacturer": "Kilback Group",
        "serialnumber1": "SN565LU",
        "serialnumber2": null,
        "service_tag": "ST671DG",
        "comments": null,
        "label": "eos",
        "description": "Sit architecto voluptas ea.",
        "ip_addresses": [],
        "purchase_date": "2025-07-10",
        "warranty_months": 24,
        "warranty_info": null,
        "status": "available",
        "is_service": 0,
        "service_status": "activated",
        "device_status": "running",
        "function": null,
        "maintenance_instruction": null,
        "origin": null,
        "buy_price": 0,
        "appdata": false,
        "notes": null,
        "locked": 0,
        "last_discovered": "Never",
        "discovery_time": 0,
        "last_polled": "Never",
        "poller_disabled": 0,
        "poller_time": 0,
        "last_hour_traffic": 0,
        "last_day_traffic": 0,
        "last_week_traffic": 0,
        "last_month_traffic": 0,
        "current_month_traffic": 0,
        "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
        "metadata": [],
        "device_traffic": null,
        "type": {
            "id": 2031,
            "name": "natus",
            "description": "Autem voluptatibus odio quae et vel doloribus.",
            "hardware": 1,
            "software": 0,
            "predefined": 1,
            "color": "black",
            "created_at": "2026-07-10 09:51:15",
            "updated_at": "2026-07-10 09:51:15"
        },
        "model": {
            "id": 1597,
            "name": "cumque",
            "label": null,
            "type_id": 2031,
            "location_id": 0,
            "status": null,
            "description": null,
            "is_part": true,
            "mountable": false,
            "manufacturer": null,
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": null,
            "serialnumber1": null,
            "serialnumber2": null,
            "service_tag": null,
            "comments": null,
            "notes": null,
            "purchase_date": null,
            "warranty_months": null,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": null,
            "appdata": false,
            "fields_data": false,
            "parts_data": false,
            "created_at": "2026-07-10T07:51:17.000000Z",
            "updated_at": "2026-07-10T07:51:17.000000Z"
        },
        "user": {
            "id": 5635,
            "username": "vidal.kris",
            "email": "[email protected]",
            "name": "Matt Terry",
            "firstname": "Matt",
            "lastname": "Terry",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/5e28ab40e5a3675aa9edb34111a6bc95?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/5e28ab40e5a3675aa9edb34111a6bc95?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "location": {
            "id": 3127,
            "app_id": null,
            "name": "Abernathy-Klein",
            "address": "66387 Nona Forge\nPiperberg, DC 06285-1644",
            "city": "Dickensstad",
            "state": "New Mexico",
            "description": "Voluptatem qui repellat eius iure. Et quisquam et nobis officia aut perferendis quisquam. Voluptas occaecati qui reiciendis nihil.",
            "notes": "Consequatur sit ad aperiam a fuga amet. Fugit itaque aut odio eius. Corporis sequi facilis sit perferendis et modi.",
            "emergency": "1",
            "phone": "(704) 771-9419",
            "flag": "Germany.png",
            "created_at": "2026-07-10 09:51:16",
            "updated_at": "2026-07-10 09:51:16"
        },
        "rack": null,
        "parent": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/devices/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Create Device

requires authentication

Store a new device in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/devices" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"label\": \"Intel Xeon\",
    \"model\": 123,
    \"type_id\": 1,
    \"parent\": 10,
    \"location\": 3,
    \"client\": 5,
    \"rack\": 7,
    \"position\": 12,
    \"size\": 1,
    \"size_position\": \"front\",
    \"is_part\": true,
    \"manufacturer\": \"Intel\",
    \"serialnumber1\": \"SN123456789\",
    \"service_tag\": \"ST987654\",
    \"comments\": \"Example comment\",
    \"description\": \"Intel Xeon server CPU with 8 cores\",
    \"purchase_date\": \"2025-09-17\",
    \"warranty_months\": 36,
    \"warranty_info\": \"Standard 3-year warranty\",
    \"status\": \"available\",
    \"function\": \"Server CPU\",
    \"origin\": \"Warehouse A\",
    \"buy_price\": 2500.5,
    \"appdata\": {
        \"key\": \"value\"
    },
    \"notes\": \"Needs firmware update\",
    \"provisioning_id\": 1,
    \"metadata\": [
        {
            \"metadata_id\": 37,
            \"value\": \"1\",
            \"raw_value\": \"1\"
        }
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices'
payload = {
    "label": "Intel Xeon",
    "model": 123,
    "type_id": 1,
    "parent": 10,
    "location": 3,
    "client": 5,
    "rack": 7,
    "position": 12,
    "size": 1,
    "size_position": "front",
    "is_part": true,
    "manufacturer": "Intel",
    "serialnumber1": "SN123456789",
    "service_tag": "ST987654",
    "comments": "Example comment",
    "description": "Intel Xeon server CPU with 8 cores",
    "purchase_date": "2025-09-17",
    "warranty_months": 36,
    "warranty_info": "Standard 3-year warranty",
    "status": "available",
    "function": "Server CPU",
    "origin": "Warehouse A",
    "buy_price": 2500.5,
    "appdata": {
        "key": "value"
    },
    "notes": "Needs firmware update",
    "provisioning_id": 1,
    "metadata": [
        {
            "metadata_id": 37,
            "value": "1",
            "raw_value": "1"
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'label' => 'Intel Xeon',
            'model' => 123,
            'type_id' => 1,
            'parent' => 10,
            'location' => 3,
            'client' => 5,
            'rack' => 7,
            'position' => 12,
            'size' => 1,
            'size_position' => 'front',
            'is_part' => true,
            'manufacturer' => 'Intel',
            'serialnumber1' => 'SN123456789',
            'service_tag' => 'ST987654',
            'comments' => 'Example comment',
            'description' => 'Intel Xeon server CPU with 8 cores',
            'purchase_date' => '2025-09-17',
            'warranty_months' => 36,
            'warranty_info' => 'Standard 3-year warranty',
            'status' => 'available',
            'function' => 'Server CPU',
            'origin' => 'Warehouse A',
            'buy_price' => 2500.5,
            'appdata' => [
                'key' => 'value',
            ],
            'notes' => 'Needs firmware update',
            'provisioning_id' => 1,
            'metadata' => [
                [
                    'metadata_id' => 37,
                    'value' => '1',
                    'raw_value' => '1',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1105,
        "product_id": 0,
        "model_id": 1599,
        "parent_id": 0,
        "type_id": 2033,
        "user_id": 5642,
        "order_id": 595,
        "location_id": 3131,
        "rack_id": 0,
        "blade_id": 0,
        "os_installation": 0,
        "colocation_id": 0,
        "provisioning_id": 0,
        "position": null,
        "image": null,
        "tags": null,
        "size": 1,
        "size_position": "full",
        "data_ports": 0,
        "power_supplies": 0,
        "manufacturer": "Kemmer-Block",
        "serialnumber1": "SN217CS",
        "serialnumber2": null,
        "service_tag": "ST953BB",
        "comments": null,
        "label": "ea",
        "description": "Distinctio sed molestias velit et maiores vel asperiores.",
        "ip_addresses": [],
        "purchase_date": "2025-07-10",
        "warranty_months": 24,
        "warranty_info": null,
        "status": "available",
        "is_service": 0,
        "service_status": "activated",
        "device_status": "running",
        "function": null,
        "maintenance_instruction": null,
        "origin": null,
        "buy_price": 0,
        "appdata": false,
        "notes": null,
        "locked": 0,
        "last_discovered": "Never",
        "discovery_time": 0,
        "last_polled": "Never",
        "poller_disabled": 0,
        "poller_time": 0,
        "last_hour_traffic": 0,
        "last_day_traffic": 0,
        "last_week_traffic": 0,
        "last_month_traffic": 0,
        "current_month_traffic": 0,
        "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
        "metadata": [],
        "device_traffic": null,
        "type": {
            "id": 2033,
            "name": "sed",
            "description": "Aspernatur est expedita aperiam doloribus sint.",
            "hardware": 0,
            "software": 0,
            "predefined": 1,
            "color": "navy",
            "created_at": "2026-07-10 09:51:17",
            "updated_at": "2026-07-10 09:51:17"
        },
        "model": {
            "id": 1599,
            "name": "itaque",
            "label": null,
            "type_id": 2033,
            "location_id": 0,
            "status": null,
            "description": null,
            "is_part": true,
            "mountable": false,
            "manufacturer": null,
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": null,
            "serialnumber1": null,
            "serialnumber2": null,
            "service_tag": null,
            "comments": null,
            "notes": null,
            "purchase_date": null,
            "warranty_months": null,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": null,
            "appdata": false,
            "fields_data": false,
            "parts_data": false,
            "created_at": "2026-07-10T07:51:20.000000Z",
            "updated_at": "2026-07-10T07:51:20.000000Z"
        },
        "user": {
            "id": 5642,
            "username": "wbraun",
            "email": "[email protected]",
            "name": "Damon Rosenbaum",
            "firstname": "Damon",
            "lastname": "Rosenbaum",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/bbe7fcc88fddd292a6490e93445d3e7e?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/bbe7fcc88fddd292a6490e93445d3e7e?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "location": {
            "id": 3131,
            "app_id": null,
            "name": "Cronin and Sons",
            "address": "801 Orn Street\nPort Laurybury, DC 96615",
            "city": "Rolfsonfurt",
            "state": "Rhode Island",
            "description": "Amet eos et nostrum. Necessitatibus vel voluptatibus quis esse qui eum. Minus dolor quaerat ipsa vel omnis tempora.",
            "notes": "Quis illum praesentium hic officia consequatur est et. Atque veritatis a porro incidunt voluptatibus ut optio. Rerum omnis aut officiis ipsam.",
            "emergency": "0",
            "phone": "+1.818.915.6136",
            "flag": "UK.png",
            "created_at": "2026-07-10 09:51:18",
            "updated_at": "2026-07-10 09:51:18"
        },
        "rack": null,
        "parent": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/devices

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

label   string     

The name of the device. Example: Intel Xeon

model   string     

The model ID of the device, or a custom string for new models. Example: 123

type_id   integer     

The type ID of the device. The id of an existing record in the item_types table. Example: 1

parent   integer  optional    

The parent device ID, if this device is mountable. The id of an existing record in the items table. Example: 10

location   integer  optional    

The location ID where the device is stored. The id of an existing record in the locations table. Example: 3

client   integer  optional    

The client user ID assigned to the device. The id of an existing record in the users table. Example: 5

rack   integer  optional    

The rack cabinet in which the device is located. The id of an existing record in the racks table. Example: 7

position   integer  optional    

Position of the device in a rack cabinet. Example: 12

size   integer  optional    

The height of the device in a rack cabinet. For example, if you choose 3, the device will occupy 3 units in a rack. Example: 1

size_position   string  optional    

Mounting type of the device in a rack cabinet. Example: front

Must be one of:
  • full
  • front
  • rear
is_part   boolean  optional    

Determine if this device is part. Example: true

manufacturer   string  optional    

The manufacturer of the device. Example: Intel

serialnumber1   string  optional    

Primary serial number of the device. Example: SN123456789

service_tag   string  optional    

Unique service tag or identifier of the device. Example: ST987654

comments   string  optional    

Any additional comments about the device. Example: Example comment

description   string  optional    

Detailed description of the device. Example: Intel Xeon server CPU with 8 cores

purchase_date   string  optional    

The purchase date of the device. Must be a valid date. Must be a valid date in the format Y-m-d. Example: 2025-09-17

warranty_months   integer  optional    

Warranty period in months. Example: 36

warranty_info   string  optional    

Additional warranty information. Example: Standard 3-year warranty

status   string  optional    

Current status of the device. Example: available

Must be one of:
  • available
  • bought
  • defect
  • in use
  • not_delivered
  • sold
  • repair
  • not_set
function   string  optional    

The function or role of the device. Example: Server CPU

origin   string  optional    

The origin or source of the device. Example: Warehouse A

buy_price   number  optional    

Purchase price of the device. Example: 2500.5

appdata   object  optional    

Additional application-specific data for the device.

notes   string  optional    

Additional notes about the device. Example: Needs firmware update

provisioning_id   integer  optional    

The ID of the provisioning server to assign to the device. Pass null to revert to the location-based provisioning server. The id of an existing record in the os_servers table. Example: 1

metadata   object[]     
metadata_id   integer     

The ID of the metadata type. The id of an existing record in the types_fields table. Example: 37

value   string     

The value of the metadata entry. Example: 1

raw_value   string  optional    

Optional raw value for the metadata entry. Example: 1

Update Device

requires authentication

Updates the specified device with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/devices/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"label\": \"Intel Xeon\",
    \"model\": 123,
    \"parent\": 10,
    \"location\": 3,
    \"client\": 5,
    \"rack\": 7,
    \"position\": 12,
    \"size\": 1,
    \"size_position\": \"front\",
    \"is_part\": true,
    \"manufacturer\": \"Intel\",
    \"serialnumber1\": \"SN123456789\",
    \"service_tag\": \"ST987654\",
    \"comments\": \"Example comment\",
    \"description\": \"Intel Xeon server CPU with 8 cores\",
    \"purchase_date\": \"2025-09-17\",
    \"warranty_months\": 36,
    \"warranty_info\": \"Standard 3-year warranty\",
    \"status\": \"available\",
    \"function\": \"Server CPU\",
    \"origin\": \"Warehouse A\",
    \"buy_price\": 2500.5,
    \"appdata\": {
        \"key\": \"value\"
    },
    \"notes\": \"Needs firmware update\",
    \"provisioning_id\": 1,
    \"metadata\": [
        {
            \"metadata_id\": 37,
            \"value\": \"1\",
            \"raw_value\": \"1\"
        }
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices/1'
payload = {
    "label": "Intel Xeon",
    "model": 123,
    "parent": 10,
    "location": 3,
    "client": 5,
    "rack": 7,
    "position": 12,
    "size": 1,
    "size_position": "front",
    "is_part": true,
    "manufacturer": "Intel",
    "serialnumber1": "SN123456789",
    "service_tag": "ST987654",
    "comments": "Example comment",
    "description": "Intel Xeon server CPU with 8 cores",
    "purchase_date": "2025-09-17",
    "warranty_months": 36,
    "warranty_info": "Standard 3-year warranty",
    "status": "available",
    "function": "Server CPU",
    "origin": "Warehouse A",
    "buy_price": 2500.5,
    "appdata": {
        "key": "value"
    },
    "notes": "Needs firmware update",
    "provisioning_id": 1,
    "metadata": [
        {
            "metadata_id": 37,
            "value": "1",
            "raw_value": "1"
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'label' => 'Intel Xeon',
            'model' => 123,
            'parent' => 10,
            'location' => 3,
            'client' => 5,
            'rack' => 7,
            'position' => 12,
            'size' => 1,
            'size_position' => 'front',
            'is_part' => true,
            'manufacturer' => 'Intel',
            'serialnumber1' => 'SN123456789',
            'service_tag' => 'ST987654',
            'comments' => 'Example comment',
            'description' => 'Intel Xeon server CPU with 8 cores',
            'purchase_date' => '2025-09-17',
            'warranty_months' => 36,
            'warranty_info' => 'Standard 3-year warranty',
            'status' => 'available',
            'function' => 'Server CPU',
            'origin' => 'Warehouse A',
            'buy_price' => 2500.5,
            'appdata' => [
                'key' => 'value',
            ],
            'notes' => 'Needs firmware update',
            'provisioning_id' => 1,
            'metadata' => [
                [
                    'metadata_id' => 37,
                    'value' => '1',
                    'raw_value' => '1',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1106,
        "product_id": 0,
        "model_id": 1601,
        "parent_id": 0,
        "type_id": 2035,
        "user_id": 5649,
        "order_id": 596,
        "location_id": 3135,
        "rack_id": 0,
        "blade_id": 0,
        "os_installation": 0,
        "colocation_id": 0,
        "provisioning_id": 0,
        "position": null,
        "image": null,
        "tags": null,
        "size": 1,
        "size_position": "full",
        "data_ports": 0,
        "power_supplies": 0,
        "manufacturer": "Pfeffer, Abshire and Stokes",
        "serialnumber1": "SN439KP",
        "serialnumber2": null,
        "service_tag": "ST544FK",
        "comments": null,
        "label": "sequi",
        "description": "Omnis ea eligendi sed et ea itaque nam est.",
        "ip_addresses": [],
        "purchase_date": "2025-07-10",
        "warranty_months": 24,
        "warranty_info": null,
        "status": "available",
        "is_service": 0,
        "service_status": "activated",
        "device_status": "running",
        "function": null,
        "maintenance_instruction": null,
        "origin": null,
        "buy_price": 0,
        "appdata": false,
        "notes": null,
        "locked": 0,
        "last_discovered": "Never",
        "discovery_time": 0,
        "last_polled": "Never",
        "poller_disabled": 0,
        "poller_time": 0,
        "last_hour_traffic": 0,
        "last_day_traffic": 0,
        "last_week_traffic": 0,
        "last_month_traffic": 0,
        "current_month_traffic": 0,
        "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
        "metadata": [],
        "device_traffic": null,
        "type": {
            "id": 2035,
            "name": "non",
            "description": "Rerum cum ducimus autem.",
            "hardware": 0,
            "software": 0,
            "predefined": 1,
            "color": "purple",
            "created_at": "2026-07-10 09:51:20",
            "updated_at": "2026-07-10 09:51:20"
        },
        "model": {
            "id": 1601,
            "name": "nemo",
            "label": null,
            "type_id": 2035,
            "location_id": 0,
            "status": null,
            "description": null,
            "is_part": true,
            "mountable": false,
            "manufacturer": null,
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": null,
            "serialnumber1": null,
            "serialnumber2": null,
            "service_tag": null,
            "comments": null,
            "notes": null,
            "purchase_date": null,
            "warranty_months": null,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": null,
            "appdata": false,
            "fields_data": false,
            "parts_data": false,
            "created_at": "2026-07-10T07:51:22.000000Z",
            "updated_at": "2026-07-10T07:51:22.000000Z"
        },
        "user": {
            "id": 5649,
            "username": "nico86",
            "email": "[email protected]",
            "name": "Maureen Hahn",
            "firstname": "Maureen",
            "lastname": "Hahn",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/96fd3428892b23dea22747089290072a?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/96fd3428892b23dea22747089290072a?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "location": {
            "id": 3135,
            "app_id": null,
            "name": "Prohaska, Hagenes and Orn",
            "address": "799 Kianna Rapids\nStarkland, OH 16020",
            "city": "Rhiannaland",
            "state": "Nebraska",
            "description": "Commodi et non vel explicabo. Quia quia ipsam eos explicabo voluptatem.",
            "notes": "Nulla expedita repellendus sit nesciunt dolor. Assumenda aliquid vitae et beatae quam quia assumenda. Voluptas id eos nihil molestias a.",
            "emergency": "1",
            "phone": "+1.863.610.0264",
            "flag": "USA.png",
            "created_at": "2026-07-10 09:51:21",
            "updated_at": "2026-07-10 09:51:21"
        },
        "rack": null,
        "parent": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/devices/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Body Parameters

label   string  optional    

The name of the device. Example: Intel Xeon

model   integer  optional    

The model ID of the device. Example: 123

parent   integer  optional    

The parent device ID, if this device is mountable. The id of an existing record in the items table. Example: 10

location   integer  optional    

The location ID where the device is stored. The id of an existing record in the locations table. Example: 3

client   integer  optional    

The user ID assigned to the device. The id of an existing record in the users table. Example: 5

rack   integer  optional    

The rack cabinet in which the device is located. The id of an existing record in the racks table. Example: 7

position   integer  optional    

Position of the device in a rack cabinet. Example: 12

size   integer  optional    

The height of the device in a rack cabinet. For example, if you choose 3, the device will occupy 3 units in a rack. Example: 1

size_position   string  optional    

Mounting type of the device in a rack cabinet. Example: front

Must be one of:
  • full
  • front
  • rear
is_part   boolean  optional    

Determine if this device is part. Example: true

manufacturer   string  optional    

The manufacturer of the device. Example: Intel

serialnumber1   string  optional    

Primary serial number of the device. Example: SN123456789

service_tag   string  optional    

Unique service tag or identifier of the device. Example: ST987654

comments   string  optional    

Any additional comments about the device. Example: Example comment

description   string  optional    

Detailed description of the device. Example: Intel Xeon server CPU with 8 cores

purchase_date   string  optional    

The purchase date of the device. Must be a valid date. Must be a valid date in the format Y-m-d. Example: 2025-09-17

warranty_months   integer  optional    

Warranty period in months. Example: 36

warranty_info   string  optional    

Additional warranty information. Example: Standard 3-year warranty

status   string  optional    

Current status of the device. Example: available

Must be one of:
  • available
  • bought
  • defect
  • in use
  • not_delivered
  • sold
  • repair
  • not_set
function   string  optional    

The function or role of the device. Example: Server CPU

origin   string  optional    

The origin or source of the device. Example: Warehouse A

buy_price   number  optional    

Purchase price of the device. Example: 2500.5

appdata   object  optional    

Additional application-specific data for the device.

notes   string  optional    

Additional notes about the device. Example: Needs firmware update

provisioning_id   integer  optional    

The ID of the provisioning server to assign to the device. Pass null to revert to the location-based provisioning server. The id of an existing record in the os_servers table. Example: 1

metadata   object[]     
metadata_id   integer     

The ID of the metadata type. The id of an existing record in the types_fields table. Example: 37

value   string     

The value of the metadata entry. Example: 1

raw_value   string  optional    

Optional raw value for the metadata entry. Example: 1

Assign Metadata To Device

requires authentication

Assigns metadata for specified device.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/devices/1/metadata/assign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"slug\": \"ipmi.ip\",
    \"value\": \"192.168.56.180\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices/1/metadata/assign'
payload = {
    "slug": "ipmi.ip",
    "value": "192.168.56.180"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices/1/metadata/assign';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'slug' => 'ipmi.ip',
            'value' => '192.168.56.180',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1107,
        "product_id": 0,
        "model_id": 1603,
        "parent_id": 0,
        "type_id": 2037,
        "user_id": 5656,
        "order_id": 597,
        "location_id": 3139,
        "rack_id": 0,
        "blade_id": 0,
        "os_installation": 0,
        "colocation_id": 0,
        "provisioning_id": 0,
        "position": null,
        "image": null,
        "tags": null,
        "size": 1,
        "size_position": "full",
        "data_ports": 0,
        "power_supplies": 0,
        "manufacturer": "Murazik-Vandervort",
        "serialnumber1": "SN006WJ",
        "serialnumber2": null,
        "service_tag": "ST187EB",
        "comments": null,
        "label": "quibusdam",
        "description": "Eos sint quaerat aspernatur sapiente odit explicabo.",
        "ip_addresses": [],
        "purchase_date": "2025-07-10",
        "warranty_months": 24,
        "warranty_info": null,
        "status": "available",
        "is_service": 0,
        "service_status": "activated",
        "device_status": "running",
        "function": null,
        "maintenance_instruction": null,
        "origin": null,
        "buy_price": 0,
        "appdata": false,
        "notes": null,
        "locked": 0,
        "last_discovered": "Never",
        "discovery_time": 0,
        "last_polled": "Never",
        "poller_disabled": 0,
        "poller_time": 0,
        "last_hour_traffic": 0,
        "last_day_traffic": 0,
        "last_week_traffic": 0,
        "last_month_traffic": 0,
        "current_month_traffic": 0,
        "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
        "metadata": [],
        "device_traffic": null,
        "type": {
            "id": 2037,
            "name": "voluptatum",
            "description": "Ut dicta provident cupiditate consequatur.",
            "hardware": 0,
            "software": 0,
            "predefined": 1,
            "color": "olive",
            "created_at": "2026-07-10 09:51:23",
            "updated_at": "2026-07-10 09:51:23"
        },
        "model": {
            "id": 1603,
            "name": "quod",
            "label": null,
            "type_id": 2037,
            "location_id": 0,
            "status": null,
            "description": null,
            "is_part": true,
            "mountable": false,
            "manufacturer": null,
            "position": null,
            "size": 1,
            "image": null,
            "data_ports": null,
            "serialnumber1": null,
            "serialnumber2": null,
            "service_tag": null,
            "comments": null,
            "notes": null,
            "purchase_date": null,
            "warranty_months": null,
            "warranty_info": null,
            "function": null,
            "maintenance_instruction": null,
            "origin": null,
            "buy_price": null,
            "appdata": false,
            "fields_data": false,
            "parts_data": false,
            "created_at": "2026-07-10T07:51:25.000000Z",
            "updated_at": "2026-07-10T07:51:25.000000Z"
        },
        "user": {
            "id": 5656,
            "username": "champlin.casimer",
            "email": "[email protected]",
            "name": "Hilario Mayert",
            "firstname": "Hilario",
            "lastname": "Mayert",
            "gender": "0",
            "avatar": "//www.gravatar.com/avatar/39ccf05a63e49497dc59fe757adaf043?s=30&d=mm&r=g",
            "large_avatar": "//www.gravatar.com/avatar/39ccf05a63e49497dc59fe757adaf043?s=130&d=mm&r=g",
            "company": null,
            "active": 1,
            "status": "Active",
            "address1": null,
            "address2": null,
            "city": null,
            "state": null,
            "postcode": null,
            "country_code": null,
            "country_name": "United States",
            "locale": null,
            "timezone": 0,
            "last_login": null
        },
        "location": {
            "id": 3139,
            "app_id": null,
            "name": "Kshlerin and Sons",
            "address": "7998 Jakubowski Row Apt. 892\nVolkmanshire, SD 75229",
            "city": "Jerdeport",
            "state": "North Dakota",
            "description": "Iste asperiores quia et et enim dolorem eum. Ipsa perspiciatis nemo corrupti. Fuga porro facere similique eius perspiciatis. Saepe itaque eveniet magnam blanditiis.",
            "notes": "Porro quia dignissimos quo et. Enim adipisci qui maxime voluptate doloribus voluptas.",
            "emergency": "0",
            "phone": "386-529-4397",
            "flag": "Germany.png",
            "created_at": "2026-07-10 09:51:24",
            "updated_at": "2026-07-10 09:51:24"
        },
        "rack": null,
        "parent": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/devices/{id}/metadata/assign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Body Parameters

slug   string     

The slug of the item metadata field. The slug of an existing record in the types_fields table. Example: ipmi.ip

value   string  optional    

The value for the item metadata field. Null clears the value. Example: 192.168.56.180

Force Polling

requires authentication

Dispatches polling job for device.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/devices/1/poll" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices/1/poll'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices/1/poll';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/devices/{id}/poll

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Discover Device

requires authentication

Dispatches discovery job for device.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/devices/1/discover" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"protocol\": \"SNMP\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices/1/discover'
payload = {
    "protocol": "SNMP"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices/1/discover';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'protocol' => 'SNMP',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/devices/{id}/discover

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Body Parameters

protocol   string     

Protocol with which device should be discovered. Example: SNMP

Must be one of:
  • Redfish
  • SNMP

Perform Power Action

requires authentication

Executes a power-related action on a device. This includes booting, rebooting, or shutting down the device.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/devices/123/power/action" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"action\": \"boot\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices/123/power/action'
payload = {
    "action": "boot"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices/123/power/action';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'action' => 'boot',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/devices/{id}/power/action

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 123

Body Parameters

action   string     

The power action to perform. One of: boot, reboot, shutdown. Example: boot

Must be one of:
  • boot
  • reboot
  • shutdown

Get Device Power Usage

requires authentication

Retrieves power usage data for a specific device. If a date range is provided, it returns detailed power data for that period. Otherwise, it returns historical usage data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/devices/101/power/usage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"startDate\": \"2024-01-01 00:00:00\",
    \"endDate\": \"2024-01-31 23:59:59\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices/101/power/usage'
payload = {
    "startDate": "2024-01-01 00:00:00",
    "endDate": "2024-01-31 23:59:59"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices/101/power/usage';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'startDate' => '2024-01-01 00:00:00',
            'endDate' => '2024-01-31 23:59:59',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "AVG_TOTAL_USAGE": 10,
        "units": "Amps"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/devices/{id}/power/usage

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 101

Body Parameters

startDate   string  optional    

The start date for the traffic range. Must be a valid date. Must be a valid date. Example: 2024-01-01 00:00:00

endDate   string  optional    

The end date for the traffic range. Must be a valid date. Must be a valid date. Example: 2024-01-31 23:59:59

Get Device Bandwidth

requires authentication

Retrieves bandwidth usage for a specific device. If a date range is provided, it returns detailed traffic data for that period. Otherwise, it returns historical usage data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/devices/101/bandwidth" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"startDate\": \"2024-01-01 00:00:00\",
    \"endDate\": \"2024-01-31 23:59:59\",
    \"units\": \"GB\",
    \"ports\": [
        12,
        100
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices/101/bandwidth'
payload = {
    "startDate": "2024-01-01 00:00:00",
    "endDate": "2024-01-31 23:59:59",
    "units": "GB",
    "ports": [
        12,
        100
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices/101/bandwidth';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'startDate' => '2024-01-01 00:00:00',
            'endDate' => '2024-01-31 23:59:59',
            'units' => 'GB',
            'ports' => [
                12,
                100,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "raw": {
            "BW_TOTAL": {
                "rrd": "93.78 GB",
                "bytes": 93780000000
            },
            "BW_IN": {
                "rrd": "43.04 GB",
                "bytes": 43040000000
            },
            "BW_OUT": {
                "rrd": "50.74 GB",
                "bytes": 50740000000
            },
            "95TH_PERC": {
                "rrd": "0.00",
                "bytes": 0
            },
            "95TH_PERC_IN": {
                "rrd": "0.00",
                "bytes": 0
            },
            "95TH_PERC_OUT": {
                "rrd": "0.00",
                "bytes": 0
            }
        },
        "BW_TOTAL": "93.78",
        "BW_IN": "43.04",
        "BW_OUT": "50.74",
        "95TH_PERC": "0.00",
        "95TH_PERC_IN": "0.00",
        "95TH_PERC_OUT": "0.00"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/devices/{id}/bandwidth

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 101

Body Parameters

startDate   string  optional    

The start date for the traffic range. Must be a valid date. Must be a valid date. Example: 2024-01-01 00:00:00

endDate   string  optional    

The end date for the traffic range. Must be a valid date. Must be a valid date. Example: 2024-01-31 23:59:59

units   string  optional    

The unit of bandwidth. Must be one of: MB, GB, TB. Example: GB

Must be one of:
  • MB
  • GB
  • TB
ports   object  optional    

An array of device port names to include in the traffic query.

Delete Device

requires authentication

Removes the specified device from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/devices/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/devices/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/devices/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/devices/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 5

Graphs

Export Graph

requires authentication

Exports a graph data for a given target

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/graphs/42/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"AggregateTraffic\",
    \"target\": \"service\",
    \"start\": \"2025-04-01 00:00:00\",
    \"end\": \"2025-04-30 23:59:59\",
    \"raw\": false,
    \"mode\": \"total\",
    \"device_ids\": [
        10
    ],
    \"device_selection\": \"all\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/graphs/42/export'
payload = {
    "type": "AggregateTraffic",
    "target": "service",
    "start": "2025-04-01 00:00:00",
    "end": "2025-04-30 23:59:59",
    "raw": false,
    "mode": "total",
    "device_ids": [
        10
    ],
    "device_selection": "all"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/graphs/42/export';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'AggregateTraffic',
            'target' => 'service',
            'start' => '2025-04-01 00:00:00',
            'end' => '2025-04-30 23:59:59',
            'raw' => false,
            'mode' => 'total',
            'device_ids' => [
                10,
            ],
            'device_selection' => 'all',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "datasets": [
            {
                "data": [
                    "0.00186",
                    "0.00000",
                    "0.00231",
                    "0.00231",
                    "0.00228",
                    "0.00229",
                    "0.00006",
                    "0.00219",
                    "0.00245",
                    "0.00336",
                    "0.00337",
                    "0.00191",
                    "0.00000"
                ],
                "dataset_name": "inboundtotal"
            },
            {
                "data": [
                    "0.00045",
                    "0.00046",
                    "0.00321",
                    "0.00321",
                    "0.00000",
                    "0.00232",
                    "0.00198",
                    "0.00193",
                    "0.00036",
                    "0.00036",
                    "0.00145",
                    "0.00286",
                    "0.00000"
                ],
                "dataset_name": "outboundtotal"
            },
            {
                "data": [
                    "0.00232",
                    "0.00046",
                    "0.00552",
                    "0.00552",
                    "0.00228",
                    "0.00461",
                    "0.00204",
                    "0.00412",
                    "0.00281",
                    "0.00372",
                    "0.00482",
                    "0.00478",
                    "0.00000"
                ],
                "dataset_name": "totalboundbits"
            },
            {
                "data": [
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336"
                ],
                "dataset_name": "95_percentile"
            }
        ],
        "labels": [
            "2025-10-21 13:35:00",
            "2025-10-21 13:40:00",
            "2025-10-21 13:45:00",
            "2025-10-21 13:50:00",
            "2025-10-21 13:55:00",
            "2025-10-21 14:00:00",
            "2025-10-21 14:05:00",
            "2025-10-21 14:10:00",
            "2025-10-21 14:15:00",
            "2025-10-21 14:20:00",
            "2025-10-21 14:25:00",
            "2025-10-21 14:30:00",
            "2025-10-21 14:35:00"
        ]
    },
    "legend": {
        "header": [
            "Current",
            "Average",
            "Maximum",
            "95th %"
        ],
        "rows": [
            {
                "label": "In",
                "color": "#62C45E",
                "values": [
                    632798.1868925721,
                    1372582.1214573288,
                    2053141.22367529,
                    2053141.22367529
                ]
            },
            {
                "label": "Out",
                "color": "#2BA7FF",
                "values": [
                    639398.799042107,
                    1396441.8722763401,
                    1919831.1749942221,
                    1919831.1749942221
                ]
            }
        ],
        "format": "bits",
        "footer": "Total 670.81 GB  (In 332.34 GB  Out 338.47 GB)"
    },
    "units": {
        "traffic": "Mbps",
        "power_usage": "Amps"
    },
    "precision": {
        "traffic": "2"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/graphs/{id}/export

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the target. Example: 42

Body Parameters

type   string     

The type of graph to export, depending on the target. Example: AggregateTraffic

Must be one of:
  • AggregateTraffic
  • Load
  • NetworkTraffic
  • OutletPowerUsage
  • Ping
  • PowerUsage
  • Sensor
  • ServerPowerUsage
  • Status
  • UserDeviceTrafficBreakdown
target   string     

The type of target to graph (e.g., service, itempowerport, itemsensor). Example: service

Must be one of:
  • service
  • device
  • user
  • location
  • itemPowerPort
  • itemSensor
start   string  optional    

Start datetime for the graph range in format Y-m-d H:i:s. Must be a valid date in the format Y-m-d H:i:s. Example: 2025-04-01 00:00:00

end   string  optional    

End datetime for the graph range in format Y-m-d H:i:s. Must be after or equal to start. Must be a valid date in the format Y-m-d H:i:s. Must be a date after or equal to start. Example: 2025-04-30 23:59:59

raw   boolean  optional    

Whether to return raw graph data. Example: false

mode   string  optional    

For UserDeviceTrafficBreakdown only: dataset mode. Allowed values: total, in, out. Example: total

Must be one of:
  • total
  • in
  • out
device_ids   integer[]  optional    
device_selection   string  optional    

For UserDeviceTrafficBreakdown only: optional predefined device selection. Allowed values: all, server, order. Example: all

Must be one of:
  • all
  • server
  • order

Remote Agents

List Remote Agents

requires authentication

Returns a paginated list of Remote Agents (Remote Applications).

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/remote-agents?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/remote-agents'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/remote-agents';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 857,
            "name": "cum illo exercitationem",
            "status": "1",
            "message": "All Good!",
            "installed_version": "1.0",
            "created_at": "2026-07-10 09:51:26",
            "updated_at": "2026-07-10 09:51:26"
        },
        {
            "id": 858,
            "name": "placeat facilis possimus",
            "status": "1",
            "message": "All Good!",
            "installed_version": "1.0",
            "created_at": "2026-07-10 09:51:26",
            "updated_at": "2026-07-10 09:51:26"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/remote-agents?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/remote-agents",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/remote-agents

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, status, created_at, updated_at. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, status, message. Example: id

Show Remote Agent

requires authentication

Display detailed information about a single Remote Agent by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/remote-agents/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/remote-agents/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/remote-agents/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 859,
        "name": "quia fugit omnis",
        "status": "1",
        "message": "All Good!",
        "installed_version": "1.0",
        "created_at": "2026-07-10 09:51:26",
        "updated_at": "2026-07-10 09:51:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/remote-agents/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the Remote Agent. Example: 1

Create Remote Agent

requires authentication

Creates a new Remote Agent with the specified configuration.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/remote-agents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"host\": \"192.168.56.100\",
    \"apikey\": \"I4Vv1ZIgCXD6aykQF98kjuzG\",
    \"name\": \"Remote Agent #1\",
    \"pxe_ip\": \"192.168.56.101\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/remote-agents'
payload = {
    "host": "192.168.56.100",
    "apikey": "I4Vv1ZIgCXD6aykQF98kjuzG",
    "name": "Remote Agent #1",
    "pxe_ip": "192.168.56.101"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/remote-agents';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'host' => '192.168.56.100',
            'apikey' => 'I4Vv1ZIgCXD6aykQF98kjuzG',
            'name' => 'Remote Agent #1',
            'pxe_ip' => '192.168.56.101',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 860,
        "name": "deleniti qui eveniet",
        "status": "1",
        "message": "All Good!",
        "installed_version": "1.0",
        "created_at": "2026-07-10 09:51:26",
        "updated_at": "2026-07-10 09:51:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/remote-agents

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

host   string     

The IP or hostname of the remote agent. Example: 192.168.56.100

apikey   string     

API key used to authenticate the remote agent. Example: I4Vv1ZIgCXD6aykQF98kjuzG

name   string  optional    

Custom name of the remote agent. Example: Remote Agent #1

pxe_ip   string  optional    

PXE IP address used for provisioning. Defaults to the host IP. Example: 192.168.56.101

Delete Remote Agent

requires authentication

Removes the specified Remote Agent from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/remote-agents/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/remote-agents/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/remote-agents/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/remote-agents/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the Remote Agent. Example: 5

List DHCP Subnets

requires authentication

Returns a paginated list of DHCP subnets assigned to the given Remote Agent.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/remote-agents/1/subnets?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/remote-agents/1/subnets'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/remote-agents/1/subnets';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 50,
            "type": "ipv4",
            "subnet": "75.64.51.120",
            "mask": 24,
            "gateway": "46.7.199.76"
        },
        {
            "id": 51,
            "type": "ipv4",
            "subnet": "28.234.112.41",
            "mask": 24,
            "gateway": "38.48.143.76"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/remote-agents/{id}/subnets?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/remote-agents/{id}/subnets",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/remote-agents/{id}/subnets

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the Remote Agent. Example: 1

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, type, subnet, mask. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, type, subnet, gateway. Example: id

Create DHCP Subnet

requires authentication

Creates a new DHCP subnet for the specified Remote Agent.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/remote-agents/eos/subnets" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"ipv4\",
    \"subnet\": \"10.10.10.0\",
    \"mask\": 24,
    \"gateway\": \"10.10.10.1\",
    \"description\": \"DHCP range for rack A\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/remote-agents/eos/subnets'
payload = {
    "type": "ipv4",
    "subnet": "10.10.10.0",
    "mask": 24,
    "gateway": "10.10.10.1",
    "description": "DHCP range for rack A"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/remote-agents/eos/subnets';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'ipv4',
            'subnet' => '10.10.10.0',
            'mask' => 24.0,
            'gateway' => '10.10.10.1',
            'description' => 'DHCP range for rack A',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 52,
        "type": "ipv4",
        "subnet": "136.185.228.160",
        "mask": 24,
        "gateway": "11.191.38.97"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/remote-agents/{id}/subnets

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the remote agent. Example: eos

Body Parameters

type   string     

Type of the subnet (IPv4). Example: ipv4

Must be one of:
  • ipv4
subnet   string     

Network subnet address. Example: 10.10.10.0

mask   number     

Subnet mask length. Must be at least 1. Must not be greater than 32. Example: 24

gateway   string     

Default gateway address. Example: 10.10.10.1

description   string  optional    

Optional subnet description. Must not be greater than 255 characters. Example: DHCP range for rack A

Update DHCP Subnet

requires authentication

Updates an existing DHCP subnet configuration.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/remote-agents/suscipit/subnets/veritatis" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"ipv4\",
    \"subnet\": \"10.10.10.0\",
    \"mask\": 24,
    \"gateway\": \"10.10.10.1\",
    \"description\": \"DHCP range for rack A\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/remote-agents/suscipit/subnets/veritatis'
payload = {
    "type": "ipv4",
    "subnet": "10.10.10.0",
    "mask": 24,
    "gateway": "10.10.10.1",
    "description": "DHCP range for rack A"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/remote-agents/suscipit/subnets/veritatis';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'ipv4',
            'subnet' => '10.10.10.0',
            'mask' => 24.0,
            'gateway' => '10.10.10.1',
            'description' => 'DHCP range for rack A',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 53,
        "type": "ipv4",
        "subnet": "45.234.191.43",
        "mask": 24,
        "gateway": "32.49.22.216"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/remote-agents/{id}/subnets/{subnetId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the remote agent. Example: suscipit

subnetId   string     

Example: veritatis

Body Parameters

type   string     

Type of the subnet (IPv4). Example: ipv4

Must be one of:
  • ipv4
subnet   string     

Network subnet address. Example: 10.10.10.0

mask   number     

Subnet mask length. Must be at least 1. Must not be greater than 32. Example: 24

gateway   string     

Default gateway address. Example: 10.10.10.1

description   string  optional    

Optional subnet description. Must not be greater than 255 characters. Example: DHCP range for rack A

Delete DHCP Subnet

requires authentication

Deletes a DHCP subnet assigned to a Remote Agent.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/remote-agents/eos/subnets/numquam" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/remote-agents/eos/subnets/numquam'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/remote-agents/eos/subnets/numquam';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/remote-agents/{id}/subnets/{subnetId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the remote agent. Example: eos

subnetId   string     

Example: numquam

OS Installation

List ISO Images

requires authentication

Returns a paginated list of ISO images

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/isoimages?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/isoimages'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/isoimages';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 96,
            "name": "autem-iso",
            "iso_url": "http://powlowski.org/et-ea-tenetur-quo-perspiciatis-provident-enim",
            "status": 3,
            "status_label": "Finished",
            "created_at": "2026-07-10 09:51:28",
            "updated_at": "2026-07-10 09:51:28"
        },
        {
            "id": 97,
            "name": "sed-iso",
            "iso_url": "http://www.volkman.com/",
            "status": 3,
            "status_label": "Finished",
            "created_at": "2026-07-10 09:51:28",
            "updated_at": "2026-07-10 09:51:28"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/os/isoimages?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/os/isoimages",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/isoimages

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, iso_url, status. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, iso_url, status. Example: id

Show ISO Image

requires authentication

Returns detailed information about a specific ISO Image.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/isoimages/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/isoimages/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/isoimages/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 98,
        "name": "qui-iso",
        "iso_url": "http://www.white.com/aspernatur-magnam-fugiat-voluptatem-molestias-et-enim",
        "status": 3,
        "status_label": "Finished",
        "created_at": "2026-07-10 09:51:28",
        "updated_at": "2026-07-10 09:51:28"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/isoimages/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the ISO image. Example: 1

Create ISO Image

requires authentication

Creates a new ISO image.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/os/isoimages" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Ubuntu Server ISO\",
    \"iso_url\": \"https:\\/\\/example.com\\/images\\/ubuntu.iso\",
    \"remoteApp\": [
        1
    ],
    \"availability\": \"public\",
    \"users\": [
        1
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/isoimages'
payload = {
    "name": "Ubuntu Server ISO",
    "iso_url": "https:\/\/example.com\/images\/ubuntu.iso",
    "remoteApp": [
        1
    ],
    "availability": "public",
    "users": [
        1
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/isoimages';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Ubuntu Server ISO',
            'iso_url' => 'https://example.com/images/ubuntu.iso',
            'remoteApp' => [
                1,
            ],
            'availability' => 'public',
            'users' => [
                1,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 99,
        "name": "in-iso",
        "iso_url": "https://www.bruen.info/aperiam-molestiae-pariatur-id-nulla",
        "status": 3,
        "status_label": "Finished",
        "created_at": "2026-07-10 09:51:28",
        "updated_at": "2026-07-10 09:51:28"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/os/isoimages

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The display name for the ISO image. Must not be greater than 255 characters. Example: Ubuntu Server ISO

iso_url   string     

Direct URL to the ISO file. Must be publicly accessible and point to a valid .iso resource. Must be a valid URL. Example: https://example.com/images/ubuntu.iso

remoteApp   integer[]  optional    

Array of Remote Agent Ids. The id of an existing record in the remote_applications table.

availability   string     

Specifies whether the ISO image will be public. Example: public

Must be one of:
  • public
  • forSpecifiedUsers
users   integer[]  optional    

Array of User IDs. The id of an existing record in the users table.

Update ISO Image

requires authentication

Updates the name of an existing ISO image.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/os/isoimages/3" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Ubuntu Server ISO\",
    \"remoteApp\": [
        1
    ],
    \"availability\": \"public\",
    \"users\": [
        1
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/isoimages/3'
payload = {
    "name": "Ubuntu Server ISO",
    "remoteApp": [
        1
    ],
    "availability": "public",
    "users": [
        1
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/isoimages/3';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Ubuntu Server ISO',
            'remoteApp' => [
                1,
            ],
            'availability' => 'public',
            'users' => [
                1,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 100,
        "name": "et-iso",
        "iso_url": "https://kris.com/sint-doloremque-excepturi-soluta-in-numquam.html",
        "status": 2,
        "status_label": "Started",
        "created_at": "2026-07-10 09:51:28",
        "updated_at": "2026-07-10 09:51:28"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/os/isoimages/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the ISO image to update. Example: 3

Body Parameters

name   string  optional    

The display name for the ISO image. Must not be greater than 255 characters. Example: Ubuntu Server ISO

remoteApp   integer[]  optional    

Array od Remote Agent Ids. The id of an existing record in the remote_applications table.

availability   string  optional    

Specifies whether the ISO image will be public. Example: public

Must be one of:
  • public
  • forSpecifiedUsers
users   integer[]  optional    

Array of User Ids. The id of an existing record in the users table.

Delete ISO Image

requires authentication

Deletes a specific ISO image.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/os/isoimages/3" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/isoimages/3'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/isoimages/3';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/os/isoimages/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the ISO image to delete. Example: 3

List OS Templates

requires authentication

Updated in 1.25.1
Returns a paginated list of OS templates.

Optionally, you can include a list of addons (based on template tags) by using the with_addons query parameter.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/templates?with_addons=1&per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/templates'
params = {
  'with_addons': '1',
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/templates';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'with_addons' => '1',
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 224,
            "template_id": 224,
            "name": "possimus",
            "server_id": 497,
            "tags": [
                "aut",
                "repellendus",
                "atque",
                "autem"
            ],
            "architecture": "arm",
            "cache_folder": "voluptates",
            "mirror": "http://zboncak.com/nihil-ea-possimus-illo-numquam-quo",
            "edition": "eos",
            "iso_url": "http://www.braun.net/",
            "tftp_url": "http://breitenberg.com/",
            "license": "sed",
            "gpxe": "Molestiae placeat error recusandae officia ut.",
            "disk_layout": "Officia dolor aperiam deleniti.",
            "packages": "Et assumenda ratione cumque minima tenetur.",
            "post_installation": "Voluptatem aut molestias quia est.",
            "first_boot": "Sunt qui facere qui qui amet et provident optio.",
            "extras": "Sit amet consectetur vero quos ut.",
            "timezone": "America/Montevideo",
            "language": "sk",
            "family": "",
            "is_windows": false,
            "is_rescue": false,
            "servers": [
                {
                    "id": 497,
                    "app_id": 896,
                    "name": "Lexus Sauer",
                    "module": "Remote Module",
                    "configuration": {
                        "app": 896,
                        "rebootmethod": "manual",
                        "nameserver_1": null,
                        "nameserver_2": "251.77.76.191",
                        "rescue_template": null,
                        "reinstall_template": null,
                        "bootloader": "undionly.kpxe"
                    },
                    "enabled": 0
                },
                {
                    "id": 498,
                    "app_id": 897,
                    "name": "Rogers Bogan",
                    "module": "Remote Module",
                    "configuration": {
                        "app": 897,
                        "rebootmethod": "pdu",
                        "nameserver_1": null,
                        "nameserver_2": "173.20.97.1",
                        "rescue_template": null,
                        "reinstall_template": null,
                        "bootloader": null
                    },
                    "enabled": 0
                }
            ],
            "provisioning_profiles": []
        },
        {
            "id": 225,
            "template_id": 225,
            "name": "numquam",
            "server_id": 499,
            "tags": [
                "blanditiis",
                "odit",
                "neque",
                "reiciendis",
                "et"
            ],
            "architecture": "arm",
            "cache_folder": "dolore",
            "mirror": "https://www.kessler.com/quibusdam-accusantium-debitis-debitis-reprehenderit-quidem-aliquid",
            "edition": "repellendus",
            "iso_url": "http://www.runolfsdottir.com/",
            "tftp_url": "https://grady.biz/amet-facilis-in-et-esse.html",
            "license": "veritatis",
            "gpxe": "Sint culpa dicta officia voluptatibus et velit.",
            "disk_layout": "Dolore nulla occaecati quos velit asperiores iste.",
            "packages": "Cupiditate reprehenderit molestiae doloribus quia quia.",
            "post_installation": "Quia vel quam maiores quia placeat.",
            "first_boot": "Modi unde eligendi excepturi et.",
            "extras": "Similique nisi eos id.",
            "timezone": "Europe/Dublin",
            "language": "zh",
            "family": "",
            "is_windows": false,
            "is_rescue": false,
            "servers": [
                {
                    "id": 499,
                    "app_id": 898,
                    "name": "Miles Moore MD",
                    "module": "Remote Module",
                    "configuration": {
                        "app": 898,
                        "rebootmethod": "ipmi_easy_uefi",
                        "nameserver_1": "213.62.149.115",
                        "nameserver_2": "225.85.209.108",
                        "rescue_template": null,
                        "reinstall_template": null,
                        "bootloader": null
                    },
                    "enabled": 0
                },
                {
                    "id": 500,
                    "app_id": 899,
                    "name": "Frederique Stark",
                    "module": "Remote Module",
                    "configuration": {
                        "app": 899,
                        "rebootmethod": "manual",
                        "nameserver_1": null,
                        "nameserver_2": null,
                        "rescue_template": null,
                        "reinstall_template": null,
                        "bootloader": null
                    },
                    "enabled": 0
                }
            ],
            "provisioning_profiles": []
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/os/templates?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/os/templates",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/templates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

with_addons   boolean  optional    

Optional. If set to true, includes a list of addons for each template. Example: true

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, edition, architecture, family. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, edition, architecture, tags. Example: id

Show OS Template

requires authentication

Updated in 1.25.1
Returns detailed information about a specific template.

Optionally, you can include a list of addons (based on template tags) by using the with_addons query parameter.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/templates/1?with_addons=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/templates/1'
params = {
  'with_addons': '1',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/templates/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'with_addons' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 226,
        "template_id": 226,
        "name": "consequuntur",
        "server_id": 501,
        "tags": [
            "nihil",
            "velit",
            "earum"
        ],
        "architecture": "x64",
        "cache_folder": "odio",
        "mirror": "http://von.com/",
        "edition": "impedit",
        "iso_url": "https://www.shanahan.net/labore-velit-id-qui-voluptate-ea-vel-delectus-unde",
        "tftp_url": "http://www.weissnat.info/",
        "license": "dolor",
        "gpxe": "Tenetur qui fugit blanditiis fuga suscipit est.",
        "disk_layout": "Quod quia unde vel possimus laudantium.",
        "packages": "Quia assumenda eum consequatur architecto maiores.",
        "post_installation": "Quae aliquam dolorem nulla voluptatum et.",
        "first_boot": "Voluptas iusto veritatis aut vel reprehenderit omnis et.",
        "extras": "Tenetur modi ut est eum libero deserunt cumque omnis.",
        "timezone": "Europe/Amsterdam",
        "language": "mt",
        "family": "",
        "is_windows": false,
        "is_rescue": false,
        "servers": [
            {
                "id": 501,
                "app_id": 900,
                "name": "Ms. Emely Marquardt II",
                "module": "Remote Module",
                "configuration": {
                    "app": 900,
                    "rebootmethod": "ipmi_easy",
                    "nameserver_1": null,
                    "nameserver_2": null,
                    "rescue_template": null,
                    "reinstall_template": null,
                    "bootloader": null
                },
                "enabled": 0
            },
            {
                "id": 502,
                "app_id": 901,
                "name": "Abdullah Murphy V",
                "module": "Remote Module",
                "configuration": {
                    "app": 901,
                    "rebootmethod": "ipmi_easy",
                    "nameserver_1": null,
                    "nameserver_2": null,
                    "rescue_template": null,
                    "reinstall_template": null,
                    "bootloader": "ipxe1.0.0undionly.kkpxe"
                },
                "enabled": 0
            }
        ],
        "provisioning_profiles": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/templates/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the template. Example: 1

Query Parameters

with_addons   boolean  optional    

Optional. If set to true, includes a list of addons for each template. Example: true

Create OS Template

requires authentication

Updated in 1.25.1
Creates a new template with the provided details.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/os/templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Ubuntu 24\",
    \"server\": [
        1
    ],
    \"provisioning_profiles\": [
        3
    ],
    \"tags\": \"windows custom\",
    \"architecture\": \"amd64\",
    \"cache_folder\": \"debian_bookworm\",
    \"mirror\": \"http:\\/\\/ftp.debian.org\\/debian\",
    \"edition\": \"bookworm\",
    \"iso_url\": \"https:\\/\\/cdimage.debian.org\\/cdimage\\/unofficial\\/non-free\\/firmware\\/bookworm\\/current\\/firmware.cpio.gz\",
    \"extract_iso\": false,
    \"timezone\": \"America\\/Los_Angeles\",
    \"language\": \"en_US\",
    \"gpxe\": \"Example GPXE script\",
    \"disk_layout\": \"Example Disk Layout script\",
    \"packages\": \"Example Packages\",
    \"post_installation\": \"Example Post Installation script\",
    \"first_boot\": \"Example First Boot script\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/templates'
payload = {
    "name": "Ubuntu 24",
    "server": [
        1
    ],
    "provisioning_profiles": [
        3
    ],
    "tags": "windows custom",
    "architecture": "amd64",
    "cache_folder": "debian_bookworm",
    "mirror": "http:\/\/ftp.debian.org\/debian",
    "edition": "bookworm",
    "iso_url": "https:\/\/cdimage.debian.org\/cdimage\/unofficial\/non-free\/firmware\/bookworm\/current\/firmware.cpio.gz",
    "extract_iso": false,
    "timezone": "America\/Los_Angeles",
    "language": "en_US",
    "gpxe": "Example GPXE script",
    "disk_layout": "Example Disk Layout script",
    "packages": "Example Packages",
    "post_installation": "Example Post Installation script",
    "first_boot": "Example First Boot script"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/templates';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Ubuntu 24',
            'server' => [
                1,
            ],
            'provisioning_profiles' => [
                3,
            ],
            'tags' => 'windows custom',
            'architecture' => 'amd64',
            'cache_folder' => 'debian_bookworm',
            'mirror' => 'http://ftp.debian.org/debian',
            'edition' => 'bookworm',
            'iso_url' => 'https://cdimage.debian.org/cdimage/unofficial/non-free/firmware/bookworm/current/firmware.cpio.gz',
            'extract_iso' => false,
            'timezone' => 'America/Los_Angeles',
            'language' => 'en_US',
            'gpxe' => 'Example GPXE script',
            'disk_layout' => 'Example Disk Layout script',
            'packages' => 'Example Packages',
            'post_installation' => 'Example Post Installation script',
            'first_boot' => 'Example First Boot script',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 227,
        "template_id": 227,
        "name": "iste",
        "server_id": 503,
        "tags": [
            "aut",
            "ut",
            "illum",
            "ea",
            "corrupti"
        ],
        "architecture": "arm",
        "cache_folder": "distinctio",
        "mirror": "http://www.blick.com/ad-neque-harum-sint-provident-sunt",
        "edition": "aut",
        "iso_url": "http://www.bayer.com/",
        "tftp_url": "https://www.rippin.info/sed-velit-cupiditate-sint-dolorum-pariatur-aut",
        "license": "nihil",
        "gpxe": "Optio rem qui cumque.",
        "disk_layout": "Nobis laboriosam corrupti est rem.",
        "packages": "Eveniet aut deleniti consequatur cum.",
        "post_installation": "Sequi rerum harum et suscipit quis debitis placeat.",
        "first_boot": "Ullam molestiae voluptatem illum suscipit unde quia impedit.",
        "extras": "Tempore praesentium deserunt cumque sapiente molestiae qui nihil.",
        "timezone": "Europe/Ljubljana",
        "language": "lo",
        "family": "",
        "is_windows": false,
        "is_rescue": false,
        "servers": [
            {
                "id": 503,
                "app_id": 902,
                "name": "Prof. Bradly Reichert",
                "module": "Remote Module",
                "configuration": {
                    "app": 902,
                    "rebootmethod": "ipmi_easy",
                    "nameserver_1": "155.41.109.60",
                    "nameserver_2": "2.185.147.172",
                    "rescue_template": null,
                    "reinstall_template": null,
                    "bootloader": null
                },
                "enabled": 0
            },
            {
                "id": 504,
                "app_id": 903,
                "name": "Tamia Stiedemann I",
                "module": "Remote Module",
                "configuration": {
                    "app": 903,
                    "rebootmethod": "ipmi_easy_uefi",
                    "nameserver_1": "70.63.147.113",
                    "nameserver_2": null,
                    "rescue_template": null,
                    "reinstall_template": null,
                    "bootloader": null
                },
                "enabled": 0
            }
        ],
        "provisioning_profiles": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/os/templates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Any name for the installation template. Must not be greater than 255 characters. Example: Ubuntu 24

server   integer[]  optional    

Provisioning server Id. The id of an existing record in the os_servers table.

provisioning_profiles   integer[]  optional    

Provisioning profile ID. The id of an existing record in the os_provisioning_profiles table.

tags   string  optional    

Tags defining the installation template. Separated by space. Example: windows custom

architecture   string  optional    

System architecture of the installation template. Example: amd64

cache_folder   string  optional    

The name of the cache directory which stores the installation files on the remote agent server. Example: debian_bookworm

mirror   string  optional    

Mirror containing the installation files. Must be a valid URL. Example: http://ftp.debian.org/debian

edition   string  optional    

Edition of the installation template. Example: bookworm

iso_url   string  optional    

ISO image URL. Required for some installation templates. Must be a valid URL. Example: https://cdimage.debian.org/cdimage/unofficial/non-free/firmware/bookworm/current/firmware.cpio.gz

extract_iso   boolean  optional    

Specifies whether the ISO image should be extracted after downloading. Example: false

timezone   string  optional    

The timezone of the target operating system. Must be a valid time zone, such as Africa/Accra. Must not be one of America/Coyhaique. Example: America/Los_Angeles

language   string  optional    

Language of the target operating system. Example: en_US

gpxe   string  optional    

Specifies the script to be executed during PXE boot. Example: Example GPXE script

disk_layout   string  optional    

Defines the partitioning method of the disk. This script depends on the specific distribution of the relational system. Example: Example Disk Layout script

packages   string  optional    

Specifies a list of system packages (each in a new line) that will be installed. Example: Example Packages

post_installation   string  optional    

Specifies the installation script that will be executed after the installation of the operating system. In the case of Linux systems, these are Bash language scripts. For Windows systems, they are PowerShell scripts. Example: Example Post Installation script

first_boot   string  optional    

Specifies the installation script that will be executed when the operating system first boots. Only for some systems such as Centos, Ubuntu or Debian. Example: Example First Boot script

Update OS Template

requires authentication

Updated in 1.25.1
Updates template with the provided details and id.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/os/templates/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Ubuntu 24\",
    \"server\": [
        1
    ],
    \"provisioning_profiles\": [
        3
    ],
    \"provisioning_addons\": [
        5
    ],
    \"tags\": \"windows custom\",
    \"architecture\": \"amd64\",
    \"cache_folder\": \"debian_bookworm\",
    \"mirror\": \"http:\\/\\/ftp.debian.org\\/debian\",
    \"edition\": \"bookworm\",
    \"iso_url\": \"https:\\/\\/cdimage.debian.org\\/cdimage\\/unofficial\\/non-free\\/firmware\\/bookworm\\/current\\/firmware.cpio.gz\",
    \"extract_iso\": false,
    \"timezone\": \"America\\/Los_Angeles\",
    \"language\": \"en_US\",
    \"gpxe\": \"Example GPXE script\",
    \"disk_layout\": \"Example Disk Layout script\",
    \"packages\": \"Example Packages\",
    \"post_installation\": \"Example Post Installation script\",
    \"first_boot\": \"Example First Boot script\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/templates/1'
payload = {
    "name": "Ubuntu 24",
    "server": [
        1
    ],
    "provisioning_profiles": [
        3
    ],
    "provisioning_addons": [
        5
    ],
    "tags": "windows custom",
    "architecture": "amd64",
    "cache_folder": "debian_bookworm",
    "mirror": "http:\/\/ftp.debian.org\/debian",
    "edition": "bookworm",
    "iso_url": "https:\/\/cdimage.debian.org\/cdimage\/unofficial\/non-free\/firmware\/bookworm\/current\/firmware.cpio.gz",
    "extract_iso": false,
    "timezone": "America\/Los_Angeles",
    "language": "en_US",
    "gpxe": "Example GPXE script",
    "disk_layout": "Example Disk Layout script",
    "packages": "Example Packages",
    "post_installation": "Example Post Installation script",
    "first_boot": "Example First Boot script"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/templates/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Ubuntu 24',
            'server' => [
                1,
            ],
            'provisioning_profiles' => [
                3,
            ],
            'provisioning_addons' => [
                5,
            ],
            'tags' => 'windows custom',
            'architecture' => 'amd64',
            'cache_folder' => 'debian_bookworm',
            'mirror' => 'http://ftp.debian.org/debian',
            'edition' => 'bookworm',
            'iso_url' => 'https://cdimage.debian.org/cdimage/unofficial/non-free/firmware/bookworm/current/firmware.cpio.gz',
            'extract_iso' => false,
            'timezone' => 'America/Los_Angeles',
            'language' => 'en_US',
            'gpxe' => 'Example GPXE script',
            'disk_layout' => 'Example Disk Layout script',
            'packages' => 'Example Packages',
            'post_installation' => 'Example Post Installation script',
            'first_boot' => 'Example First Boot script',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 228,
        "template_id": 228,
        "name": "unde",
        "server_id": 505,
        "tags": [
            "quibusdam",
            "consequuntur",
            "est",
            "assumenda"
        ],
        "architecture": "x64",
        "cache_folder": "laudantium",
        "mirror": "http://gerhold.com/officia-pariatur-rerum-aut-illo-deleniti.html",
        "edition": "qui",
        "iso_url": "http://koelpin.com/cumque-quis-suscipit-exercitationem-ut",
        "tftp_url": "http://www.denesik.com/voluptas-ea-tempora-commodi-aliquam-quia-autem-molestiae.html",
        "license": "perspiciatis",
        "gpxe": "Ut vel officia quibusdam est veniam aut asperiores.",
        "disk_layout": "Ea omnis in cum suscipit earum architecto saepe.",
        "packages": "Non et est et qui veritatis ducimus.",
        "post_installation": "Perspiciatis cum modi dignissimos laborum.",
        "first_boot": "Voluptatum ratione sint sed deserunt.",
        "extras": "Voluptas repellendus qui est provident dolore adipisci.",
        "timezone": "Pacific/Wake",
        "language": "na",
        "family": "",
        "is_windows": false,
        "is_rescue": false,
        "servers": [
            {
                "id": 505,
                "app_id": 904,
                "name": "Nelle Wuckert",
                "module": "Remote Module",
                "configuration": {
                    "app": 904,
                    "rebootmethod": "manual",
                    "nameserver_1": null,
                    "nameserver_2": null,
                    "rescue_template": null,
                    "reinstall_template": null,
                    "bootloader": "vmware.kpxe"
                },
                "enabled": 1
            },
            {
                "id": 506,
                "app_id": 905,
                "name": "Ms. Michaela Volkman",
                "module": "Remote Module",
                "configuration": {
                    "app": 905,
                    "rebootmethod": "ipmi_easy_uefi",
                    "nameserver_1": null,
                    "nameserver_2": null,
                    "rescue_template": null,
                    "reinstall_template": null,
                    "bootloader": "vmware.kpxe"
                },
                "enabled": 1
            }
        ],
        "provisioning_profiles": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/os/templates/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the template. Example: 1

Body Parameters

name   string  optional    

Any name for the installation template. Must not be greater than 255 characters. Example: Ubuntu 24

server   integer[]  optional    

Provisioning server Id. The id of an existing record in the os_servers table.

provisioning_profiles   integer[]  optional    

Provisioning profile ID. The id of an existing record in the os_provisioning_profiles table.

provisioning_addons   integer[]  optional    

Provisioning addon ID. The id of an existing record in the os_addons table.

tags   string  optional    

Tags defining the installation template. Separated by space. Example: windows custom

architecture   string  optional    

System architecture of the installation template. Example: amd64

cache_folder   string  optional    

The name of the cache directory which stores the installation files on the remote agent server. Example: debian_bookworm

mirror   string  optional    

Mirror containing the installation files. Must be a valid URL. Example: http://ftp.debian.org/debian

edition   string  optional    

Edition of the installation template. Example: bookworm

iso_url   string  optional    

ISO image URL. Required for some installation templates. Must be a valid URL. Example: https://cdimage.debian.org/cdimage/unofficial/non-free/firmware/bookworm/current/firmware.cpio.gz

extract_iso   boolean  optional    

Specifies whether the ISO image should be extracted after downloading. Example: false

timezone   string  optional    

The timezone of the target operating system. Example: America/Los_Angeles

language   string  optional    

Language of the target operating system. Example: en_US

gpxe   string  optional    

Specifies the script to be executed during PXE boot. Example: Example GPXE script

disk_layout   string  optional    

Defines the partitioning method of the disk. This script depends on the specific distribution of the relational system. Example: Example Disk Layout script

packages   string  optional    

Specifies a list of system packages (each in a new line) that will be installed. Example: Example Packages

post_installation   string  optional    

Specifies the installation script that will be executed after the installation of the operating system. In the case of Linux systems, these are Bash language scripts. For Windows systems, they are PowerShell scripts. Example: Example Post Installation script

first_boot   string  optional    

Specifies the installation script that will be executed when the operating system first boots. Only for some systems such as Centos, Ubuntu or Debian. Example: Example First Boot script

Delete OS Template

requires authentication

Deletes template with given id

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/os/templates/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/templates/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/templates/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/os/templates/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the template. Example: 1

List OS Addons

requires authentication

Returns a paginated list of OS addons.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/addons?template_id=14&per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/addons'
params = {
  'template_id': '14',
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/addons';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'template_id' => '14',
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 88,
            "server_id": 507,
            "name": "Maynard Feeney",
            "description": "Facilis libero dignissimos fugit et.",
            "type": "firstboot",
            "tag": "quisquam unde",
            "tags": [
                "quisquam",
                "unde"
            ],
            "data": "Dolore corporis excepturi ut dolorem necessitatibus explicabo."
        },
        {
            "id": 89,
            "server_id": 508,
            "name": "Prof. Susan Goldner MD",
            "description": "Qui illum consequatur aliquam beatae.",
            "type": "disklayout",
            "tag": "quia amet",
            "tags": [
                "quia",
                "amet"
            ],
            "data": "Enim nihil cupiditate dolor."
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/os/addons?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/os/addons",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/addons

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

template_id   integer  optional    

Optional. If set returns filtered collection for provided OS Template id Example: 14

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, type. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, type, tag. Example: id

Show OS Addon

requires authentication

Returns detailed information about a specific addon.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/addons/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/addons/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/addons/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "id": 90,
    "server_id": 509,
    "name": "Larry McClure II",
    "description": "Consequatur ut quis qui quibusdam quos.",
    "type": "postinstall",
    "tag": "quibusdam quo",
    "tags": [
        "quibusdam",
        "quo"
    ],
    "data": "Delectus nihil velit consequatur cumque."
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/addons/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the addon. Example: 1

Create OS Addon

requires authentication

Creates a new addon with the provided details.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/os/addons" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"cpanel\",
    \"tag\": \"adipisci\",
    \"type\": \"disklayout\",
    \"description\": \"Install cPanel\",
    \"data\": \"Example addon script\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/addons'
payload = {
    "name": "cpanel",
    "tag": "adipisci",
    "type": "disklayout",
    "description": "Install cPanel",
    "data": "Example addon script"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/addons';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'cpanel',
            'tag' => 'adipisci',
            'type' => 'disklayout',
            'description' => 'Install cPanel',
            'data' => 'Example addon script',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "id": 91,
    "server_id": 510,
    "name": "Dr. Rebeca Raynor",
    "description": "Ad quos voluptatem placeat deserunt doloribus nihil quisquam.",
    "type": "disklayout",
    "tag": "adipisci officia",
    "tags": [
        "adipisci",
        "officia"
    ],
    "data": "Mollitia repellendus similique deserunt."
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/os/addons

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Any name for the installation addon. Must not be greater than 255 characters. Example: cpanel

tag   string  optional    

Example: adipisci

type   string     

Specifies the type of the installation addon. Example: disklayout

Must be one of:
  • disklayout
  • firstboot
  • postinstall
description   string  optional    

Any description for the installation addon. Example: Install cPanel

data   string  optional    

Specifies the script for the installation addon. Example: Example addon script

Update OS Addon

requires authentication

Updates addon with the provided details and id.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/os/addons/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"cpanel\",
    \"tag\": \"fugiat\",
    \"type\": \"disklayout\",
    \"description\": \"Install cPanel\",
    \"data\": \"Example addon script\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/addons/1'
payload = {
    "name": "cpanel",
    "tag": "fugiat",
    "type": "disklayout",
    "description": "Install cPanel",
    "data": "Example addon script"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/addons/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'cpanel',
            'tag' => 'fugiat',
            'type' => 'disklayout',
            'description' => 'Install cPanel',
            'data' => 'Example addon script',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "id": 92,
    "server_id": 511,
    "name": "Linwood Rau",
    "description": "Ex magni sed quibusdam adipisci alias.",
    "type": "postinstall",
    "tag": "culpa qui",
    "tags": [
        "culpa",
        "qui"
    ],
    "data": "Esse deleniti iusto possimus numquam."
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/os/addons/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the addon. Example: 1

Body Parameters

name   string  optional    

Any name for the installation addon. Must not be greater than 255 characters. Example: cpanel

tag   string  optional    

Example: fugiat

type   string  optional    

Specifies the type of the installation addon. Example: disklayout

Must be one of:
  • disklayout
  • firstboot
  • postinstall
description   string  optional    

Any description for the installation addon. Example: Install cPanel

data   string  optional    

Specifies the script for the installation addon. Example: Example addon script

Delete OS Addon

requires authentication

Deletes addon with given id

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/os/addons/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/addons/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/addons/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/os/addons/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the addon. Example: 1

Install OS on Device

requires authentication

Initiates OS installation on a device

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/os/1/install" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"template\": 12,
    \"hostname\": \"server01.example.com\",
    \"username\": \"admin\",
    \"password\": \"secret123\",
    \"root_password\": \"rootsecret\",
    \"disk_addon\": 1,
    \"extras\": [
        20
    ],
    \"ssh_keys\": [
        12
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/1/install'
payload = {
    "template": 12,
    "hostname": "server01.example.com",
    "username": "admin",
    "password": "secret123",
    "root_password": "rootsecret",
    "disk_addon": 1,
    "extras": [
        20
    ],
    "ssh_keys": [
        12
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/1/install';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'template' => 12,
            'hostname' => 'server01.example.com',
            'username' => 'admin',
            'password' => 'secret123',
            'root_password' => 'rootsecret',
            'disk_addon' => 1,
            'extras' => [
                20,
            ],
            'ssh_keys' => [
                12,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 194,
        "device_id": 1111,
        "template_id": 229,
        "server_id": 512,
        "message": "Ipsum adipisci doloribus quia ut quae quia.",
        "dhcp": 1,
        "configuration": [],
        "log": "",
        "created_at": "2026-07-10 09:51:29",
        "updated_at": "2026-07-10 09:51:29"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/os/{deviceId}/install

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

Body Parameters

template   integer     

ID or identifier of the OS template to install. The id of an existing record in the os_templates table. Example: 12

hostname   string  optional    

Optional hostname for the new system. Example: server01.example.com

username   string     

Username for the new system. Example: admin

password   string     

Password for the user account. Example: secret123

root_password   string  optional    

Root password for the system (optional). Example: rootsecret

disk_addon   integer  optional    

Optional ID of an additional disk to use during installation. The id of an existing record in the os_addons table. Example: 1

extras   integer[]  optional    

The id of an existing record in the os_addons table.

ssh_keys   integer[]  optional    

The id of an existing record in the ssh_keys table.

Cancel OS Installation

requires authentication

Attempts to cancel the operating system installation process

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/os/1/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/1/cancel'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/1/cancel';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/os/{deviceId}/cancel

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

OS Installation Information

requires authentication

Returns details about the current OS installation process

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/1/install/information" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/1/install/information'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/1/install/information';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 195,
        "device_id": 1112,
        "template_id": 230,
        "server_id": 515,
        "message": "Ducimus dolore doloremque quia quaerat.",
        "dhcp": 1,
        "configuration": [],
        "log": "",
        "created_at": "2026-07-10 09:51:30",
        "updated_at": "2026-07-10 09:51:30"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/{deviceId}/install/information

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

Enable Rescue Mode

requires authentication

Initiates rescue mode for the device

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/os/1/rescue/enable" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/1/rescue/enable'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/1/rescue/enable';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 196,
        "device_id": 1113,
        "template_id": 231,
        "server_id": 518,
        "message": "Itaque consequuntur esse nobis corporis omnis incidunt.",
        "dhcp": 1,
        "configuration": [],
        "log": "",
        "created_at": "2026-07-10 09:51:30",
        "updated_at": "2026-07-10 09:51:30"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/os/{deviceId}/rescue/enable

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

Rescue Mode Status

requires authentication

Returns the current rescue mode status

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/1/rescue/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/1/rescue/status'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/1/rescue/status';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "inRescueMode": false
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/{deviceId}/rescue/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

Show Device Configuration

requires authentication

Updated in 1.25.1
Returns device OS configuration.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/1/configuration" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/1/configuration'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/1/configuration';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "gateway": "192.168.56.1",
        "netmask": "255.255.255.0",
        "nameserver_1": "1.1.1.1",
        "nameserver_2": "8.8.8.8",
        "rebootmethod": "manual",
        "bootloader": "undionly.kpxe"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/{deviceId}/configuration

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

Update Device Configuration

requires authentication

Updated in 1.25.1
Updates device OS configuration with the provided details and id.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/os/1/configuration" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"gateway\": \"192.168.1.1\",
    \"netmask\": \"255.255.255.0\",
    \"nameserver_1\": \"8.8.8.8\",
    \"nameserver_2\": \"8.8.4.4\",
    \"rebootmethod\": \"ipmi_easy\",
    \"bootloader\": \"undionly.kpxe\",
    \"installation_lock\": \"1\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/1/configuration'
payload = {
    "gateway": "192.168.1.1",
    "netmask": "255.255.255.0",
    "nameserver_1": "8.8.8.8",
    "nameserver_2": "8.8.4.4",
    "rebootmethod": "ipmi_easy",
    "bootloader": "undionly.kpxe",
    "installation_lock": "1"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/1/configuration';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'gateway' => '192.168.1.1',
            'netmask' => '255.255.255.0',
            'nameserver_1' => '8.8.8.8',
            'nameserver_2' => '8.8.4.4',
            'rebootmethod' => 'ipmi_easy',
            'bootloader' => 'undionly.kpxe',
            'installation_lock' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "gateway": "192.168.56.1",
        "netmask": "255.255.255.0",
        "nameserver_1": "1.1.1.1",
        "nameserver_2": "8.8.8.8",
        "rebootmethod": "manual",
        "bootloader": "undionly.kpxe"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/os/{deviceId}/configuration

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

Body Parameters

gateway   string  optional    

Optional gateway IP address. Must be a valid IP address. Example: 192.168.1.1

netmask   string  optional    

Optional subnet mask, must be one of the allowed CIDR netmask values. Example: 255.255.255.0

Must be one of:
  • 128.0.0.0
  • 192.0.0.0
  • 224.0.0.0
  • 240.0.0.0
  • 248.0.0.0
  • 252.0.0.0
  • 254.0.0.0
  • 255.0.0.0
  • 255.128.0.0
  • 255.192.0.0
  • 255.224.0.0
  • 255.240.0.0
  • 255.248.0.0
  • 255.252.0.0
  • 255.254.0.0
  • 255.255.0.0
  • 255.255.128.0
  • 255.255.192.0
  • 255.255.224.0
  • 255.255.240.0
  • 255.255.248.0
  • 255.255.252.0
  • 255.255.254.0
  • 255.255.255.0
  • 255.255.255.128
  • 255.255.255.192
  • 255.255.255.224
  • 255.255.255.240
  • 255.255.255.248
  • 255.255.255.252
  • 255.255.255.254
  • 255.255.255.255
nameserver_1   string  optional    

Optional first nameserver address. Example: 8.8.8.8

nameserver_2   string  optional    

Optional second nameserver address. Example: 8.8.4.4

rebootmethod   string  optional    

Optional reboot method. Example: ipmi_easy

Must be one of:
  • ipmi_easy
  • ipmi_easy_uefi
  • pdu
  • manual
bootloader   string  optional    

Optional bootloader type. Example: undionly.kpxe

Must be one of:
  • ipxe1.0.0undionly.kkpxe
  • undionly.kpxe
  • vmware.kpxe
installation_lock   string  optional    

Installation lock state. 1 means locked, 0 means unlocked. Example: 1

Must be one of:
  • 0
  • 1

Find OS provisioning server

requires authentication

Returns detailed information about provisioning server

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/1/provisioning/server?find_by_type=device" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/1/provisioning/server'
params = {
  'find_by_type': 'device',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/1/provisioning/server';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'find_by_type' => 'device',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 521,
        "app_id": 920,
        "name": "Wilton Bruen DDS",
        "module": "Remote Module",
        "configuration": {
            "app": 920,
            "rebootmethod": "ipmi_easy_uefi",
            "nameserver_1": null,
            "nameserver_2": null,
            "rescue_template": null,
            "reinstall_template": null,
            "bootloader": null
        },
        "enabled": 0
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/{id}/provisioning/server

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the location or device. Example: 1

Query Parameters

find_by_type   string  optional    

Optional. One of location, device. If not set default to device. Example: device

List provisioning tasks

requires authentication

Returns a paginated list of provisioning tasks.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/provisioning/tasks?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/provisioning/tasks'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/provisioning/tasks';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 197,
            "device_id": 1114,
            "template_id": 232,
            "server_id": 522,
            "message": "Laudantium harum ullam ducimus velit et eaque.",
            "dhcp": 1,
            "configuration": [],
            "log": "",
            "created_at": "2026-07-10 09:51:30",
            "updated_at": "2026-07-10 09:51:30"
        },
        {
            "id": 198,
            "device_id": 1115,
            "template_id": 233,
            "server_id": 525,
            "message": "Ut ea sed id animi est sit autem.",
            "dhcp": 1,
            "configuration": [],
            "log": "",
            "created_at": "2026-07-10 09:51:31",
            "updated_at": "2026-07-10 09:51:31"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/os/provisioning/tasks?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/os/provisioning/tasks",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/provisioning/tasks

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, device_id, server_id, template_id, message. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, device_id, server_id, template_id, message. Example: id

List provisioning history

requires authentication

Returns a paginated list of provisioning history.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/provisioning/history?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/provisioning/history'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/provisioning/history';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 129,
            "device_id": 1116,
            "server_id": 528,
            "template": "Mateo Koch",
            "status": "",
            "log": "",
            "created_at": "2026-07-10 09:51:31",
            "updated_at": "2026-07-10 09:51:31"
        },
        {
            "id": 130,
            "device_id": 1117,
            "server_id": 529,
            "template": "Dr. Athena Johns",
            "status": "",
            "log": "",
            "created_at": "2026-07-10 09:51:32",
            "updated_at": "2026-07-10 09:51:32"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/os/provisioning/history?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/os/provisioning/history",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/provisioning/history

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, device_id, server_id, status. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, device_id, server_id, status, template. Example: id

List Provisioning Profiles

requires authentication

Returns a paginated list of provisioning profiles.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/provisioning-profiles?search_term=active%2Cpending&per_page=10&page=1&sort_by=id&sort_dir=asc&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/provisioning-profiles'
params = {
  'search_term': 'active,pending',
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/provisioning-profiles';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'search_term' => 'active,pending',
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 79,
            "uuid": "fdbcee17-3b3a-3608-8f87-0fb2bd4c7bed",
            "name": "Unattend quidem",
            "description": "Aut rerum consectetur voluptas ullam.",
            "type": {
                "value": "unattend",
                "label": "Unattend (Windows)"
            },
            "version": "2.0",
            "predefined": false,
            "official": false,
            "installation_template": "unattend_rerum",
            "settings": [],
            "update_available": false,
            "latest_version": null,
            "created_at": "2026-07-10 09:51:32",
            "updated_at": "2026-07-10 09:51:32"
        },
        {
            "id": 80,
            "uuid": "5c53dbf3-d990-37b5-9c8e-126622c1732e",
            "name": "Unattend error",
            "description": "Iure numquam dignissimos aut ipsam voluptatibus itaque quis.",
            "type": {
                "value": "unattend",
                "label": "Unattend (Windows)"
            },
            "version": "1.1",
            "predefined": false,
            "official": false,
            "installation_template": "unattend_inventore",
            "settings": [],
            "update_available": false,
            "latest_version": null,
            "created_at": "2026-07-10 09:51:32",
            "updated_at": "2026-07-10 09:51:32"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/os/provisioning-profiles?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/os/provisioning-profiles",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/provisioning-profiles

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, type, version, predefined. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, uuid, name, description, type, version. Example: id

Show Provisioning Profile

requires authentication

Returns detailed information about a specific provisioning profile.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/os/provisioning-profiles/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/provisioning-profiles/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/provisioning-profiles/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 81,
        "uuid": "6ffc5064-a74a-39ec-924c-efc07ae917f1",
        "name": "Startnet vero",
        "description": "Nihil pariatur sapiente culpa aperiam.",
        "type": {
            "value": "startnet",
            "label": "Startnet (Windows)"
        },
        "version": "2.0",
        "predefined": false,
        "official": false,
        "installation_template": "startnet_minus",
        "settings": [],
        "update_available": false,
        "latest_version": null,
        "created_at": "2026-07-10 09:51:32",
        "updated_at": "2026-07-10 09:51:32"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/os/provisioning-profiles/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the provisioning profile. Example: 1

Create Provisioning Profile

requires authentication

Creates a new provisioning profile.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/os/provisioning-profiles" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Basic Kickstart\",
    \"description\": \"Default kickstart profile for Linux installations.\",
    \"type\": \"kickstart\",
    \"version\": \"1.0\",
    \"installation_template\": \"firstboot_linux_ssh_network\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/provisioning-profiles'
payload = {
    "name": "Basic Kickstart",
    "description": "Default kickstart profile for Linux installations.",
    "type": "kickstart",
    "version": "1.0",
    "installation_template": "firstboot_linux_ssh_network"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/provisioning-profiles';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Basic Kickstart',
            'description' => 'Default kickstart profile for Linux installations.',
            'type' => 'kickstart',
            'version' => '1.0',
            'installation_template' => 'firstboot_linux_ssh_network',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 82,
        "uuid": "75548ad3-f96e-3837-a37b-4562d0d50ce5",
        "name": "Postinstall mollitia",
        "description": "Voluptas quae et voluptas et dolores est illo.",
        "type": {
            "value": "postinstall",
            "label": "PostInstall (Bootstrap script)"
        },
        "version": "1.0",
        "predefined": false,
        "official": false,
        "installation_template": "postinstall_aut",
        "settings": [],
        "update_available": false,
        "latest_version": null,
        "created_at": "2026-07-10 09:51:32",
        "updated_at": "2026-07-10 09:51:32"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/os/provisioning-profiles

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Name of the provisioning profile. Must not be greater than 255 characters. Example: Basic Kickstart

description   string  optional    

Optional description of the provisioning profile. Example: Default kickstart profile for Linux installations.

type   string     

Provisioning profile type. Example: kickstart

Must be one of:
  • kickstart
  • preseed
  • autoinstall
  • unattend
  • startnet
  • firstboot
  • postinstall
  • custom
version   string  optional    

Version of the provisioning profile. Must not be greater than 50 characters. Example: 1.0

installation_template   string  optional    

Executable provisioning code assigned to this profile and interpreted by the provisioning engine. This value identifies which execution logic should be run for the given profile (e.g. first boot, kickstart, unattend). Example: firstboot_linux_ssh_network

Update Provisioning Profile

requires authentication

Updates provisioning profile with the provided details.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/os/provisioning-profiles/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Basic Kickstart\",
    \"description\": \"Updated description.\",
    \"type\": \"kickstart\",
    \"version\": \"1.1\",
    \"installation_template\": \"firstboot_linux_ssh_network\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/provisioning-profiles/1'
payload = {
    "name": "Basic Kickstart",
    "description": "Updated description.",
    "type": "kickstart",
    "version": "1.1",
    "installation_template": "firstboot_linux_ssh_network"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/provisioning-profiles/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Basic Kickstart',
            'description' => 'Updated description.',
            'type' => 'kickstart',
            'version' => '1.1',
            'installation_template' => 'firstboot_linux_ssh_network',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/os/provisioning-profiles/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the provisioning profile. Example: 1

Body Parameters

name   string  optional    

Name of the provisioning profile. Must not be greater than 255 characters. Example: Basic Kickstart

description   string  optional    

Optional description of the provisioning profile. Example: Updated description.

type   string  optional    

Provisioning profile type. Example: kickstart

Must be one of:
  • kickstart
  • preseed
  • autoinstall
  • unattend
  • startnet
  • firstboot
  • postinstall
  • custom
version   string  optional    

Version of the provisioning profile. Must not be greater than 50 characters. Example: 1.1

installation_template   string  optional    

Executable provisioning code assigned to this profile and interpreted by the provisioning engine. This value identifies which execution logic should be run for the given profile (e.g. first boot, kickstart, unattend). Example: firstboot_linux_ssh_network

Delete Provisioning Profile

requires authentication

Deletes provisioning profile with given id.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/os/provisioning-profiles/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/os/provisioning-profiles/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/os/provisioning-profiles/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/os/provisioning-profiles/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the provisioning profile. Example: 1

IPMI

List Proxy Servers

requires authentication

Returns a paginated list of proxy servers.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers?with_sessions=1&per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers'
params = {
  'with_sessions': '1',
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'with_sessions' => '1',
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 104,
            "app_id": 930,
            "name": "Vance Olson",
            "locations": [
                {
                    "id": 3188,
                    "app_id": null,
                    "name": "Sanford Ltd",
                    "address": "64583 Thaddeus Ridge Apt. 238\nEast Myriamchester, IN 85466-2346",
                    "city": "Pagacberg",
                    "state": "Nebraska",
                    "description": "Cumque ut soluta occaecati qui ipsa quaerat. Magnam velit nobis expedita autem. Adipisci ad et esse facere saepe est.",
                    "notes": "Atque sed voluptatem perferendis quod molestiae incidunt rerum. Ipsa dolore eos aperiam ut voluptatem. Non est maxime deserunt voluptate.",
                    "emergency": "1",
                    "phone": "+1-667-467-9530",
                    "flag": "Canada.png",
                    "created_at": "2026-07-10 09:51:32",
                    "updated_at": "2026-07-10 09:51:32"
                },
                {
                    "id": 3189,
                    "app_id": null,
                    "name": "Hirthe, Gutkowski and Kunde",
                    "address": "4493 Prosacco Crossing Suite 958\nWestleytown, VA 60342",
                    "city": "South Melanybury",
                    "state": "Connecticut",
                    "description": "Enim voluptas neque maiores dicta. Minus rerum fuga mollitia doloremque. Ullam ad molestias deleniti veniam voluptatem nam.",
                    "notes": "Dolorem voluptatum voluptatum officia eum odit nihil quis. Non omnis culpa saepe repellendus qui alias numquam. Laborum tenetur quia aut asperiores et. Quia cumque tempore in modi sint totam error.",
                    "emergency": "0",
                    "phone": "618.666.2113",
                    "flag": "USA.png",
                    "created_at": "2026-07-10 09:51:32",
                    "updated_at": "2026-07-10 09:51:32"
                }
            ],
            "configuration": []
        },
        {
            "id": 105,
            "app_id": 931,
            "name": "Joanne Langworth V",
            "locations": [
                {
                    "id": 3190,
                    "app_id": null,
                    "name": "Gorczany and Sons",
                    "address": "7390 Renner Court Suite 899\nReichelview, AK 81912-1587",
                    "city": "Lake Finnfurt",
                    "state": "South Carolina",
                    "description": "Dolorem aut corrupti nulla sit. Et expedita dolorem reiciendis enim laboriosam. Ipsam beatae itaque quasi provident ipsa perspiciatis perspiciatis.",
                    "notes": "Dolorem distinctio doloremque incidunt. Rerum omnis deleniti ut qui. Sapiente quia molestias incidunt eum repudiandae.",
                    "emergency": "0",
                    "phone": "(458) 925-3772",
                    "flag": "USA.png",
                    "created_at": "2026-07-10 09:51:33",
                    "updated_at": "2026-07-10 09:51:33"
                },
                {
                    "id": 3191,
                    "app_id": null,
                    "name": "Gerlach-Crooks",
                    "address": "4538 Ettie Burgs Suite 928\nNew Scottiefort, NH 80484-0571",
                    "city": "West Giuseppeshire",
                    "state": "South Carolina",
                    "description": "Sunt dignissimos error impedit non blanditiis temporibus eos. Doloremque eum qui et ipsa suscipit. Blanditiis esse non quidem asperiores sequi et ut dolore. Explicabo non a officiis sunt est sint culpa minus.",
                    "notes": "Enim quae neque eum. Culpa sed incidunt unde omnis. Expedita maxime distinctio ipsa et nihil. Aut quaerat omnis repellendus cumque et reiciendis.",
                    "emergency": "1",
                    "phone": "+1-234-708-5265",
                    "flag": "UK.png",
                    "created_at": "2026-07-10 09:51:33",
                    "updated_at": "2026-07-10 09:51:33"
                }
            ],
            "configuration": []
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipmi/proxy/servers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

with_sessions   boolean  optional    

Optional. If set to true, includes a list of sessions for each proxy server. Example: true

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, app_id, name. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, app_id, name. Example: id

Show Proxy Server

requires authentication

Returns detailed information about a specific proxy server.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers/1?with_sessions=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers/1'
params = {
  'with_sessions': '1',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'with_sessions' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 106,
        "app_id": 932,
        "name": "Jan Jerde",
        "locations": [
            {
                "id": 3192,
                "app_id": null,
                "name": "McLaughlin-Brakus",
                "address": "81780 Baumbach Street Suite 885\nPort Joyceview, CA 98974-2985",
                "city": "New Kyliestad",
                "state": "Hawaii",
                "description": "Amet autem itaque quis repudiandae. Est accusamus corporis sit omnis. Blanditiis aut soluta et et maxime. Et sapiente voluptatem maxime ea et quae vero.",
                "notes": "Ut iusto dolores aliquam numquam neque. Nisi libero rem est consequatur voluptas. Mollitia et est quia natus.",
                "emergency": "0",
                "phone": "+1.724.484.1276",
                "flag": "Canada.png",
                "created_at": "2026-07-10 09:51:33",
                "updated_at": "2026-07-10 09:51:33"
            },
            {
                "id": 3193,
                "app_id": null,
                "name": "Hartmann-Koelpin",
                "address": "5952 Rath Coves\nRexview, SD 74622-1098",
                "city": "Lake Paolostad",
                "state": "Wyoming",
                "description": "Dolores eos qui ullam. Nostrum illo saepe velit tempora esse sit. Autem libero aut rerum repudiandae consequatur quos. Aperiam voluptatem alias qui magnam debitis illo ut.",
                "notes": "Doloremque voluptates nihil nam quas. Ipsam ut dolorum illo eum error impedit temporibus. Officia cupiditate quia unde cum.",
                "emergency": "1",
                "phone": "+1.570.505.4817",
                "flag": "UK.png",
                "created_at": "2026-07-10 09:51:33",
                "updated_at": "2026-07-10 09:51:33"
            }
        ],
        "configuration": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipmi/proxy/servers/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the proxy server. Example: 1

Query Parameters

with_sessions   boolean  optional    

Optional. If set to true, includes a list of sessions. Example: true

Create Proxy Server

requires authentication

Creates a new proxy server with the provided details.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Main IPMI Proxy\",
    \"app_id\": 12,
    \"location\": [
        5
    ],
    \"proxy_type\": \"console\",
    \"java_version\": \"jdk1.8.0_121\",
    \"enable_firewall\": true,
    \"firewall_rules\": \"iptables -N ALLOW_ONLY\\n                              iptables -A OUTPUT -d {{:ipmi.ip}} -j ALLOW_ONLY\\n                              iptables -A ALLOW_ONLY -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\\n                              iptables -A ALLOW_ONLY -p tcp --dport 80 -j ACCEPT\\n                              iptables -A ALLOW_ONLY -p tcp --dport 443 -j ACCEPT\\n                              iptables -A ALLOW_ONLY -p tcp --dport {{:ipmi.kvmport}} -j ACCEPT\\n                              iptables -A OUTPUT -j DROP\",
    \"disable_login_buttons\": false
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers'
payload = {
    "name": "Main IPMI Proxy",
    "app_id": 12,
    "location": [
        5
    ],
    "proxy_type": "console",
    "java_version": "jdk1.8.0_121",
    "enable_firewall": true,
    "firewall_rules": "iptables -N ALLOW_ONLY\n                              iptables -A OUTPUT -d {{:ipmi.ip}} -j ALLOW_ONLY\n                              iptables -A ALLOW_ONLY -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\n                              iptables -A ALLOW_ONLY -p tcp --dport 80 -j ACCEPT\n                              iptables -A ALLOW_ONLY -p tcp --dport 443 -j ACCEPT\n                              iptables -A ALLOW_ONLY -p tcp --dport {{:ipmi.kvmport}} -j ACCEPT\n                              iptables -A OUTPUT -j DROP",
    "disable_login_buttons": false
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Main IPMI Proxy',
            'app_id' => 12,
            'location' => [
                5,
            ],
            'proxy_type' => 'console',
            'java_version' => 'jdk1.8.0_121',
            'enable_firewall' => true,
            'firewall_rules' => 'iptables -N ALLOW_ONLY'."\n"
                .'                              iptables -A OUTPUT -d {{:ipmi.ip}} -j ALLOW_ONLY'."\n"
                .'                              iptables -A ALLOW_ONLY -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT'."\n"
                .'                              iptables -A ALLOW_ONLY -p tcp --dport 80 -j ACCEPT'."\n"
                .'                              iptables -A ALLOW_ONLY -p tcp --dport 443 -j ACCEPT'."\n"
                .'                              iptables -A ALLOW_ONLY -p tcp --dport {{:ipmi.kvmport}} -j ACCEPT'."\n"
                .'                              iptables -A OUTPUT -j DROP',
            'disable_login_buttons' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 107,
        "app_id": 933,
        "name": "Vernie Abernathy III",
        "locations": [
            {
                "id": 3194,
                "app_id": null,
                "name": "Mohr and Sons",
                "address": "113 Dillon Stream Apt. 127\nOkunevachester, MD 40645-7264",
                "city": "East Pinkiefurt",
                "state": "Florida",
                "description": "Reprehenderit adipisci qui sit ab consequatur tempora voluptas et. Modi dicta expedita in dolores earum minus cupiditate.",
                "notes": "Rerum ipsam quas veniam et. Voluptates similique eos error consequatur cum et. Commodi ut vel hic.",
                "emergency": "0",
                "phone": "1-480-531-1757",
                "flag": "Canada.png",
                "created_at": "2026-07-10 09:51:33",
                "updated_at": "2026-07-10 09:51:33"
            },
            {
                "id": 3195,
                "app_id": null,
                "name": "Lehner PLC",
                "address": "17649 Okuneva Orchard Suite 792\nVilmaberg, MD 80033",
                "city": "West Larue",
                "state": "Massachusetts",
                "description": "Quia illum quibusdam qui earum et. Error optio assumenda vero eos dolores. Esse tempora iure est. Autem nulla iure soluta.",
                "notes": "Doloribus dolores illum et esse neque atque. Quaerat perferendis et tempora. Reprehenderit quia facere consequatur repudiandae dolorum.",
                "emergency": "1",
                "phone": "+19493000851",
                "flag": "Canada.png",
                "created_at": "2026-07-10 09:51:33",
                "updated_at": "2026-07-10 09:51:33"
            }
        ],
        "configuration": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ipmi/proxy/servers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Remote agent we want to use. Must not be greater than 255 characters. Example: Main IPMI Proxy

app_id   integer     

Select a remote application ID. The id of an existing record in the remote_applications table. Example: 12

location   integer[]  optional    

The id of an existing record in the locations table.

proxy_type   string  optional    

You can select the action that will be performed after starting the proxy. Example: console

Must be one of:
  • console
  • panel
  • panel-debug
java_version   string  optional    

You can specify the Java version that will be used in the noVNC session for Docker. Example: jdk1.8.0_121

Must be one of:
  • jdk1.8.0_121
  • jdk1.7.0_80
  • jre1.8.0_251
  • OpenWebStart
enable_firewall   boolean  optional    

Firewall is used to restrict access to websites. Enable this option to set up firewall rules. Example: true

firewall_rules   string  optional    

A script with firewall rules is automatically generated.
"{{:ipmi.ip}}" and "{{:ipmi.kvmport}}" will be replaced with the server IPMI IP Address and IPMI KVM Remote Port.
Edit the script to add your rules. Example: iptables -N ALLOW_ONLY iptables -A OUTPUT -d {{:ipmi.ip}} -j ALLOW_ONLY iptables -A ALLOW_ONLY -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A ALLOW_ONLY -p tcp --dport 80 -j ACCEPT iptables -A ALLOW_ONLY -p tcp --dport 443 -j ACCEPT iptables -A ALLOW_ONLY -p tcp --dport {{:ipmi.kvmport}} -j ACCEPT iptables -A OUTPUT -j DROP

disable_login_buttons   boolean  optional    

Login buttons are used to send login and password to the manufacturer panel form. Example: false

Update Proxy Server

requires authentication

Updates proxy server with the provided details and id.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Main IPMI Proxy\",
    \"app_id\": 12,
    \"location\": [
        3
    ],
    \"proxy_type\": \"console\",
    \"java_version\": \"jdk1.8.0_121\",
    \"enable_firewall\": true,
    \"firewall_rules\": \"iptables -N ALLOW_ONLY\\n                              iptables -A OUTPUT -d {{:ipmi.ip}} -j ALLOW_ONLY\\n                              iptables -A ALLOW_ONLY -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\\n                              iptables -A ALLOW_ONLY -p tcp --dport 80 -j ACCEPT\\n                              iptables -A ALLOW_ONLY -p tcp --dport 443 -j ACCEPT\\n                              iptables -A ALLOW_ONLY -p tcp --dport {{:ipmi.kvmport}} -j ACCEPT\\n                              iptables -A OUTPUT -j DROP\",
    \"disable_login_buttons\": false
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers/1'
payload = {
    "name": "Main IPMI Proxy",
    "app_id": 12,
    "location": [
        3
    ],
    "proxy_type": "console",
    "java_version": "jdk1.8.0_121",
    "enable_firewall": true,
    "firewall_rules": "iptables -N ALLOW_ONLY\n                              iptables -A OUTPUT -d {{:ipmi.ip}} -j ALLOW_ONLY\n                              iptables -A ALLOW_ONLY -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\n                              iptables -A ALLOW_ONLY -p tcp --dport 80 -j ACCEPT\n                              iptables -A ALLOW_ONLY -p tcp --dport 443 -j ACCEPT\n                              iptables -A ALLOW_ONLY -p tcp --dport {{:ipmi.kvmport}} -j ACCEPT\n                              iptables -A OUTPUT -j DROP",
    "disable_login_buttons": false
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Main IPMI Proxy',
            'app_id' => 12,
            'location' => [
                3,
            ],
            'proxy_type' => 'console',
            'java_version' => 'jdk1.8.0_121',
            'enable_firewall' => true,
            'firewall_rules' => 'iptables -N ALLOW_ONLY'."\n"
                .'                              iptables -A OUTPUT -d {{:ipmi.ip}} -j ALLOW_ONLY'."\n"
                .'                              iptables -A ALLOW_ONLY -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT'."\n"
                .'                              iptables -A ALLOW_ONLY -p tcp --dport 80 -j ACCEPT'."\n"
                .'                              iptables -A ALLOW_ONLY -p tcp --dport 443 -j ACCEPT'."\n"
                .'                              iptables -A ALLOW_ONLY -p tcp --dport {{:ipmi.kvmport}} -j ACCEPT'."\n"
                .'                              iptables -A OUTPUT -j DROP',
            'disable_login_buttons' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 108,
        "app_id": 934,
        "name": "Ron Rice",
        "locations": [
            {
                "id": 3196,
                "app_id": null,
                "name": "Roob-Lesch",
                "address": "7153 Russel Throughway Apt. 975\nIsmaelborough, TX 49248-5757",
                "city": "Coleborough",
                "state": "Alaska",
                "description": "Temporibus quae corrupti omnis non. Omnis repellendus sed aspernatur qui. Molestiae et laboriosam omnis porro quos nostrum cum architecto. Soluta mollitia maiores deserunt nam a consequuntur.",
                "notes": "Sit quibusdam est quisquam nihil vero odit. Sit et iusto sed in cupiditate error. Mollitia numquam explicabo qui eveniet. Quisquam iure rerum deserunt voluptatem porro nam eius.",
                "emergency": "1",
                "phone": "719.600.1081",
                "flag": "Canada.png",
                "created_at": "2026-07-10 09:51:33",
                "updated_at": "2026-07-10 09:51:33"
            },
            {
                "id": 3197,
                "app_id": null,
                "name": "Bergnaum, Osinski and Ferry",
                "address": "7919 Ignatius Prairie\nNikitamouth, IL 97934",
                "city": "New Rosetta",
                "state": "South Carolina",
                "description": "Velit molestiae doloribus tenetur reprehenderit. Qui dignissimos unde veniam voluptatem. Magnam voluptates iste praesentium suscipit. Ullam laboriosam beatae molestias ducimus.",
                "notes": "Ut est atque a eveniet deserunt. Exercitationem animi omnis consectetur sunt odit. Et qui ullam officiis hic numquam qui.",
                "emergency": "1",
                "phone": "1-585-532-8763",
                "flag": "Canada.png",
                "created_at": "2026-07-10 09:51:33",
                "updated_at": "2026-07-10 09:51:33"
            }
        ],
        "configuration": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/ipmi/proxy/servers/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the proxy server. Example: 1

Body Parameters

name   string  optional    

Remote agent we want to use. Must not be greater than 255 characters. Example: Main IPMI Proxy

app_id   integer  optional    

Select a remote application ID. The id of an existing record in the remote_applications table. Example: 12

location   integer[]  optional    

The id of an existing record in the locations table.

proxy_type   string  optional    

You can select the action that will be performed after starting the proxy. Example: console

Must be one of:
  • console
  • panel
  • panel-debug
java_version   string  optional    

You can specify the Java version that will be used in the noVNC session for Docker. Example: jdk1.8.0_121

Must be one of:
  • jdk1.8.0_121
  • jdk1.7.0_80
  • jre1.8.0_251
  • OpenWebStart
enable_firewall   boolean  optional    

Firewall is used to restrict access to websites. Enable this option to set up firewall rules. Example: true

firewall_rules   string  optional    

A script with firewall rules is automatically generated.
"{{:ipmi.ip}}" and "{{:ipmi.kvmport}}" will be replaced with the server IPMI IP Address and IPMI KVM Remote Port.
Edit the script to add your rules. Example: iptables -N ALLOW_ONLY iptables -A OUTPUT -d {{:ipmi.ip}} -j ALLOW_ONLY iptables -A ALLOW_ONLY -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A ALLOW_ONLY -p tcp --dport 80 -j ACCEPT iptables -A ALLOW_ONLY -p tcp --dport 443 -j ACCEPT iptables -A ALLOW_ONLY -p tcp --dport {{:ipmi.kvmport}} -j ACCEPT iptables -A OUTPUT -j DROP

disable_login_buttons   boolean  optional    

Login buttons are used to send login and password to the manufacturer panel form. Example: false

Delete Proxy Server

requires authentication

Deletes proxy server with given id

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/ipmi/proxy/servers/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the addon. Example: 1

List Proxy Sessions

requires authentication

Returns a paginated list of proxy sessions.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 92,
            "device_id": 1119,
            "ipmi_proxy_id": 109,
            "url": "https://192.168.203.150/client/console/53103/Bi8P3Gwd/0f5e719ee4e08a9885f34ee128fc70767dc38536",
            "status": 1,
            "message": "Vero et ipsam error cumque ut aut.",
            "log": null
        },
        {
            "id": 93,
            "device_id": 1120,
            "ipmi_proxy_id": 110,
            "url": "https://192.168.203.150/client/console/39452/PJXMkeZd/bf4f5d71d842dc8081d5c52784b8d532fbc75bbe",
            "status": 1,
            "message": "Nemo maxime consectetur perferendis aliquid voluptate cumque non.",
            "log": null
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipmi/proxy/sessions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, device_id, ipmi_proxy_id. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, device_id, ipmi_proxy_id. Example: id

Show Proxy Session

requires authentication

Returns detailed information about a specific proxy session.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 94,
        "device_id": 1121,
        "ipmi_proxy_id": 111,
        "url": "https://192.168.203.150/client/console/22640/v4F3kIVD/224455f2d04538de9b6b29398cbaad2f3edce294",
        "status": 1,
        "message": "Magni explicabo consequatur inventore.",
        "log": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipmi/proxy/sessions/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the proxy session. Example: 1

Delete Proxy Session

requires authentication

Deletes proxy session with given id

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/sessions/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/ipmi/proxy/sessions/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the proxy session. Example: 1

Start noVNC Session

requires authentication

Initiates a remote IPMI proxy session to the BMC of the device. The proxy allows web-based access to the BMC for remote management tasks like KVM, virtual media, or BIOS configuration.

If a session cannot be established, an error with logs may be returned for debugging purposes.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ipmi/1/novnc-connect" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/1/novnc-connect'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/1/novnc-connect';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 95,
        "device_id": 1122,
        "ipmi_proxy_id": 112,
        "url": "https://192.168.203.150/client/console/57490/YwzcM49A/9c03907f982a470a46aeabc300956f0c4f4a7954",
        "status": 1,
        "message": "Iste corrupti dolores quia labore.",
        "log": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ipmi/{deviceId}/novnc-connect

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

IPMI Power Status

requires authentication

Checking IPMI power status of the device.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ipmi/1/power-status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/1/power-status'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/1/power-status';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "status": "running"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ipmi/{deviceId}/power-status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

BMC Cold Reset

requires authentication

Sends a cold reset command to the BMC (Baseboard Management Controller) of the device. This action forces a full reboot of the BMC, which may temporarily interrupt device management features.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ipmi/1/bmc-reset-cold" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/1/bmc-reset-cold'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/1/bmc-reset-cold';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ipmi/{deviceId}/bmc-reset-cold

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

IPMI Force Boot

requires authentication

Added in 1.25.1
Sets the boot flag that the device BMC should provide to the system firmware on boot. Accepted values: force_pxe, force_disk, force_safe, force_diag, force_cdrom, force_bios.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ipmi/1/force-boot" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"force_pxe\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/1/force-boot'
payload = {
    "type": "force_pxe"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/1/force-boot';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'force_pxe',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ipmi/{deviceId}/force-boot

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

Body Parameters

type   string     

Boot flag to set on the device BMC. Example: force_pxe

Must be one of:
  • force_pxe
  • force_disk
  • force_safe
  • force_diag
  • force_cdrom
  • force_bios

IPMI Boot Status

requires authentication

Added in 1.25.1
Returns current chassis boot flags reported by the BMC.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipmi/1/boot-status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipmi/1/boot-status'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipmi/1/boot-status';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipmi/{deviceId}/boot-status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

deviceId   integer     

The ID of the device. Example: 1

IP Address Management

List of Subnets

requires authentication

Returns a paginated list of subnets

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipam/subnets?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=mask" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'mask',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'mask',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 126,
            "pool": "147.211.50.0",
            "mask": 24,
            "type": "ipv4",
            "status": "available",
            "ns1": null,
            "ns2": null,
            "gateway": null,
            "is_master_pool": 0,
            "description": "Est est dicta consequatur aut voluptas laborum.",
            "assignment": false,
            "tenants": [],
            "children": [],
            "parent": null,
            "vlan": null,
            "created_at": "2026-07-10 09:51:35",
            "updated_at": "2026-07-10 09:51:35"
        },
        {
            "id": 127,
            "pool": "236.71.93.0",
            "mask": 24,
            "type": "ipv4",
            "status": "available",
            "ns1": null,
            "ns2": null,
            "gateway": null,
            "is_master_pool": 0,
            "description": "Eaque nihil aliquid deserunt rem asperiores consequuntur doloremque amet.",
            "assignment": false,
            "tenants": [],
            "children": [],
            "parent": null,
            "vlan": null,
            "created_at": "2026-07-10 09:51:35",
            "updated_at": "2026-07-10 09:51:35"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/subnets?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/ipam/subnets",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipam/subnets

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, pool, mask, description, type, status, parent_id, vlan_id. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: mask, description, type, status, parent_id, vlan_id. Example: mask

Show Subnet

requires authentication

Returns detailed information about a specific subnet.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipam/subnets/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 128,
        "pool": "35.89.44.0",
        "mask": 24,
        "type": "ipv4",
        "status": "available",
        "ns1": null,
        "ns2": null,
        "gateway": null,
        "is_master_pool": 0,
        "description": "Tempora sint quas voluptates tempora.",
        "assignment": false,
        "excluded_ranges": [],
        "tenants": [],
        "children": [],
        "parent": null,
        "vlan": null,
        "ip_addresses": {
            "assigned_ips": [],
            "available_ranges": [
                {
                    "start": "35.89.44.1",
                    "end": "35.89.44.254"
                }
            ]
        },
        "addressing": {
            "network_address": "35.89.44.0",
            "network_mask": "255.255.255.0",
            "wildcard_mask": "0.0.0.255",
            "broadcast_address": "35.89.44.255",
            "first_available_ip": "35.89.44.1",
            "utilization_percentage": 0,
            "available_ips": 254,
            "assigned_ips": 0,
            "free_ips": 254
        },
        "created_at": "2026-07-10 09:51:35",
        "updated_at": "2026-07-10 09:51:35"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipam/subnets/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the subnet. Example: 1

Create Subnet

requires authentication

Creates a new subnet with the provided details.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ipam/subnets" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pool\": \"192.168.56.100\",
    \"mask\": 32,
    \"type\": \"ipv4\",
    \"description\": \"This is the description\",
    \"status\": \"available\",
    \"is_master_pool\": 1,
    \"parent_id\": 1,
    \"vlan_id\": 2,
    \"tenant_type\": \"Modules\\\\Addons\\\\IPManager\\\\Model\\\\IpamDevice\",
    \"tenant_ids\": [
        1
    ],
    \"assignment\": [
        \"location_1\"
    ],
    \"excluded_ranges\": [
        \"192.168.1.10-192.168.1.20\"
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets'
payload = {
    "pool": "192.168.56.100",
    "mask": 32,
    "type": "ipv4",
    "description": "This is the description",
    "status": "available",
    "is_master_pool": 1,
    "parent_id": 1,
    "vlan_id": 2,
    "tenant_type": "Modules\\Addons\\IPManager\\Model\\IpamDevice",
    "tenant_ids": [
        1
    ],
    "assignment": [
        "location_1"
    ],
    "excluded_ranges": [
        "192.168.1.10-192.168.1.20"
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'pool' => '192.168.56.100',
            'mask' => 32,
            'type' => 'ipv4',
            'description' => 'This is the description',
            'status' => 'available',
            'is_master_pool' => 1,
            'parent_id' => 1,
            'vlan_id' => 2,
            'tenant_type' => 'Modules\\Addons\\IPManager\\Model\\IpamDevice',
            'tenant_ids' => [
                1,
            ],
            'assignment' => [
                'location_1',
            ],
            'excluded_ranges' => [
                '192.168.1.10-192.168.1.20',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 129,
        "pool": "62.252.100.0",
        "mask": 24,
        "type": "ipv4",
        "status": "available",
        "ns1": null,
        "ns2": null,
        "gateway": null,
        "is_master_pool": 0,
        "description": "Dolorem amet ut quia.",
        "assignment": false,
        "excluded_ranges": [],
        "tenants": [],
        "children": [],
        "parent": null,
        "vlan": null,
        "ip_addresses": {
            "assigned_ips": [],
            "available_ranges": [
                {
                    "start": "62.252.100.1",
                    "end": "62.252.100.254"
                }
            ]
        },
        "addressing": {
            "network_address": "62.252.100.0",
            "network_mask": "255.255.255.0",
            "wildcard_mask": "0.0.0.255",
            "broadcast_address": "62.252.100.255",
            "first_available_ip": "62.252.100.1",
            "utilization_percentage": 0,
            "available_ips": 254,
            "assigned_ips": 0,
            "free_ips": 254
        },
        "created_at": "2026-07-10 09:51:35",
        "updated_at": "2026-07-10 09:51:35"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ipam/subnets

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

pool   string     

The pool of the subnet. Must be a valid IP address. Example: 192.168.56.100

mask   integer     

The mask of the subnet (Integer between 1-32 for ipv4 or 1-128 for ipv6). Must be between 0 and 128. Example: 32

type   string     

The type of the subnet. Example: ipv4

Must be one of:
  • ipv4
  • ipv6
description   string  optional    

The description of the subnet. Example: This is the description

status   string  optional    

The status of the subnet. Example: available

Must be one of:
  • available
  • active
  • disabled
  • reserved
is_master_pool   integer  optional    

Leave empty if it is not a master pool. Must be between 0 and 1. Example: 1

parent_id   integer  optional    

The parent ID for which subnet should be created. Example: 1

vlan_id   integer  optional    

The VLAN ID that should be assigned to the subnet. Example: 2

tenant_type   string  optional    

The tenant type of the tenant ids. Example: Modules\Addons\IPManager\Model\IpamDevice

Must be one of:
  • Modules\Addons\IPManager\Model\IpamDevice
  • Modules\Addons\IPManager\Model\IpamUser
tenant_ids   integer[]  optional    

The tenants that should be assigned to subnet. Tenant type must be provided for tenant ids to be assigned correctly.

assignment   string[]  optional    

Optionally restrict the subnet to specific infrastructure locations (e.g., location_{locationid}, floor{floorid}, rack{rack_id}). Leave this field empty to apply the subnet globally across all sites.

excluded_ranges   string[]  optional    

A single excluded IP, range, or CIDR.

Update Subnet

requires authentication

Updates subnet with the provided details and id.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/ipam/subnets/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"description\": \"This is the description\",
    \"status\": \"available\",
    \"is_master_pool\": 1,
    \"parent_id\": 1,
    \"vlan_id\": 2,
    \"tenant_type\": \"Modules\\\\Addons\\\\IPManager\\\\Model\\\\IpamDevice\",
    \"tenant_ids\": [
        1
    ],
    \"assignment\": [
        \"location_1\"
    ],
    \"excluded_ranges\": [
        \"192.168.1.10-192.168.1.20\"
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets/1'
payload = {
    "description": "This is the description",
    "status": "available",
    "is_master_pool": 1,
    "parent_id": 1,
    "vlan_id": 2,
    "tenant_type": "Modules\\Addons\\IPManager\\Model\\IpamDevice",
    "tenant_ids": [
        1
    ],
    "assignment": [
        "location_1"
    ],
    "excluded_ranges": [
        "192.168.1.10-192.168.1.20"
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'description' => 'This is the description',
            'status' => 'available',
            'is_master_pool' => 1,
            'parent_id' => 1,
            'vlan_id' => 2,
            'tenant_type' => 'Modules\\Addons\\IPManager\\Model\\IpamDevice',
            'tenant_ids' => [
                1,
            ],
            'assignment' => [
                'location_1',
            ],
            'excluded_ranges' => [
                '192.168.1.10-192.168.1.20',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 130,
        "pool": "172.196.51.0",
        "mask": 24,
        "type": "ipv4",
        "status": "available",
        "ns1": null,
        "ns2": null,
        "gateway": null,
        "is_master_pool": 0,
        "description": "Enim eaque inventore suscipit est commodi.",
        "assignment": false,
        "excluded_ranges": [],
        "tenants": [],
        "children": [],
        "parent": null,
        "vlan": null,
        "ip_addresses": {
            "assigned_ips": [],
            "available_ranges": [
                {
                    "start": "172.196.51.1",
                    "end": "172.196.51.254"
                }
            ]
        },
        "addressing": {
            "network_address": "172.196.51.0",
            "network_mask": "255.255.255.0",
            "wildcard_mask": "0.0.0.255",
            "broadcast_address": "172.196.51.255",
            "first_available_ip": "172.196.51.1",
            "utilization_percentage": 0,
            "available_ips": 254,
            "assigned_ips": 0,
            "free_ips": 254
        },
        "created_at": "2026-07-10 09:51:35",
        "updated_at": "2026-07-10 09:51:35"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/ipam/subnets/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the subnet. Example: 1

Body Parameters

description   string  optional    

The description of the subnet. Example: This is the description

status   string  optional    

The status of the subnet. Example: available

Must be one of:
  • available
  • active
  • disabled
  • reserved
is_master_pool   integer  optional    

Leave empty if it is not a master pool. Must be between 0 and 1. Example: 1

parent_id   integer  optional    

The parent ID for which subnet should be created. Example: 1

vlan_id   integer  optional    

The VLAN ID that should be assigned to the subnet. Example: 2

tenant_type   string  optional    

The tenant type of the tenant ids. Example: Modules\Addons\IPManager\Model\IpamDevice

Must be one of:
  • Modules\Addons\IPManager\Model\IpamDevice
  • Modules\Addons\IPManager\Model\IpamUser
tenant_ids   integer[]  optional    

The tenants that should be assigned to subnet. Tenant type must be provided for tenant ids to be assigned correctly.

assignment   string[]  optional    

Optionally restrict the subnet to specific infrastructure locations (e.g., location_{locationid}, floor{floorid}, rack{rack_id}). Leave this field empty to apply the subnet globally across all sites.

excluded_ranges   string[]  optional    

A single excluded IP, range, or CIDR.

Split Subnet

requires authentication

Splits subnet with given id.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ipam/subnets/1/split" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"selected_mask\": 32
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets/1/split'
payload = {
    "selected_mask": 32
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets/1/split';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'selected_mask' => 32,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 131,
        "pool": "80.155.126.0",
        "mask": 24,
        "type": "ipv4",
        "status": "available",
        "ns1": null,
        "ns2": null,
        "gateway": null,
        "is_master_pool": 0,
        "description": "Et voluptatem culpa praesentium itaque quidem.",
        "assignment": false,
        "excluded_ranges": [],
        "tenants": [],
        "children": [],
        "parent": null,
        "vlan": null,
        "ip_addresses": {
            "assigned_ips": [],
            "available_ranges": [
                {
                    "start": "80.155.126.1",
                    "end": "80.155.126.254"
                }
            ]
        },
        "addressing": {
            "network_address": "80.155.126.0",
            "network_mask": "255.255.255.0",
            "wildcard_mask": "0.0.0.255",
            "broadcast_address": "80.155.126.255",
            "first_available_ip": "80.155.126.1",
            "utilization_percentage": 0,
            "available_ips": 254,
            "assigned_ips": 0,
            "free_ips": 254
        },
        "created_at": "2026-07-10 09:51:35",
        "updated_at": "2026-07-10 09:51:35"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ipam/subnets/{id}/split

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the subnet. Example: 1

Body Parameters

selected_mask   integer     

The mask of the subnets created after split greater than parent subnet (Integer between 1-32 for ipv4 or 1-128 for ipv6). Must be between 0 and 128. Example: 32

Delete Subnet

requires authentication

Deletes subnet with given id

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/ipam/subnets/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/subnets/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/ipam/subnets/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the subnet. Example: 1

List User Subnets

requires authentication

Returns a paginated list of subnets for user

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipam/user/1/subnets?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=mask" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/user/1/subnets'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'mask',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/user/1/subnets';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'mask',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 132,
            "pool": "142.162.159.0",
            "mask": 24,
            "type": "ipv4",
            "status": "available",
            "ns1": null,
            "ns2": null,
            "gateway": null,
            "is_master_pool": 0,
            "description": "Eum eum sint aut sunt.",
            "assignment": false,
            "tenants": [],
            "children": [],
            "parent": null,
            "vlan": null,
            "created_at": "2026-07-10 09:51:35",
            "updated_at": "2026-07-10 09:51:35"
        },
        {
            "id": 133,
            "pool": "82.162.134.0",
            "mask": 24,
            "type": "ipv4",
            "status": "available",
            "ns1": null,
            "ns2": null,
            "gateway": null,
            "is_master_pool": 0,
            "description": "Repellat tempore delectus et aut porro facere facere.",
            "assignment": false,
            "tenants": [],
            "children": [],
            "parent": null,
            "vlan": null,
            "created_at": "2026-07-10 09:51:35",
            "updated_at": "2026-07-10 09:51:35"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/user/{id}/subnets?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/ipam/user/{id}/subnets",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipam/user/{id}/subnets

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the user. Example: 1

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, pool, mask, description, type, status, parent_id, vlan_id. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: mask, description, type, status, parent_id, vlan_id. Example: mask

List Device Subnets

requires authentication

Returns a paginated list of subnets for device

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipam/device/1/subnets?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=mask" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/device/1/subnets'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'mask',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/device/1/subnets';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'mask',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 134,
            "pool": "56.56.146.0",
            "mask": 24,
            "type": "ipv4",
            "status": "available",
            "ns1": null,
            "ns2": null,
            "gateway": null,
            "is_master_pool": 0,
            "description": "Architecto reiciendis doloremque fugiat.",
            "assignment": false,
            "tenants": [],
            "children": [],
            "parent": null,
            "vlan": null,
            "created_at": "2026-07-10 09:51:35",
            "updated_at": "2026-07-10 09:51:35"
        },
        {
            "id": 135,
            "pool": "89.124.72.0",
            "mask": 24,
            "type": "ipv4",
            "status": "available",
            "ns1": null,
            "ns2": null,
            "gateway": null,
            "is_master_pool": 0,
            "description": "Vero quis neque voluptas pariatur sit.",
            "assignment": false,
            "tenants": [],
            "children": [],
            "parent": null,
            "vlan": null,
            "created_at": "2026-07-10 09:51:35",
            "updated_at": "2026-07-10 09:51:35"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/device/{id}/subnets?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/ipam/device/{id}/subnets",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipam/device/{id}/subnets

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, pool, mask, description, type, status, parent_id, vlan_id. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: mask, description, type, status, parent_id, vlan_id. Example: mask

Assign Subnets to Device

requires authentication

Assigns Subnets to Device

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ipam/device/1/subnets/assign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"subnets\": [
        1
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/device/1/subnets/assign'
payload = {
    "subnets": [
        1
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/device/1/subnets/assign';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'subnets' => [
                1,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1123,
        "label": "voluptates",
        "model": "officiis",
        "product_id": 0,
        "model_id": 1619,
        "parent_id": 0,
        "type_id": 2069,
        "user_id": 5801,
        "order_id": 613,
        "location_id": 3223,
        "rack_id": 651,
        "blade_id": 0,
        "os_installation": 0,
        "colocation_id": 0,
        "provisioning_id": 0,
        "manufacturer": "Schimmel-Boyle",
        "description": "Nihil iste omnis ut rem labore.",
        "comments": null,
        "status": "available",
        "device_status": "running",
        "service_status": "activated",
        "function": null,
        "serialnumber1": "SN125ID",
        "serialnumber2": null,
        "service_tag": "ST557OM",
        "location": "Pagac-Ruecker",
        "metadata": [],
        "locked": 0,
        "last_discovered": "Never",
        "discovery_time": 0,
        "last_polled": "Never",
        "poller_disabled": 0,
        "poller_time": 0,
        "last_hour_traffic": 0,
        "last_day_traffic": 0,
        "last_week_traffic": 0,
        "last_month_traffic": 0,
        "current_month_traffic": 0,
        "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
        "device_traffic": null,
        "subnets": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ipam/device/{id}/subnets/assign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Body Parameters

subnets   integer[]  optional    

The array of subnets.

Unassign Subnets to Device

requires authentication

Unassigns Subnets to Device

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ipam/device/1/subnets/unassign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"subnets\": [
        1
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/device/1/subnets/unassign'
payload = {
    "subnets": [
        1
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/device/1/subnets/unassign';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'subnets' => [
                1,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1124,
        "label": "assumenda",
        "model": "maiores",
        "product_id": 0,
        "model_id": 1620,
        "parent_id": 0,
        "type_id": 2071,
        "user_id": 5808,
        "order_id": 614,
        "location_id": 3227,
        "rack_id": 652,
        "blade_id": 0,
        "os_installation": 0,
        "colocation_id": 0,
        "provisioning_id": 0,
        "manufacturer": "Swift Inc",
        "description": "Voluptatem explicabo nam quae voluptate.",
        "comments": null,
        "status": "available",
        "device_status": "running",
        "service_status": "activated",
        "function": null,
        "serialnumber1": "SN702GV",
        "serialnumber2": null,
        "service_tag": "ST054CK",
        "location": "Murray, Smitham and Beer",
        "metadata": [],
        "locked": 0,
        "last_discovered": "Never",
        "discovery_time": 0,
        "last_polled": "Never",
        "poller_disabled": 0,
        "poller_time": 0,
        "last_hour_traffic": 0,
        "last_day_traffic": 0,
        "last_week_traffic": 0,
        "last_month_traffic": 0,
        "current_month_traffic": 0,
        "labeledRackWithPosition": "<span class=\"edc-badge edc-badge-muted\">Unassigned</span>",
        "device_traffic": null,
        "subnets": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ipam/device/{id}/subnets/unassign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Body Parameters

subnets   integer[]  optional    

The array of subnets.

List of IP addresses

requires authentication

This endpoint returns a paginated collection of IP addresses

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipam/ips?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=value" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/ips'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'value',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/ips';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'value',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 265,
            "item_id": 38,
            "device_label": "#38 web-prod-01 (PowerEdge R640)",
            "value": "200.94.209.231",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4",
            "subnet": {
                "id": 12,
                "pool": "200.94.209.0",
                "mask": 24,
                "cidr": "200.94.209.0/24"
            },
            "vlan": {
                "id": 7,
                "name": "Production",
                "vlan_id": 100
            }
        },
        {
            "id": 307,
            "item_id": 44,
            "value": "146.224.170.224",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 314,
            "item_id": 45,
            "value": "139.235.236.138",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 328,
            "item_id": 47,
            "value": "207.243.68.21",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 335,
            "item_id": 48,
            "value": "46.236.68.242",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 342,
            "item_id": 49,
            "value": "166.73.24.58",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 356,
            "item_id": 51,
            "value": "160.24.83.37",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 363,
            "item_id": 52,
            "value": "80.24.122.22",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 370,
            "item_id": 53,
            "value": "174.251.45.79",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 377,
            "item_id": 54,
            "value": "155.150.252.1",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        }
    ],
    "links": {
        "first": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=1",
        "last": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=16",
        "prev": null,
        "next": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 16,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=2",
                "label": "2",
                "page": 2,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=3",
                "label": "3",
                "page": 3,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=4",
                "label": "4",
                "page": 4,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=5",
                "label": "5",
                "page": 5,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=6",
                "label": "6",
                "page": 6,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=7",
                "label": "7",
                "page": 7,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=8",
                "label": "8",
                "page": 8,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=9",
                "label": "9",
                "page": 9,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=10",
                "label": "10",
                "page": 10,
                "active": false
            },
            {
                "url": null,
                "label": "...",
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=15",
                "label": "15",
                "page": 15,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=16",
                "label": "16",
                "page": 16,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=2",
                "label": "Next &raquo;",
                "page": 2,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/ipam/ips",
        "per_page": 10,
        "to": 10,
        "total": 151,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipam/ips

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, item_id, value, description, type, ip_type. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: value, description, type, ip_type. Example: value

Update IP address description

requires authentication

Updates the description of an IP address entity

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/ipam/ips/456" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"description\": \"Primary IP for web server\",
    \"ip_address\": \"192.168.56.1\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/ips/456'
payload = {
    "description": "Primary IP for web server",
    "ip_address": "192.168.56.1"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/ips/456';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'description' => 'Primary IP for web server',
            'ip_address' => '192.168.56.1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/ipam/ips/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the IP address entity. Example: 456

Body Parameters

description   string  optional    

Description or label for the IP address. Example: Primary IP for web server

ip_address   string     

IP Address for which description will be updated. Example: 192.168.56.1

List of VLANs

requires authentication

This endpoint returns a paginated collection of VLANs

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipam/vlans?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=vlan_vlan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/vlans'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'vlan_vlan',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/vlans';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'vlan_vlan',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 63,
            "device_id": null,
            "vlan_vlan": 90,
            "vlan_name": "dolore cupiditate",
            "description": "Quos distinctio inventore fugiat at rerum beatae alias velit.",
            "vlan_type": "standard",
            "vlan_status": "reserved",
            "device": null
        },
        {
            "id": 64,
            "device_id": null,
            "vlan_vlan": 410,
            "vlan_name": "aut aperiam",
            "description": "Eos suscipit voluptatibus inventore.",
            "vlan_type": "standard",
            "vlan_status": "active",
            "device": null
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/vlans?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/ipam/vlans",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipam/vlans

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, vlan_vlan, vlan_name, vlan_type, vlan_status, description, device_id. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: vlan_vlan, vlan_name, vlan_type, vlan_status, description, device_id. Example: vlan_vlan

Show VLAN

requires authentication

Returns detailed information about a specific VLAN.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/ipam/vlans/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/vlans/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/vlans/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 65,
        "device_id": null,
        "vlan_vlan": 4046,
        "vlan_name": "architecto similique",
        "description": "Saepe optio dolores ut qui repellendus mollitia.",
        "vlan_type": "standard",
        "vlan_status": "reserved",
        "device": null,
        "ports": []
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/ipam/vlans/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the vlan. Example: 1

Create VLAN

requires authentication

Creates a new vlan with the provided details.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/ipam/vlans" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"device_id\": 1,
    \"vlan_vlan\": 1001,
    \"vlan_name\": \"VLAN 1001\",
    \"vlan_type\": \"standard\",
    \"status\": \"active\",
    \"description\": \"This is the description of the vlan.\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/vlans'
payload = {
    "device_id": 1,
    "vlan_vlan": 1001,
    "vlan_name": "VLAN 1001",
    "vlan_type": "standard",
    "status": "active",
    "description": "This is the description of the vlan."
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/vlans';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'device_id' => 1,
            'vlan_vlan' => 1001,
            'vlan_name' => 'VLAN 1001',
            'vlan_type' => 'standard',
            'status' => 'active',
            'description' => 'This is the description of the vlan.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 66,
        "device_id": null,
        "vlan_vlan": 3120,
        "vlan_name": "quis qui",
        "description": "Commodi necessitatibus sit rerum repellendus temporibus.",
        "vlan_type": "standard",
        "vlan_status": "reserved",
        "device": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/ipam/vlans

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

device_id   integer     

Device Id for which vlan should be created. Example: 1

vlan_vlan   integer     

The id of the vlan. Example: 1001

vlan_name   string     

The name of the vlan. Example: VLAN 1001

vlan_type   string  optional    

The type of the vlan. Example: standard

Must be one of:
  • standard
  • provisioning
status   string  optional    

The status of the vlan. Example: active

Must be one of:
  • active
  • reserved
  • depreciated
description   string  optional    

The description of the vlan. Example: This is the description of the vlan.

Update VLAN

requires authentication

Updates vlan with the provided details and id.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/ipam/vlans/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"vlan_type\": \"standard\",
    \"status\": \"active\",
    \"description\": \"This is the description of the vlan.\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/vlans/1'
payload = {
    "vlan_type": "standard",
    "status": "active",
    "description": "This is the description of the vlan."
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/vlans/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'vlan_type' => 'standard',
            'status' => 'active',
            'description' => 'This is the description of the vlan.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 67,
        "device_id": null,
        "vlan_vlan": 3224,
        "vlan_name": "aut ut",
        "description": "Adipisci odit iusto unde.",
        "vlan_type": "provisioning",
        "vlan_status": "depreciated",
        "device": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/ipam/vlans/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the vlan. Example: 1

Body Parameters

vlan_type   string  optional    

The type of the vlan. Example: standard

Must be one of:
  • standard
  • provisioning
status   string  optional    

The status of the vlan. Example: active

Must be one of:
  • active
  • reserved
  • depreciated
description   string  optional    

The description of the vlan. Example: This is the description of the vlan.

Delete VLAN

requires authentication

Deletes vlan with given id

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/ipam/vlans/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/ipam/vlans/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/ipam/vlans/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/ipam/vlans/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the vlan. Example: 1

DNS Management

List rDNS records

requires authentication

This endpoint returns a paginated list of reverse DNS (rDNS) entries

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/dns-manager/rdns?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/rdns'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/rdns';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 63,
            "device_id": 1127,
            "user_id": 5837,
            "server_id": 93,
            "ip": "194.228.249.136",
            "from": "corkery.info",
            "name": "schuster.com",
            "ttl": "3600",
            "created_at": "2026-07-10 09:51:38",
            "updated_at": "2026-07-10 09:51:38"
        },
        {
            "id": 64,
            "device_id": 1128,
            "user_id": 5845,
            "server_id": 94,
            "ip": "78.175.249.80",
            "from": "robel.net",
            "name": "hudson.com",
            "ttl": "3600",
            "created_at": "2026-07-10 09:51:38",
            "updated_at": "2026-07-10 09:51:38"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/dns-manager/rdns?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/dns-manager/rdns",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/dns-manager/rdns

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, device_id, user_id, server_id, ip, from, name, ttl. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, device_id, user_id, server_id, ip, from, name. Example: id

Create rDNS record

requires authentication

Stores a new reverse DNS (rDNS) entry

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/dns-manager/rdns" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ip\": \"192.168.1.1\",
    \"rdata\": \"example.mydomain.com\",
    \"device_id\": 1,
    \"ttl\": 3600
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/rdns'
payload = {
    "ip": "192.168.1.1",
    "rdata": "example.mydomain.com",
    "device_id": 1,
    "ttl": 3600
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/rdns';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ip' => '192.168.1.1',
            'rdata' => 'example.mydomain.com',
            'device_id' => 1,
            'ttl' => 3600,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 65,
        "device_id": 1129,
        "user_id": 5853,
        "server_id": 95,
        "ip": "126.196.13.245",
        "from": "cremin.com",
        "name": "flatley.com",
        "ttl": "3600",
        "created_at": "2026-07-10 09:51:39",
        "updated_at": "2026-07-10 09:51:39"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/dns-manager/rdns

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

ip   string     

The IP address to associate with the reverse DNS record. Must be a valid IP address. Example: 192.168.1.1

rdata   string     

The domain name (PTR) that should resolve for the IP. Example: example.mydomain.com

device_id   integer     

The ID of the device this record is associated with. The id of an existing record in the items table. Example: 1

ttl   integer  optional    

Optional TTL (Time To Live) value for the record in seconds. Must be at least 60. Example: 3600

Update rDNS record

requires authentication

Updates an existing reverse DNS (rDNS) record.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/dns-manager/rdns/456" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"rdata\": \"updated.example.net\",
    \"ttl\": 3600
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/rdns/456'
payload = {
    "rdata": "updated.example.net",
    "ttl": 3600
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/rdns/456';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'rdata' => 'updated.example.net',
            'ttl' => 3600,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 66,
        "device_id": 1130,
        "user_id": 5861,
        "server_id": 96,
        "ip": "62.48.36.209",
        "from": "cassin.org",
        "name": "johnston.com",
        "ttl": "3600",
        "created_at": "2026-07-10 09:51:39",
        "updated_at": "2026-07-10 09:51:39"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/dns-manager/rdns/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the rDNS record. Example: 456

Body Parameters

rdata   string     

The domain name (PTR) to update for this record. Example: updated.example.net

ttl   integer  optional    

Optional TTL (Time To Live) value in seconds. Must be at least 60. Example: 3600

Delete rDNS record

requires authentication

Deletes a reverse DNS (rDNS) record.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/dns-manager/rdns/456" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/rdns/456'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/rdns/456';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/dns-manager/rdns/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the rDNS record. Example: 456

List Zones

requires authentication

This endpoint returns a paginated list of zones

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/dns-manager/zones?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 31,
            "device_id": 1131,
            "server_id": 97,
            "ip": "7.19.139.67",
            "name": "hirthe.net",
            "created_at": "2026-07-10 09:51:40",
            "updated_at": "2026-07-10 09:51:40"
        },
        {
            "id": 32,
            "device_id": 1132,
            "server_id": 98,
            "ip": "135.228.1.46",
            "name": "lesch.info",
            "created_at": "2026-07-10 09:51:40",
            "updated_at": "2026-07-10 09:51:40"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/dns-manager/zones?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/dns-manager/zones",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/dns-manager/zones

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, device_id, server_id, ip, name. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, device_id, server_id, ip, name. Example: id

Create Zone

requires authentication

Stores a new zone

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/dns-manager/zones" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ip\": \"192.168.1.1\",
    \"name\": \"example.mydomain.com\",
    \"device_id\": 1,
    \"server_id\": 1
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones'
payload = {
    "ip": "192.168.1.1",
    "name": "example.mydomain.com",
    "device_id": 1,
    "server_id": 1
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ip' => '192.168.1.1',
            'name' => 'example.mydomain.com',
            'device_id' => 1,
            'server_id' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 33,
        "device_id": 1133,
        "server_id": 99,
        "ip": "50.78.96.71",
        "name": "barrows.com",
        "created_at": "2026-07-10 09:51:40",
        "updated_at": "2026-07-10 09:51:40"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/dns-manager/zones

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

ip   string     

The IP address of the zone. Must be a valid IP address. Example: 192.168.1.1

name   string     

Domain name of the zone. Must match the regex /^(?!:\/\/)([a-zA-Z0-9-_]+.)+[a-zA-Z]{2,}$/i. Example: example.mydomain.com

device_id   integer     

The ID of the device this record is associated with. Example: 1

server_id   integer     

The server id of connection used for creating zone. Example: 1

Delete Zone

requires authentication

Deletes a zone record.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/dns-manager/zones/13" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones/13'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones/13';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/dns-manager/zones/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the zone. Example: 13

Get Zone Records

requires authentication

This endpoint returns a zone records with zone information for given id

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/dns-manager/zones/11/records" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones/11/records'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones/11/records';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1,
        "device_id": 38,
        "server_id": 3,
        "ip": null,
        "name": "1.168.192.in-addr.arpa",
        "records": [
            {
                "line": "4",
                "name": "1.168.192.in-addr.arpa.",
                "type": "SOA",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "mname": "ns1.55-33-166-35.cprapid.com",
                    "rname": "test.com",
                    "serial": "2025090900",
                    "refresh": "3600",
                    "retry": "1800",
                    "expire": "1209600",
                    "minimum": "86400"
                }
            },
            {
                "line": "10",
                "name": "1.168.192.in-addr.arpa.",
                "type": "NS",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "nsdname": "ns1.55-33-166-35.cprapid.com"
                }
            },
            {
                "line": "11",
                "name": "1.168.192.in-addr.arpa.",
                "type": "NS",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "nsdname": "ns2.55-33-166-35.cprapid.com"
                }
            },
            {
                "line": "12",
                "name": "1.168.192.in-addr.arpa.",
                "type": "A",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "address": "55.33.166.35"
                }
            },
            {
                "line": "13",
                "name": "1.168.192.in-addr.arpa.",
                "type": "MX",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "preference": "0",
                    "exchange": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "14",
                "name": "mail.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "15",
                "name": "www.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "16",
                "name": "ftp.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "17",
                "name": "0.1.168.192.in-addr.arpa.",
                "type": "PTR",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "ptrdname": "test.com"
                }
            },
            {
                "line": "18",
                "name": "test.1.168.192.in-addr.arpa.",
                "type": "A",
                "class": "IN",
                "ttl": "3600",
                "rdlength": null,
                "rdata": {
                    "address": "10.10.10.1"
                }
            }
        ],
        "created_at": "2025-02-28 13:32:26",
        "updated_at": "2025-02-28 13:32:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/dns-manager/zones/{id}/records

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the zone. Example: 11

Add Zone Record

requires authentication

This endpoint allow to create zone record.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/dns-manager/zones/11/records/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"www\",
    \"type\": \"A\",
    \"ttl\": 3600,
    \"fields\": {
        \"A\": {
            \"address\": \"192.0.2.1\"
        },
        \"AAAA\": {
            \"address\": \"2001:db8::1\"
        },
        \"AFSDB\": {
            \"subtype\": 1,
            \"hostname\": \"host.example.com\"
        },
        \"CNAME\": {
            \"cname\": \"example.com\"
        },
        \"DEF\": {
            \"value\": \"Some value\"
        },
        \"DNAME\": {
            \"target\": \"example.com\"
        },
        \"DS\": {
            \"keytag\": 12345,
            \"algorithm\": 8,
            \"digesttype\": 1,
            \"digest\": \"49FD46E6C4B45C55D4AC\"
        },
        \"HINFO\": {
            \"cpu\": \"Intel\",
            \"os\": \"Linux\"
        },
        \"ISDN\": {
            \"isdnaddress\": \"+1-555-1234567\",
            \"sa\": \"123\"
        },
        \"LOC\": {
            \"version\": 0,
            \"size\": 1,
            \"horiz_pre\": 100,
            \"vert_pre\": 10,
            \"latitude\": \"52 22 23.0 N\",
            \"longitude\": \"4 53 32.0 E\",
            \"altitude\": 5
        },
        \"MB\": {
            \"madname\": \"mail.example.com\"
        },
        \"MD\": {
            \"madname\": \"mail.example.com\"
        },
        \"MF\": {
            \"madname\": \"forwarder.example.com\"
        },
        \"MG\": {
            \"mgmname\": \"member.example.com\"
        },
        \"MINFO\": {
            \"rmailbx\": \"responsible.example.com\",
            \"emailbx\": \"[email protected]\"
        },
        \"MR\": {
            \"newname\": \"newmail.example.com\"
        },
        \"MX\": {
            \"preference\": 10,
            \"exchange\": \"mail.example.com\"
        },
        \"NAPTR\": {
            \"order\": 100,
            \"preference\": 10,
            \"flags\": \"U\",
            \"services\": \"E2U+sip\",
            \"regexp\": \"!^.*$!sip:[email protected]!\",
            \"replacement\": \"example.com\"
        },
        \"NS\": {
            \"nsdname\": \"ns1.example.com\"
        },
        \"PTR\": {
            \"ptrdname\": \"host.example.com\"
        },
        \"RP\": {
            \"mbox\": \"admin.example.com\",
            \"txtdname\": \"info.example.com\"
        },
        \"SOA\": {
            \"mname\": \"ns1.example.com\",
            \"rname\": \"admin.example.com\",
            \"serial\": 2025090901,
            \"refresh\": 3600,
            \"retry\": 1800,
            \"expire\": 604800,
            \"minimum\": 86400
        },
        \"SPF\": {
            \"txtdata\": \"\\\"v=spf1 include:example.com ~all\\\"\"
        },
        \"SRV\": {
            \"priority\": 10,
            \"weight\": 5,
            \"port\": 5060,
            \"target\": \"sip.example.com\"
        },
        \"TXT\": {
            \"txtdata\": \"\\\"v=spf1 include:example.com ~all\\\"\"
        },
        \"WKS\": {
            \"address\": \"192.0.2.1\",
            \"protocol\": 6,
            \"bitmap\": \"0101010100000000\"
        },
        \"X25\": {
            \"psdnaddress\": \"1234567890\"
        }
    }
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones/11/records/create'
payload = {
    "name": "www",
    "type": "A",
    "ttl": 3600,
    "fields": {
        "A": {
            "address": "192.0.2.1"
        },
        "AAAA": {
            "address": "2001:db8::1"
        },
        "AFSDB": {
            "subtype": 1,
            "hostname": "host.example.com"
        },
        "CNAME": {
            "cname": "example.com"
        },
        "DEF": {
            "value": "Some value"
        },
        "DNAME": {
            "target": "example.com"
        },
        "DS": {
            "keytag": 12345,
            "algorithm": 8,
            "digesttype": 1,
            "digest": "49FD46E6C4B45C55D4AC"
        },
        "HINFO": {
            "cpu": "Intel",
            "os": "Linux"
        },
        "ISDN": {
            "isdnaddress": "+1-555-1234567",
            "sa": "123"
        },
        "LOC": {
            "version": 0,
            "size": 1,
            "horiz_pre": 100,
            "vert_pre": 10,
            "latitude": "52 22 23.0 N",
            "longitude": "4 53 32.0 E",
            "altitude": 5
        },
        "MB": {
            "madname": "mail.example.com"
        },
        "MD": {
            "madname": "mail.example.com"
        },
        "MF": {
            "madname": "forwarder.example.com"
        },
        "MG": {
            "mgmname": "member.example.com"
        },
        "MINFO": {
            "rmailbx": "responsible.example.com",
            "emailbx": "[email protected]"
        },
        "MR": {
            "newname": "newmail.example.com"
        },
        "MX": {
            "preference": 10,
            "exchange": "mail.example.com"
        },
        "NAPTR": {
            "order": 100,
            "preference": 10,
            "flags": "U",
            "services": "E2U+sip",
            "regexp": "!^.*$!sip:[email protected]!",
            "replacement": "example.com"
        },
        "NS": {
            "nsdname": "ns1.example.com"
        },
        "PTR": {
            "ptrdname": "host.example.com"
        },
        "RP": {
            "mbox": "admin.example.com",
            "txtdname": "info.example.com"
        },
        "SOA": {
            "mname": "ns1.example.com",
            "rname": "admin.example.com",
            "serial": 2025090901,
            "refresh": 3600,
            "retry": 1800,
            "expire": 604800,
            "minimum": 86400
        },
        "SPF": {
            "txtdata": "\"v=spf1 include:example.com ~all\""
        },
        "SRV": {
            "priority": 10,
            "weight": 5,
            "port": 5060,
            "target": "sip.example.com"
        },
        "TXT": {
            "txtdata": "\"v=spf1 include:example.com ~all\""
        },
        "WKS": {
            "address": "192.0.2.1",
            "protocol": 6,
            "bitmap": "0101010100000000"
        },
        "X25": {
            "psdnaddress": "1234567890"
        }
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones/11/records/create';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'www',
            'type' => 'A',
            'ttl' => 3600,
            'fields' => [
                'A' => [
                    'address' => '192.0.2.1',
                ],
                'AAAA' => [
                    'address' => '2001:db8::1',
                ],
                'AFSDB' => [
                    'subtype' => 1,
                    'hostname' => 'host.example.com',
                ],
                'CNAME' => [
                    'cname' => 'example.com',
                ],
                'DEF' => [
                    'value' => 'Some value',
                ],
                'DNAME' => [
                    'target' => 'example.com',
                ],
                'DS' => [
                    'keytag' => 12345,
                    'algorithm' => 8,
                    'digesttype' => 1,
                    'digest' => '49FD46E6C4B45C55D4AC',
                ],
                'HINFO' => [
                    'cpu' => 'Intel',
                    'os' => 'Linux',
                ],
                'ISDN' => [
                    'isdnaddress' => '+1-555-1234567',
                    'sa' => '123',
                ],
                'LOC' => [
                    'version' => 0,
                    'size' => 1.0,
                    'horiz_pre' => 100.0,
                    'vert_pre' => 10.0,
                    'latitude' => '52 22 23.0 N',
                    'longitude' => '4 53 32.0 E',
                    'altitude' => 5.0,
                ],
                'MB' => [
                    'madname' => 'mail.example.com',
                ],
                'MD' => [
                    'madname' => 'mail.example.com',
                ],
                'MF' => [
                    'madname' => 'forwarder.example.com',
                ],
                'MG' => [
                    'mgmname' => 'member.example.com',
                ],
                'MINFO' => [
                    'rmailbx' => 'responsible.example.com',
                    'emailbx' => '[email protected]',
                ],
                'MR' => [
                    'newname' => 'newmail.example.com',
                ],
                'MX' => [
                    'preference' => 10,
                    'exchange' => 'mail.example.com',
                ],
                'NAPTR' => [
                    'order' => 100,
                    'preference' => 10,
                    'flags' => 'U',
                    'services' => 'E2U+sip',
                    'regexp' => '!^.*$!sip:[email protected]!',
                    'replacement' => 'example.com',
                ],
                'NS' => [
                    'nsdname' => 'ns1.example.com',
                ],
                'PTR' => [
                    'ptrdname' => 'host.example.com',
                ],
                'RP' => [
                    'mbox' => 'admin.example.com',
                    'txtdname' => 'info.example.com',
                ],
                'SOA' => [
                    'mname' => 'ns1.example.com',
                    'rname' => 'admin.example.com',
                    'serial' => 2025090901,
                    'refresh' => 3600,
                    'retry' => 1800,
                    'expire' => 604800,
                    'minimum' => 86400,
                ],
                'SPF' => [
                    'txtdata' => '"v=spf1 include:example.com ~all"',
                ],
                'SRV' => [
                    'priority' => 10,
                    'weight' => 5,
                    'port' => 5060,
                    'target' => 'sip.example.com',
                ],
                'TXT' => [
                    'txtdata' => '"v=spf1 include:example.com ~all"',
                ],
                'WKS' => [
                    'address' => '192.0.2.1',
                    'protocol' => 6,
                    'bitmap' => '0101010100000000',
                ],
                'X25' => [
                    'psdnaddress' => '1234567890',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1,
        "device_id": 38,
        "server_id": 3,
        "ip": null,
        "name": "1.168.192.in-addr.arpa",
        "records": [
            {
                "line": "4",
                "name": "1.168.192.in-addr.arpa.",
                "type": "SOA",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "mname": "ns1.55-33-166-35.cprapid.com",
                    "rname": "test.com",
                    "serial": "2025090900",
                    "refresh": "3600",
                    "retry": "1800",
                    "expire": "1209600",
                    "minimum": "86400"
                }
            },
            {
                "line": "10",
                "name": "1.168.192.in-addr.arpa.",
                "type": "NS",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "nsdname": "ns1.55-33-166-35.cprapid.com"
                }
            },
            {
                "line": "11",
                "name": "1.168.192.in-addr.arpa.",
                "type": "NS",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "nsdname": "ns2.55-33-166-35.cprapid.com"
                }
            },
            {
                "line": "12",
                "name": "1.168.192.in-addr.arpa.",
                "type": "A",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "address": "55.33.166.35"
                }
            },
            {
                "line": "13",
                "name": "1.168.192.in-addr.arpa.",
                "type": "MX",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "preference": "0",
                    "exchange": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "14",
                "name": "mail.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "15",
                "name": "www.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "16",
                "name": "ftp.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "17",
                "name": "0.1.168.192.in-addr.arpa.",
                "type": "PTR",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "ptrdname": "test.com"
                }
            },
            {
                "line": "18",
                "name": "test.1.168.192.in-addr.arpa.",
                "type": "A",
                "class": "IN",
                "ttl": "3600",
                "rdlength": null,
                "rdata": {
                    "address": "10.10.10.1"
                }
            }
        ],
        "created_at": "2025-02-28 13:32:26",
        "updated_at": "2025-02-28 13:32:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/dns-manager/zones/{id}/records/create

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the zone. Example: 11

Body Parameters

name   string     

The hostname or record name. Example: www

type   string     

DNS record type. Example: A

Must be one of:
  • A
  • AAAA
  • AFSDB
  • CNAME
  • DEF
  • DNAME
  • DS
  • HINFO
  • ISDN
  • LOC
  • MB
  • MD
  • MF
  • MG
  • MINFO
  • MR
  • MX
  • NAPTR
  • NS
  • PTR
  • RP
  • SOA
  • SPF
  • SRV
  • TXT
  • WKS
  • X25
ttl   integer  optional    

Time-to-live in seconds (minimum 60). Must be at least 60. Example: 3600

fields   object     

Required object for provided type. Object type one from (A, AAAA, AFSDB, CNAME, DEF, DNAME, DS, HINFO, ISDN, LOC, MB, MD, MF, MG, MINFO, MR, MX, NAPTR, NS, PTR, RP, SOA, SPF, SRV, TXT, WKS, X25).

A   object  optional    
address   string  optional    

A 32-bit IPv4 address (required if type=A). This field is required when type is A. Example: 192.0.2.1

AAAA   object  optional    
address   string  optional    

A 128-bit IPv6 address (required if type=AAAA). This field is required when type is AAAA. Example: 2001:db8::1

AFSDB   object  optional    
subtype   string  optional    

AFSDB subtype, either 1 (DFS) or 2 (DCE). This field is required when type is AFSDB. Example: 1

Must be one of:
  • 1
  • 2
hostname   string  optional    

Hostname associated with the AFSDB record. This field is required when type is AFSDB. Example: host.example.com

CNAME   object  optional    
cname   string  optional    

Canonical domain name for the alias. The owner name is the alias. This field is required when type is CNAME. Example: example.com

DEF   object  optional    
value   string  optional    

The value for the DEF record. This field is required when type is DEF. Example: Some value

DNAME   object  optional    
target   string  optional    

Target domain name to which the owner domain is aliased. This field is required when type is DNAME. Example: example.com

DS   object  optional    
keytag   integer  optional    

Key tag of the DNSKEY record this DS record refers to. This field is required when type is DS. Example: 12345

algorithm   integer  optional    

Algorithm number used by the DNSKEY. This field is required when type is DS. Example: 8

digesttype   integer  optional    

Digest type used to create the digest. This field is required when type is DS. Example: 1

digest   string  optional    

Digest of the referenced DNSKEY record. This field is required when type is DS. Example: 49FD46E6C4B45C55D4AC

HINFO   object  optional    
cpu   string  optional    

CPU type of the host machine. This field is required when type is HINFO. Example: Intel

os   string  optional    

Operating system type of the host machine. This field is required when type is HINFO. Example: Linux

ISDN   object  optional    
isdnaddress   string  optional    

ISDN address for the record (e.g., telephone number). This field is required when type is ISDN. Example: +1-555-1234567

sa   string  optional    

Subaddress associated with the ISDN address (optional). Example: 123

LOC   object  optional    
version   integer  optional    

LOC record version (optional, usually 0). Example: 0

size   number  optional    

Diameter of the sphere representing the location (optional). Example: 1

horiz_pre   number  optional    

Horizontal precision in meters (optional). Example: 100

vert_pre   number  optional    

Vertical precision in meters (optional). Example: 10

latitude   string  optional    

Latitude of the location (required if type=LOC). This field is required when type is LOC. Example: 52 22 23.0 N

longitude   string  optional    

Longitude of the location (required if type=LOC). This field is required when type is LOC. Example: 4 53 32.0 E

altitude   number  optional    

Altitude of the location in meters (optional). Example: 5

MB   object  optional    
madname   string  optional    

Domain name of the host which has the specified mailbox. This field is required when type is MB. Example: mail.example.com

MD   object  optional    
madname   string  optional    

Domain name of the host which has a mail agent for the domain. This field is required when type is MD. Example: mail.example.com

MF   object  optional    
madname   string  optional    

Domain name of the host which has a mail agent for forwarding mail to the domain. This field is required when type is MF. Example: forwarder.example.com

MG   object  optional    
mgmname   string  optional    

Domain name of the mailbox which is a member of the mail group. This field is required when type is MG. Example: member.example.com

MINFO   object  optional    
rmailbx   string  optional    

Mailbox responsible for the mailing list or mailbox. This field is required when type is MINFO. Example: responsible.example.com

emailbx   string  optional    

Mailbox to receive error messages related to the mailing list or mailbox. This field is required when type is MINFO. Example: [email protected]

MR   object  optional    
newname   string  optional    

Mailbox which is the proper rename of the specified mailbox. This field is required when type is MR. Example: newmail.example.com

MX   object  optional    
preference   integer  optional    

Preference value for the mail exchange; lower values are preferred. This field is required when type is MX. Must be at least 0. Must not be greater than 65535. Example: 10

exchange   string  optional    

Domain name of the host willing to act as a mail exchange for the owner. This field is required when type is MX. Example: mail.example.com

NAPTR   object  optional    
order   integer  optional    

Order in which the NAPTR record is processed. This field is required when type is NAPTR. Must be at least 0. Example: 100

preference   integer  optional    

Preference for records with the same order; lower values are preferred. This field is required when type is NAPTR. Must be at least 0. Example: 10

flags   string  optional    

Flags controlling the rewriting and interpretation of the record. This field is required when type is NAPTR. Example: U

services   string  optional    

Services available via this NAPTR record (e.g., E2U+sip). This field is required when type is NAPTR. Example: E2U+sip

regexp   string  optional    

Regular expression used to rewrite the original string (optional). Example: !^.*$!sip:[email protected]!

replacement   string  optional    

Replacement domain name if the regexp is not used. This field is required when type is NAPTR. Example: example.com

NS   object  optional    
nsdname   string  optional    

Domain name of the host which should be authoritative for the domain. This field is required when type is NS. Example: ns1.example.com

PTR   object  optional    
ptrdname   string  optional    

Domain name that the PTR record points to in the DNS namespace. This field is required when type is PTR. Example: host.example.com

RP   object  optional    
mbox   string  optional    

Mailbox responsible for the domain or owner. This field is required when type is RP. Example: admin.example.com

txtdname   string  optional    

Domain name containing additional text information. This field is required when type is RP. Example: info.example.com

SOA   object  optional    
mname   string  optional    

Primary name server for the zone. This field is required when type is SOA. Example: ns1.example.com

rname   string  optional    

Mailbox of the person responsible for the zone. This field is required when type is SOA. Example: admin.example.com

serial   integer  optional    

Serial number of the zone; incremented on changes. This field is required when type is SOA. Must be at least 0. Example: 2025090901

refresh   integer  optional    

Time interval before the zone should be refreshed (seconds). This field is required when type is SOA. Must be at least 0. Example: 3600

retry   integer  optional    

Time interval before a failed refresh should be retried (seconds). This field is required when type is SOA. Must be at least 0. Example: 1800

expire   integer  optional    

Time interval before the zone is no longer authoritative (seconds). This field is required when type is SOA. Must be at least 0. Example: 604800

minimum   integer  optional    

Minimum TTL for records in this zone (seconds). This field is required when type is SOA. Must be at least 0. Example: 86400

SPF   object  optional    
txtdata   string  optional    

SPF record data specifying allowed sending hosts for the domain. This field is required when type is SPF. Example: "v=spf1 include:example.com ~all"

SRV   object  optional    
priority   integer  optional    

Priority of the target host; lower values are preferred. This field is required when type is SRV. Must be at least 0. Example: 10

weight   integer  optional    

Relative weight for records with the same priority. This field is required when type is SRV. Must be at least 0. Example: 5

port   integer  optional    

Port on which the service is running (0-65535). This field is required when type is SRV. Must be at least 0. Must not be greater than 65535. Example: 5060

target   string  optional    

Domain name of the target host providing the service. This field is required when type is SRV. Example: sip.example.com

TXT   object  optional    
txtdata   string  optional    

Text data for the TXT record; one or more character strings. This field is required when type is TXT. Example: "v=spf1 include:example.com ~all"

WKS   object  optional    
address   string  optional    

32-bit IPv4 address. This field is required when type is WKS. Example: 192.0.2.1

protocol   integer  optional    

8-bit IP protocol number. This field is required when type is WKS. Must be at least 0. Must not be greater than 255. Example: 6

bitmap   string  optional    

Variable length bitmap; must be a multiple of 8 bits. This field is required when type is WKS. Example: 0101010100000000

X25   object  optional    
psdnaddress   string  optional    

Public Switched Data Network (PSDN) address. This field is required when type is X25. Example: 1234567890

Delete Zone Record

requires authentication

This endpoint deletes zone record.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/dns-manager/zones/5/records/delete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"line\": 1,
    \"type\": \"A\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones/5/records/delete'
payload = {
    "line": 1,
    "type": "A"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones/5/records/delete';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'line' => 1,
            'type' => 'A',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1,
        "device_id": 38,
        "server_id": 3,
        "ip": null,
        "name": "1.168.192.in-addr.arpa",
        "records": [
            {
                "line": "4",
                "name": "1.168.192.in-addr.arpa.",
                "type": "SOA",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "mname": "ns1.55-33-166-35.cprapid.com",
                    "rname": "test.com",
                    "serial": "2025090900",
                    "refresh": "3600",
                    "retry": "1800",
                    "expire": "1209600",
                    "minimum": "86400"
                }
            },
            {
                "line": "10",
                "name": "1.168.192.in-addr.arpa.",
                "type": "NS",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "nsdname": "ns1.55-33-166-35.cprapid.com"
                }
            },
            {
                "line": "11",
                "name": "1.168.192.in-addr.arpa.",
                "type": "NS",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "nsdname": "ns2.55-33-166-35.cprapid.com"
                }
            },
            {
                "line": "12",
                "name": "1.168.192.in-addr.arpa.",
                "type": "A",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "address": "55.33.166.35"
                }
            },
            {
                "line": "13",
                "name": "1.168.192.in-addr.arpa.",
                "type": "MX",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "preference": "0",
                    "exchange": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "14",
                "name": "mail.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "15",
                "name": "www.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "16",
                "name": "ftp.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "17",
                "name": "0.1.168.192.in-addr.arpa.",
                "type": "PTR",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "ptrdname": "test.com"
                }
            },
            {
                "line": "18",
                "name": "test.1.168.192.in-addr.arpa.",
                "type": "A",
                "class": "IN",
                "ttl": "3600",
                "rdlength": null,
                "rdata": {
                    "address": "10.10.10.1"
                }
            }
        ],
        "created_at": "2025-02-28 13:32:26",
        "updated_at": "2025-02-28 13:32:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/dns-manager/zones/{id}/records/delete

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the zone. Example: 5

Body Parameters

line   integer     

The line id of zone record. Example: 1

type   string     

DNS record type. Example: A

Must be one of:
  • A
  • AAAA
  • AFSDB
  • CNAME
  • DEF
  • DNAME
  • DS
  • HINFO
  • ISDN
  • LOC
  • MB
  • MD
  • MF
  • MG
  • MINFO
  • MR
  • MX
  • NAPTR
  • NS
  • PTR
  • RP
  • SOA
  • SPF
  • SRV
  • TXT
  • WKS
  • X25

Update Zone Record

requires authentication

This endpoint allow to edit zone record.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/dns-manager/zones/11/records/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"line\": 1,
    \"name\": \"www\",
    \"type\": \"A\",
    \"ttl\": 3600,
    \"fields\": {
        \"A\": {
            \"address\": \"192.0.2.1\"
        },
        \"AAAA\": {
            \"address\": \"2001:db8::1\"
        },
        \"AFSDB\": {
            \"subtype\": 1,
            \"hostname\": \"host.example.com\"
        },
        \"CNAME\": {
            \"cname\": \"example.com\"
        },
        \"DEF\": {
            \"value\": \"Some value\"
        },
        \"DNAME\": {
            \"target\": \"example.com\"
        },
        \"DS\": {
            \"keytag\": 12345,
            \"algorithm\": 8,
            \"digesttype\": 1,
            \"digest\": \"49FD46E6C4B45C55D4AC\"
        },
        \"HINFO\": {
            \"cpu\": \"Intel\",
            \"os\": \"Linux\"
        },
        \"ISDN\": {
            \"isdnaddress\": \"+1-555-1234567\",
            \"sa\": \"123\"
        },
        \"LOC\": {
            \"version\": 0,
            \"size\": 1,
            \"horiz_pre\": 100,
            \"vert_pre\": 10,
            \"latitude\": \"52 22 23.0 N\",
            \"longitude\": \"4 53 32.0 E\",
            \"altitude\": 5
        },
        \"MB\": {
            \"madname\": \"mail.example.com\"
        },
        \"MD\": {
            \"madname\": \"mail.example.com\"
        },
        \"MF\": {
            \"madname\": \"forwarder.example.com\"
        },
        \"MG\": {
            \"mgmname\": \"member.example.com\"
        },
        \"MINFO\": {
            \"rmailbx\": \"responsible.example.com\",
            \"emailbx\": \"[email protected]\"
        },
        \"MR\": {
            \"newname\": \"newmail.example.com\"
        },
        \"MX\": {
            \"preference\": 10,
            \"exchange\": \"mail.example.com\"
        },
        \"NAPTR\": {
            \"order\": 100,
            \"preference\": 10,
            \"flags\": \"U\",
            \"services\": \"E2U+sip\",
            \"regexp\": \"!^.*$!sip:[email protected]!\",
            \"replacement\": \"example.com\"
        },
        \"NS\": {
            \"nsdname\": \"ns1.example.com\"
        },
        \"PTR\": {
            \"ptrdname\": \"host.example.com\"
        },
        \"RP\": {
            \"mbox\": \"admin.example.com\",
            \"txtdname\": \"info.example.com\"
        },
        \"SOA\": {
            \"mname\": \"ns1.example.com\",
            \"rname\": \"admin.example.com\",
            \"serial\": 2025090901,
            \"refresh\": 3600,
            \"retry\": 1800,
            \"expire\": 604800,
            \"minimum\": 86400
        },
        \"SPF\": {
            \"txtdata\": \"\\\"v=spf1 include:example.com ~all\\\"\"
        },
        \"SRV\": {
            \"priority\": 10,
            \"weight\": 5,
            \"port\": 5060,
            \"target\": \"sip.example.com\"
        },
        \"TXT\": {
            \"txtdata\": \"\\\"v=spf1 include:example.com ~all\\\"\"
        },
        \"WKS\": {
            \"address\": \"192.0.2.1\",
            \"protocol\": 6,
            \"bitmap\": \"0101010100000000\"
        },
        \"X25\": {
            \"psdnaddress\": \"1234567890\"
        }
    }
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones/11/records/update'
payload = {
    "line": 1,
    "name": "www",
    "type": "A",
    "ttl": 3600,
    "fields": {
        "A": {
            "address": "192.0.2.1"
        },
        "AAAA": {
            "address": "2001:db8::1"
        },
        "AFSDB": {
            "subtype": 1,
            "hostname": "host.example.com"
        },
        "CNAME": {
            "cname": "example.com"
        },
        "DEF": {
            "value": "Some value"
        },
        "DNAME": {
            "target": "example.com"
        },
        "DS": {
            "keytag": 12345,
            "algorithm": 8,
            "digesttype": 1,
            "digest": "49FD46E6C4B45C55D4AC"
        },
        "HINFO": {
            "cpu": "Intel",
            "os": "Linux"
        },
        "ISDN": {
            "isdnaddress": "+1-555-1234567",
            "sa": "123"
        },
        "LOC": {
            "version": 0,
            "size": 1,
            "horiz_pre": 100,
            "vert_pre": 10,
            "latitude": "52 22 23.0 N",
            "longitude": "4 53 32.0 E",
            "altitude": 5
        },
        "MB": {
            "madname": "mail.example.com"
        },
        "MD": {
            "madname": "mail.example.com"
        },
        "MF": {
            "madname": "forwarder.example.com"
        },
        "MG": {
            "mgmname": "member.example.com"
        },
        "MINFO": {
            "rmailbx": "responsible.example.com",
            "emailbx": "[email protected]"
        },
        "MR": {
            "newname": "newmail.example.com"
        },
        "MX": {
            "preference": 10,
            "exchange": "mail.example.com"
        },
        "NAPTR": {
            "order": 100,
            "preference": 10,
            "flags": "U",
            "services": "E2U+sip",
            "regexp": "!^.*$!sip:[email protected]!",
            "replacement": "example.com"
        },
        "NS": {
            "nsdname": "ns1.example.com"
        },
        "PTR": {
            "ptrdname": "host.example.com"
        },
        "RP": {
            "mbox": "admin.example.com",
            "txtdname": "info.example.com"
        },
        "SOA": {
            "mname": "ns1.example.com",
            "rname": "admin.example.com",
            "serial": 2025090901,
            "refresh": 3600,
            "retry": 1800,
            "expire": 604800,
            "minimum": 86400
        },
        "SPF": {
            "txtdata": "\"v=spf1 include:example.com ~all\""
        },
        "SRV": {
            "priority": 10,
            "weight": 5,
            "port": 5060,
            "target": "sip.example.com"
        },
        "TXT": {
            "txtdata": "\"v=spf1 include:example.com ~all\""
        },
        "WKS": {
            "address": "192.0.2.1",
            "protocol": 6,
            "bitmap": "0101010100000000"
        },
        "X25": {
            "psdnaddress": "1234567890"
        }
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/dns-manager/zones/11/records/update';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'line' => 1,
            'name' => 'www',
            'type' => 'A',
            'ttl' => 3600,
            'fields' => [
                'A' => [
                    'address' => '192.0.2.1',
                ],
                'AAAA' => [
                    'address' => '2001:db8::1',
                ],
                'AFSDB' => [
                    'subtype' => 1,
                    'hostname' => 'host.example.com',
                ],
                'CNAME' => [
                    'cname' => 'example.com',
                ],
                'DEF' => [
                    'value' => 'Some value',
                ],
                'DNAME' => [
                    'target' => 'example.com',
                ],
                'DS' => [
                    'keytag' => 12345,
                    'algorithm' => 8,
                    'digesttype' => 1,
                    'digest' => '49FD46E6C4B45C55D4AC',
                ],
                'HINFO' => [
                    'cpu' => 'Intel',
                    'os' => 'Linux',
                ],
                'ISDN' => [
                    'isdnaddress' => '+1-555-1234567',
                    'sa' => '123',
                ],
                'LOC' => [
                    'version' => 0,
                    'size' => 1.0,
                    'horiz_pre' => 100.0,
                    'vert_pre' => 10.0,
                    'latitude' => '52 22 23.0 N',
                    'longitude' => '4 53 32.0 E',
                    'altitude' => 5.0,
                ],
                'MB' => [
                    'madname' => 'mail.example.com',
                ],
                'MD' => [
                    'madname' => 'mail.example.com',
                ],
                'MF' => [
                    'madname' => 'forwarder.example.com',
                ],
                'MG' => [
                    'mgmname' => 'member.example.com',
                ],
                'MINFO' => [
                    'rmailbx' => 'responsible.example.com',
                    'emailbx' => '[email protected]',
                ],
                'MR' => [
                    'newname' => 'newmail.example.com',
                ],
                'MX' => [
                    'preference' => 10,
                    'exchange' => 'mail.example.com',
                ],
                'NAPTR' => [
                    'order' => 100,
                    'preference' => 10,
                    'flags' => 'U',
                    'services' => 'E2U+sip',
                    'regexp' => '!^.*$!sip:[email protected]!',
                    'replacement' => 'example.com',
                ],
                'NS' => [
                    'nsdname' => 'ns1.example.com',
                ],
                'PTR' => [
                    'ptrdname' => 'host.example.com',
                ],
                'RP' => [
                    'mbox' => 'admin.example.com',
                    'txtdname' => 'info.example.com',
                ],
                'SOA' => [
                    'mname' => 'ns1.example.com',
                    'rname' => 'admin.example.com',
                    'serial' => 2025090901,
                    'refresh' => 3600,
                    'retry' => 1800,
                    'expire' => 604800,
                    'minimum' => 86400,
                ],
                'SPF' => [
                    'txtdata' => '"v=spf1 include:example.com ~all"',
                ],
                'SRV' => [
                    'priority' => 10,
                    'weight' => 5,
                    'port' => 5060,
                    'target' => 'sip.example.com',
                ],
                'TXT' => [
                    'txtdata' => '"v=spf1 include:example.com ~all"',
                ],
                'WKS' => [
                    'address' => '192.0.2.1',
                    'protocol' => 6,
                    'bitmap' => '0101010100000000',
                ],
                'X25' => [
                    'psdnaddress' => '1234567890',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 1,
        "device_id": 38,
        "server_id": 3,
        "ip": null,
        "name": "1.168.192.in-addr.arpa",
        "records": [
            {
                "line": "4",
                "name": "1.168.192.in-addr.arpa.",
                "type": "SOA",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "mname": "ns1.55-33-166-35.cprapid.com",
                    "rname": "test.com",
                    "serial": "2025090900",
                    "refresh": "3600",
                    "retry": "1800",
                    "expire": "1209600",
                    "minimum": "86400"
                }
            },
            {
                "line": "10",
                "name": "1.168.192.in-addr.arpa.",
                "type": "NS",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "nsdname": "ns1.55-33-166-35.cprapid.com"
                }
            },
            {
                "line": "11",
                "name": "1.168.192.in-addr.arpa.",
                "type": "NS",
                "class": "IN",
                "ttl": "86400",
                "rdlength": null,
                "rdata": {
                    "nsdname": "ns2.55-33-166-35.cprapid.com"
                }
            },
            {
                "line": "12",
                "name": "1.168.192.in-addr.arpa.",
                "type": "A",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "address": "55.33.166.35"
                }
            },
            {
                "line": "13",
                "name": "1.168.192.in-addr.arpa.",
                "type": "MX",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "preference": "0",
                    "exchange": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "14",
                "name": "mail.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "15",
                "name": "www.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "16",
                "name": "ftp.1.168.192.in-addr.arpa.",
                "type": "CNAME",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "cname": "1.168.192.in-addr.arpa"
                }
            },
            {
                "line": "17",
                "name": "0.1.168.192.in-addr.arpa.",
                "type": "PTR",
                "class": "IN",
                "ttl": "14400",
                "rdlength": null,
                "rdata": {
                    "ptrdname": "test.com"
                }
            },
            {
                "line": "18",
                "name": "test.1.168.192.in-addr.arpa.",
                "type": "A",
                "class": "IN",
                "ttl": "3600",
                "rdlength": null,
                "rdata": {
                    "address": "10.10.10.1"
                }
            }
        ],
        "created_at": "2025-02-28 13:32:26",
        "updated_at": "2025-02-28 13:32:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/dns-manager/zones/{id}/records/update

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the zone. Example: 11

Body Parameters

line   integer     

The line id of zone record. Example: 1

name   string     

The hostname or record name. Example: www

type   string     

DNS record type. Example: A

Must be one of:
  • A
  • AAAA
  • AFSDB
  • CNAME
  • DEF
  • DNAME
  • DS
  • HINFO
  • ISDN
  • LOC
  • MB
  • MD
  • MF
  • MG
  • MINFO
  • MR
  • MX
  • NAPTR
  • NS
  • PTR
  • RP
  • SOA
  • SPF
  • SRV
  • TXT
  • WKS
  • X25
ttl   integer  optional    

Time-to-live in seconds (minimum 60). Must be at least 60. Example: 3600

fields   object     

Required object for provided type. Object type one from (A, AAAA, AFSDB, CNAME, DEF, DNAME, DS, HINFO, ISDN, LOC, MB, MD, MF, MG, MINFO, MR, MX, NAPTR, NS, PTR, RP, SOA, SPF, SRV, TXT, WKS, X25).

A   object  optional    
address   string  optional    

A 32-bit IPv4 address (required if type=A). This field is required when type is A. Example: 192.0.2.1

AAAA   object  optional    
address   string  optional    

A 128-bit IPv6 address (required if type=AAAA). This field is required when type is AAAA. Example: 2001:db8::1

AFSDB   object  optional    
subtype   string  optional    

AFSDB subtype, either 1 (DFS) or 2 (DCE). This field is required when type is AFSDB. Example: 1

Must be one of:
  • 1
  • 2
hostname   string  optional    

Hostname associated with the AFSDB record. This field is required when type is AFSDB. Example: host.example.com

CNAME   object  optional    
cname   string  optional    

Canonical domain name for the alias. The owner name is the alias. This field is required when type is CNAME. Example: example.com

DEF   object  optional    
value   string  optional    

The value for the DEF record. This field is required when type is DEF. Example: Some value

DNAME   object  optional    
target   string  optional    

Target domain name to which the owner domain is aliased. This field is required when type is DNAME. Example: example.com

DS   object  optional    
keytag   integer  optional    

Key tag of the DNSKEY record this DS record refers to. This field is required when type is DS. Example: 12345

algorithm   integer  optional    

Algorithm number used by the DNSKEY. This field is required when type is DS. Example: 8

digesttype   integer  optional    

Digest type used to create the digest. This field is required when type is DS. Example: 1

digest   string  optional    

Digest of the referenced DNSKEY record. This field is required when type is DS. Example: 49FD46E6C4B45C55D4AC

HINFO   object  optional    
cpu   string  optional    

CPU type of the host machine. This field is required when type is HINFO. Example: Intel

os   string  optional    

Operating system type of the host machine. This field is required when type is HINFO. Example: Linux

ISDN   object  optional    
isdnaddress   string  optional    

ISDN address for the record (e.g., telephone number). This field is required when type is ISDN. Example: +1-555-1234567

sa   string  optional    

Subaddress associated with the ISDN address (optional). Example: 123

LOC   object  optional    
version   integer  optional    

LOC record version (optional, usually 0). Example: 0

size   number  optional    

Diameter of the sphere representing the location (optional). Example: 1

horiz_pre   number  optional    

Horizontal precision in meters (optional). Example: 100

vert_pre   number  optional    

Vertical precision in meters (optional). Example: 10

latitude   string  optional    

Latitude of the location (required if type=LOC). This field is required when type is LOC. Example: 52 22 23.0 N

longitude   string  optional    

Longitude of the location (required if type=LOC). This field is required when type is LOC. Example: 4 53 32.0 E

altitude   number  optional    

Altitude of the location in meters (optional). Example: 5

MB   object  optional    
madname   string  optional    

Domain name of the host which has the specified mailbox. This field is required when type is MB. Example: mail.example.com

MD   object  optional    
madname   string  optional    

Domain name of the host which has a mail agent for the domain. This field is required when type is MD. Example: mail.example.com

MF   object  optional    
madname   string  optional    

Domain name of the host which has a mail agent for forwarding mail to the domain. This field is required when type is MF. Example: forwarder.example.com

MG   object  optional    
mgmname   string  optional    

Domain name of the mailbox which is a member of the mail group. This field is required when type is MG. Example: member.example.com

MINFO   object  optional    
rmailbx   string  optional    

Mailbox responsible for the mailing list or mailbox. This field is required when type is MINFO. Example: responsible.example.com

emailbx   string  optional    

Mailbox to receive error messages related to the mailing list or mailbox. This field is required when type is MINFO. Example: [email protected]

MR   object  optional    
newname   string  optional    

Mailbox which is the proper rename of the specified mailbox. This field is required when type is MR. Example: newmail.example.com

MX   object  optional    
preference   integer  optional    

Preference value for the mail exchange; lower values are preferred. This field is required when type is MX. Must be at least 0. Must not be greater than 65535. Example: 10

exchange   string  optional    

Domain name of the host willing to act as a mail exchange for the owner. This field is required when type is MX. Example: mail.example.com

NAPTR   object  optional    
order   integer  optional    

Order in which the NAPTR record is processed. This field is required when type is NAPTR. Must be at least 0. Example: 100

preference   integer  optional    

Preference for records with the same order; lower values are preferred. This field is required when type is NAPTR. Must be at least 0. Example: 10

flags   string  optional    

Flags controlling the rewriting and interpretation of the record. This field is required when type is NAPTR. Example: U

services   string  optional    

Services available via this NAPTR record (e.g., E2U+sip). This field is required when type is NAPTR. Example: E2U+sip

regexp   string  optional    

Regular expression used to rewrite the original string (optional). Example: !^.*$!sip:[email protected]!

replacement   string  optional    

Replacement domain name if the regexp is not used. This field is required when type is NAPTR. Example: example.com

NS   object  optional    
nsdname   string  optional    

Domain name of the host which should be authoritative for the domain. This field is required when type is NS. Example: ns1.example.com

PTR   object  optional    
ptrdname   string  optional    

Domain name that the PTR record points to in the DNS namespace. This field is required when type is PTR. Example: host.example.com

RP   object  optional    
mbox   string  optional    

Mailbox responsible for the domain or owner. This field is required when type is RP. Example: admin.example.com

txtdname   string  optional    

Domain name containing additional text information. This field is required when type is RP. Example: info.example.com

SOA   object  optional    
mname   string  optional    

Primary name server for the zone. This field is required when type is SOA. Example: ns1.example.com

rname   string  optional    

Mailbox of the person responsible for the zone. This field is required when type is SOA. Example: admin.example.com

serial   integer  optional    

Serial number of the zone; incremented on changes. This field is required when type is SOA. Must be at least 0. Example: 2025090901

refresh   integer  optional    

Time interval before the zone should be refreshed (seconds). This field is required when type is SOA. Must be at least 0. Example: 3600

retry   integer  optional    

Time interval before a failed refresh should be retried (seconds). This field is required when type is SOA. Must be at least 0. Example: 1800

expire   integer  optional    

Time interval before the zone is no longer authoritative (seconds). This field is required when type is SOA. Must be at least 0. Example: 604800

minimum   integer  optional    

Minimum TTL for records in this zone (seconds). This field is required when type is SOA. Must be at least 0. Example: 86400

SPF   object  optional    
txtdata   string  optional    

SPF record data specifying allowed sending hosts for the domain. This field is required when type is SPF. Example: "v=spf1 include:example.com ~all"

SRV   object  optional    
priority   integer  optional    

Priority of the target host; lower values are preferred. This field is required when type is SRV. Must be at least 0. Example: 10

weight   integer  optional    

Relative weight for records with the same priority. This field is required when type is SRV. Must be at least 0. Example: 5

port   integer  optional    

Port on which the service is running (0-65535). This field is required when type is SRV. Must be at least 0. Must not be greater than 65535. Example: 5060

target   string  optional    

Domain name of the target host providing the service. This field is required when type is SRV. Example: sip.example.com

TXT   object  optional    
txtdata   string  optional    

Text data for the TXT record; one or more character strings. This field is required when type is TXT. Example: "v=spf1 include:example.com ~all"

WKS   object  optional    
address   string  optional    

32-bit IPv4 address. This field is required when type is WKS. Example: 192.0.2.1

protocol   integer  optional    

8-bit IP protocol number. This field is required when type is WKS. Must be at least 0. Must not be greater than 255. Example: 6

bitmap   string  optional    

Variable length bitmap; must be a multiple of 8 bits. This field is required when type is WKS. Example: 0101010100000000

X25   object  optional    
psdnaddress   string  optional    

Public Switched Data Network (PSDN) address. This field is required when type is X25. Example: 1234567890

Usage Collector

List of Limits For Device

requires authentication

Returns a paginated list of limits for devices with configured limits

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/usage-collector/limits?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/usage-collector/limits'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/usage-collector/limits';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 111,
            "label": "4U",
            "model": "Generic",
            "device_status": "running",
            "location": "Rzeszow",
            "metadata": [],
            "configurations": [
                {
                    "id": 2,
                    "driver": "PowerUsage",
                    "enabled": false,
                    "config": {
                        "total": "12",
                        "interval_start_day": "first day of this month",
                        "enable_notifications": "0",
                        "time_unit": "5",
                        "warning_notification_treshold": "110"
                    },
                    "created_at": "2025-08-20 12:18:41",
                    "updated_at": "2025-08-20 12:18:41"
                },
                {
                    "id": 3,
                    "driver": "TrafficAggregation",
                    "enabled": false,
                    "config": {
                        "bandwidth": "1000",
                        "bandwidth_unit": "MB",
                        "bandwidth_in": "200",
                        "bandwidth_in_unit": "MB",
                        "bandwidth_out": "300",
                        "bandwidth_out_unit": "TB",
                        "percentile": null,
                        "disable_traffic_aggregation_ports": "0",
                        "interval_start_day": "first day of this month",
                        "enable_notifications": "0",
                        "time_unit": "5",
                        "warning_notification_treshold": "110"
                    },
                    "created_at": "2025-08-20 12:24:26",
                    "updated_at": "2025-08-20 12:24:26"
                }
            ]
        },
        {
            "id": 198,
            "label": "Test Server",
            "model": "Generic",
            "device_status": null,
            "location": "Rzeszow",
            "metadata": [],
            "configurations": [
                {
                    "id": 5,
                    "driver": "TrafficAggregation",
                    "enabled": true,
                    "config": {
                        "bandwidth": 0,
                        "bandwidth_unit": "GB",
                        "bandwidth_in": 0,
                        "bandwidth_in_unit": "GB",
                        "bandwidth_out": 0,
                        "bandwidth_out_unit": "GB",
                        "percentile": 0,
                        "interval_start_day": "first day of this month"
                    },
                    "created_at": "2025-10-16 09:29:47",
                    "updated_at": "2025-10-16 09:30:49"
                }
            ]
        },
        {
            "id": 41,
            "label": "label6",
            "model": "Generic",
            "device_status": "running",
            "location": "New York",
            "metadata": [],
            "configurations": [
                {
                    "id": 6,
                    "driver": "TrafficAggregation",
                    "enabled": true,
                    "config": {
                        "bandwidth": "1",
                        "bandwidth_unit": "GB",
                        "bandwidth_in": "0.1",
                        "bandwidth_in_unit": "GB",
                        "bandwidth_out": "0.1",
                        "bandwidth_out_unit": "GB",
                        "percentile": "10",
                        "interval_start_day": "first day of this month"
                    },
                    "created_at": "2025-10-16 09:34:08",
                    "updated_at": "2025-10-20 12:45:22"
                }
            ]
        },
        {
            "id": 81,
            "label": "test",
            "model": "Generic",
            "device_status": "running",
            "location": "Rzeszow",
            "metadata": [],
            "configurations": [
                {
                    "id": 7,
                    "driver": "TrafficAggregation",
                    "enabled": true,
                    "config": {
                        "bandwidth": 0,
                        "bandwidth_unit": "GB",
                        "bandwidth_in": 0,
                        "bandwidth_in_unit": "GB",
                        "bandwidth_out": 0,
                        "bandwidth_out_unit": "GB",
                        "percentile": 0,
                        "interval_start_day": "first day of this month"
                    },
                    "created_at": "2025-10-16 10:07:01",
                    "updated_at": "2025-10-16 10:07:01"
                }
            ]
        }
    ],
    "links": {
        "first": "https://your-easydcim.com/api/v3/admin/usage-collector/limits?page=1",
        "last": "https://your-easydcim.com/api/v3/admin/usage-collector/limits?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/usage-collector/limits?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/usage-collector/limits",
        "per_page": 10,
        "to": 4,
        "total": 4,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/usage-collector/limits

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, label, location_id, type_id, model_id. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, label, location_id, type_id, model_id. Example: id

Show of Limits For Device

requires authentication

Returns limits for device

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/usage-collector/1/limits" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/usage-collector/1/limits'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/usage-collector/1/limits';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 111,
        "label": "4U",
        "model": "Generic",
        "device_status": "running",
        "location": "Rzeszow",
        "metadata": [],
        "configurations": [
            {
                "id": 2,
                "driver": "PowerUsage",
                "enabled": false,
                "config": {
                    "total": "12",
                    "interval_start_day": "first day of this month",
                    "enable_notifications": "0",
                    "time_unit": "5",
                    "warning_notification_treshold": "110"
                },
                "created_at": "2025-08-20 12:18:41",
                "updated_at": "2025-08-20 12:18:41"
            },
            {
                "id": 3,
                "driver": "TrafficAggregation",
                "enabled": false,
                "config": {
                    "bandwidth": "1000",
                    "bandwidth_unit": "MB",
                    "bandwidth_in": "200",
                    "bandwidth_in_unit": "MB",
                    "bandwidth_out": "300",
                    "bandwidth_out_unit": "TB",
                    "percentile": null,
                    "disable_traffic_aggregation_ports": "0",
                    "interval_start_day": "first day of this month",
                    "enable_notifications": "0",
                    "time_unit": "5",
                    "warning_notification_treshold": "110"
                },
                "created_at": "2025-08-20 12:24:26",
                "updated_at": "2025-08-20 12:24:26"
            }
        ]
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/usage-collector/{id}/limits

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Update Limits For Device

requires authentication

Returns limits for device

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/usage-collector/1/limits" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"limit_type\": \"TrafficAggregation\",
    \"config\": {
        \"bandwidth\": 100,
        \"bandwidth_unit\": \"GB\",
        \"bandwidth_in\": 100,
        \"bandwidth_in_unit\": \"MB\",
        \"bandwidth_out\": 100,
        \"bandwidth_out_unit\": \"TB\",
        \"percentile\": null,
        \"disable_traffic_aggregation_ports\": false,
        \"interval_start_day\": \"first day of this month\",
        \"enable_notifications\": false,
        \"time_unit\": 60,
        \"warning_notification_treshold\": 110
    }
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/usage-collector/1/limits'
payload = {
    "limit_type": "TrafficAggregation",
    "config": {
        "bandwidth": 100,
        "bandwidth_unit": "GB",
        "bandwidth_in": 100,
        "bandwidth_in_unit": "MB",
        "bandwidth_out": 100,
        "bandwidth_out_unit": "TB",
        "percentile": null,
        "disable_traffic_aggregation_ports": false,
        "interval_start_day": "first day of this month",
        "enable_notifications": false,
        "time_unit": 60,
        "warning_notification_treshold": 110
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/usage-collector/1/limits';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'limit_type' => 'TrafficAggregation',
            'config' => [
                'bandwidth' => 100,
                'bandwidth_unit' => 'GB',
                'bandwidth_in' => 100,
                'bandwidth_in_unit' => 'MB',
                'bandwidth_out' => 100,
                'bandwidth_out_unit' => 'TB',
                'percentile' => null,
                'disable_traffic_aggregation_ports' => false,
                'interval_start_day' => 'first day of this month',
                'enable_notifications' => false,
                'time_unit' => 60,
                'warning_notification_treshold' => 110,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 111,
        "label": "4U",
        "model": "Generic",
        "device_status": "running",
        "location": "Rzeszow",
        "metadata": [],
        "configurations": [
            {
                "id": 2,
                "driver": "PowerUsage",
                "enabled": false,
                "config": {
                    "total": "12",
                    "interval_start_day": "first day of this month",
                    "enable_notifications": "0",
                    "time_unit": "5",
                    "warning_notification_treshold": "110"
                },
                "created_at": "2025-08-20 12:18:41",
                "updated_at": "2025-08-20 12:18:41"
            },
            {
                "id": 3,
                "driver": "TrafficAggregation",
                "enabled": false,
                "config": {
                    "bandwidth": "1000",
                    "bandwidth_unit": "MB",
                    "bandwidth_in": "200",
                    "bandwidth_in_unit": "MB",
                    "bandwidth_out": "300",
                    "bandwidth_out_unit": "TB",
                    "percentile": null,
                    "disable_traffic_aggregation_ports": "0",
                    "interval_start_day": "first day of this month",
                    "enable_notifications": "0",
                    "time_unit": "5",
                    "warning_notification_treshold": "110"
                },
                "created_at": "2025-08-20 12:24:26",
                "updated_at": "2025-08-20 12:24:26"
            }
        ]
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/usage-collector/{id}/limits

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Body Parameters

limit_type   string     

Limit Type for which configuration should be updated. TrafficAggregation for item types: Server, Blade, Colocation, PDU, Switch, Router, Firewall, PowerUsage for item types: PDU, Colocation and ServerPowerUsage for item types: Server, Blade. Example: TrafficAggregation

Must be one of:
  • PowerUsage
  • ServerPowerUsage
  • TrafficAggregation
config   object     

Configuration properties to be updated.

Delete Limits For Device

requires authentication

Returns limits for device

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/usage-collector/1/limits" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"limit_type\": \"TrafficAggregation\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/usage-collector/1/limits'
payload = {
    "limit_type": "TrafficAggregation"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/usage-collector/1/limits';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'limit_type' => 'TrafficAggregation',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 111,
        "label": "4U",
        "model": "Generic",
        "device_status": "running",
        "location": "Rzeszow",
        "metadata": [],
        "configurations": [
            {
                "id": 2,
                "driver": "PowerUsage",
                "enabled": false,
                "config": {
                    "total": "12",
                    "interval_start_day": "first day of this month",
                    "enable_notifications": "0",
                    "time_unit": "5",
                    "warning_notification_treshold": "110"
                },
                "created_at": "2025-08-20 12:18:41",
                "updated_at": "2025-08-20 12:18:41"
            },
            {
                "id": 3,
                "driver": "TrafficAggregation",
                "enabled": false,
                "config": {
                    "bandwidth": "1000",
                    "bandwidth_unit": "MB",
                    "bandwidth_in": "200",
                    "bandwidth_in_unit": "MB",
                    "bandwidth_out": "300",
                    "bandwidth_out_unit": "TB",
                    "percentile": null,
                    "disable_traffic_aggregation_ports": "0",
                    "interval_start_day": "first day of this month",
                    "enable_notifications": "0",
                    "time_unit": "5",
                    "warning_notification_treshold": "110"
                },
                "created_at": "2025-08-20 12:24:26",
                "updated_at": "2025-08-20 12:24:26"
            }
        ]
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/usage-collector/{id}/limits

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the device. Example: 1

Body Parameters

limit_type   string     

Limit Type for which configuration should be updated. TrafficAggregation for item types: Server, Blade, Colocation, PDU, Switch, Router, Firewall, PowerUsage for item types: PDU, Colocation and ServerPowerUsage for item types: Server, Blade. Example: TrafficAggregation

Must be one of:
  • PowerUsage
  • ServerPowerUsage
  • TrafficAggregation

Tags

List Tags

requires authentication

Returns a paginated list of tags.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/tags?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/tags'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/tags';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 58,
            "name": "ab",
            "color": "#8830e2",
            "type": "App\\Models\\User",
            "created_at": "2026-07-10 09:51:41",
            "updated_at": "2026-07-10 09:51:41"
        },
        {
            "id": 59,
            "name": "at",
            "color": "#bb5e04",
            "type": "App\\Models\\User",
            "created_at": "2026-07-10 09:51:41",
            "updated_at": "2026-07-10 09:51:41"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/tags?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/tags",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/tags

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, type. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, type. Example: id

Show tag

requires authentication

Display detailed information about a single tag by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/admin/tags/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/tags/1'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/tags/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 60,
        "name": "culpa",
        "color": "#4e303a",
        "type": "App\\Models\\User",
        "assignedTo": [],
        "created_at": "2026-07-10 09:51:41",
        "updated_at": "2026-07-10 09:51:41"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

GET api/v3/admin/tags/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the tag. Example: 1

Create tag

requires authentication

Store a new tag in the system using validated request data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/tags" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Server\",
    \"color\": \"#FA6900\",
    \"type\": \"App\\\\Models\\\\Item\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/tags'
payload = {
    "name": "Server",
    "color": "#FA6900",
    "type": "App\\Models\\Item"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/tags';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Server',
            'color' => '#FA6900',
            'type' => 'App\\Models\\Item',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 61,
        "name": "ad",
        "color": "#69949c",
        "type": "App\\Models\\User",
        "assignedTo": [],
        "created_at": "2026-07-10 09:51:41",
        "updated_at": "2026-07-10 09:51:41"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/tags

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The name of the tag. Example: Server

color   string     

The color of the tag. Example: #FA6900

type   string     

The type of the tag. Example: App\Models\Item

Must be one of:
  • App\Models\Colocation
  • App\Models\Device
  • App\Models\Item
  • App\Models\ItemPort
  • App\Models\ItemSensor
  • App\Models\ItemVlan
  • App\Models\Order
  • App\Models\User
  • Modules\Addons\IPManager\Model\IpamSubnet

Update tag

requires authentication

Updates the specified tag with provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/admin/tags/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Server\",
    \"color\": \"#FA6900\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/tags/1'
payload = {
    "name": "Server",
    "color": "#FA6900"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/tags/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Server',
            'color' => '#FA6900',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 62,
        "name": "ipsum",
        "color": "#60e1e7",
        "type": "App\\Models\\User",
        "assignedTo": [],
        "created_at": "2026-07-10 09:51:41",
        "updated_at": "2026-07-10 09:51:41"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

PUT api/v3/admin/tags/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the tag. Example: 1

Body Parameters

name   string  optional    

The name of the tag. Example: Server

color   string  optional    

The color of the tag. Example: #FA6900

Delete tag

requires authentication

Removes the specified tag from the system.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/admin/tags/5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/tags/5'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/tags/5';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

DELETE api/v3/admin/tags/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the tag. Example: 5

Assign multiple tags to specified entity

requires authentication

Assigns multiple tags to specified entity

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/tags/assign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"entity_id\": 1,
    \"entity_type\": \"App\\\\Models\\\\Item\",
    \"tags\": [
        1
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/tags/assign'
payload = {
    "entity_id": 1,
    "entity_type": "App\\Models\\Item",
    "tags": [
        1
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/tags/assign';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'entity_id' => 1,
            'entity_type' => 'App\\Models\\Item',
            'tags' => [
                1,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 38,
        "tags": [
            {
                "id": 3,
                "name": "For Sale",
                "color": "#c70000",
                "type": "App\\Models\\Device"
            }
        ]
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/tags/assign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

entity_id   integer     

The id of the entity. Example: 1

entity_type   string     

The type of the tag. Example: App\Models\Item

Must be one of:
  • App\Models\Colocation
  • App\Models\Device
  • App\Models\Item
  • App\Models\ItemPort
  • App\Models\ItemSensor
  • App\Models\ItemVlan
  • App\Models\Order
  • App\Models\User
  • Modules\Addons\IPManager\Model\IpamSubnet
tags   integer[]  optional    

Array of tags ids. The id of an existing record in the tags table.

Unassign multiple tags from specified entity

requires authentication

Unassigns multiple tags from specified entity

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/admin/tags/unassign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"entity_id\": 1,
    \"entity_type\": \"App\\\\Models\\\\Item\",
    \"tags\": [
        1
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/admin/tags/unassign'
payload = {
    "entity_id": 1,
    "entity_type": "App\\Models\\Item",
    "tags": [
        1
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/admin/tags/unassign';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'entity_id' => 1,
            'entity_type' => 'App\\Models\\Item',
            'tags' => [
                1,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 38,
        "tags": [
            {
                "id": 3,
                "name": "For Sale",
                "color": "#c70000",
                "type": "App\\Models\\Device"
            }
        ]
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/admin/tags/unassign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

entity_id   integer     

The id of the entity. Example: 1

entity_type   string     

The type of the tag. Example: App\Models\Item

Must be one of:
  • App\Models\Colocation
  • App\Models\Device
  • App\Models\Item
  • App\Models\ItemPort
  • App\Models\ItemSensor
  • App\Models\ItemVlan
  • App\Models\Order
  • App\Models\User
  • Modules\Addons\IPManager\Model\IpamSubnet
tags   integer[]  optional    

Array of tags ids. The id of an existing record in the tags table.

Authorization Endpoints

Login

This endpoint allows a user to authenticate and receive an access token.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\",
    \"password\": \"secret123\",
    \"device_name\": \"iPhone 13\",
    \"token_ttl\": 0
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/login'
payload = {
    "email": "[email protected]",
    "password": "secret123",
    "device_name": "iPhone 13",
    "token_ttl": 0
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/login';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => '[email protected]',
            'password' => 'secret123',
            'device_name' => 'iPhone 13',
            'token_ttl' => 0,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 112,
        "name": "iPhone 13",
        "last_used_at": "-",
        "expires_at": "-",
        "token": "112|TT67ipL9gve55ujQNiVpI4CtK4OOW5F6rkzCdPV15cdccbc0",
        "created_at": "2025-10-21 15:47:12"
    }
}
 

Example response (403):


{
    "success": false,
    "status": "error",
    "message": "Your account is not active or has been banned."
}
 

Example response (422):


{
    "success": false,
    "status": "error",
    "message": "Data validation has failed. Please correct the errors and try again.",
    "errors": {
        "email": [
            "The provided email address is incorrect."
        ],
        "password": [
            "The provided password is incorrect."
        ]
    }
}
 

Request   

POST api/v3/login

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

The user's email address. Must be a valid email address. Example: [email protected]

password   string     

The user's password. Example: secret123

device_name   string     

A name for the device making the request. Example: iPhone 13

token_ttl   integer  optional    

Optional custom token lifetime in minutes. Use 0 for non-expiring token. Defaults to 1440 (1 day). Must be at least 0. Example: 0

Remind Password

Sends a password reset link to the provided email address, if it exists in the system.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/password/remind" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/password/remind'
payload = {
    "email": "[email protected]"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/password/remind';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => '[email protected]',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "Success! An email has been sent to your inbox.",
    "data": null
}
 

Example response (403):


{
    "success": false,
    "status": "error",
    "message": "Your account is not active or has been banned."
}
 

Example response (404):


{
    "success": false,
    "status": "error",
    "message": "The provided email address is incorrect."
}
 

Example response (500):


{
    "success": false,
    "status": "error",
    "message": "Unable to send email. Please contact your administrator."
}
 

Request   

POST api/v3/password/remind

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

The email address associated with the user's account. Must be a valid email address. Must not be greater than 255 characters. Example: [email protected]

Restore Password

Resets a user's password using a valid reset token.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/password/restore" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"123456abcdef\",
    \"password\": \"NewSecureP@ss123\",
    \"password_confirmation\": \"NewSecureP@ss123\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/password/restore'
payload = {
    "token": "123456abcdef",
    "password": "NewSecureP@ss123",
    "password_confirmation": "NewSecureP@ss123"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/password/restore';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'token' => '123456abcdef',
            'password' => 'NewSecureP@ss123',
            'password_confirmation' => 'NewSecureP@ss123',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "Your password has been updated successfully.",
    "data": null
}
 

Example response (422):


{
    "success": false,
    "status": "error",
    "message": "Your token is incorrect or this account does not exist."
}
 

Request   

POST api/v3/password/restore

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

token   string     

The password reset token received by email. Example: 123456abcdef

password   string     

The new password (must be confirmed). Must be at least 5 characters. Example: NewSecureP@ss123

password_confirmation   string     

Must match the password field. Must be at least 5 characters. Example: NewSecureP@ss123

Activate User Account

Activates a user account based on the provided activation token.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/activate/9bdf52c2-2e13-4f9c-a53d-2b3f45ea9c20" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/activate/9bdf52c2-2e13-4f9c-a53d-2b3f45ea9c20'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/activate/9bdf52c2-2e13-4f9c-a53d-2b3f45ea9c20';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "Your account has been activated. You may now log in.",
    "data": null
}
 

Example response (400):


{
    "success": false,
    "status": "error",
    "message": "Activation failed. Please contact support or try again."
}
 

Request   

GET api/v3/activate/{token}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

token   string     

The unique activation token sent by email. Example: 9bdf52c2-2e13-4f9c-a53d-2b3f45ea9c20

List Active SSO Providers

Returns all enabled SSO providers available for the CLIENT scope.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/oauth/providers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/oauth/providers'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/oauth/providers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "slug": "GitHubClientArea"
        },
        {
            "slug": "GoogleClientArea"
        },
        {
            "slug": "CustomClientArea"
        }
    ]
}
 

Request   

GET api/v3/oauth/providers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

OAuth2 Redirect

Returns provider authorization URL for the given provider slug.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/oauth/redirect" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"provider\": \"Google\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/oauth/redirect'
payload = {
    "provider": "Google"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/oauth/redirect';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'provider' => 'Google',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "url": "https://provider.url.com",
        "provider": "GitHubClientArea",
        "state": "enabled"
    }
}
 

Example response (404):


{
    "success": false,
    "status": "error",
    "message": "Invalid or unsupported authentication provider."
}
 

Example response (422):


{
    "success": false,
    "status": "error",
    "message": "Incorrect OAuth provider configuration."
}
 

Example response (500):


{
    "success": false,
    "status": "error",
    "message": "An error occurred while creating the authorization URL."
}
 

Request   

POST api/v3/oauth/redirect

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

provider   string     

Provider slug (e.g. "Google", "Github", "CustomClientArea"). Must not be greater than 64 characters. Example: Google

OAuth2 Exchange

Exchanges the authorization code from the frontend for an API access token.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/oauth/callback" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"provider\": \"Google\",
    \"code\": \"4\\/0AfJohXKXYZ...\",
    \"state\": \"abc123xyz\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/oauth/callback'
payload = {
    "provider": "Google",
    "code": "4\/0AfJohXKXYZ...",
    "state": "abc123xyz"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/oauth/callback';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'provider' => 'Google',
            'code' => '4/0AfJohXKXYZ...',
            'state' => 'abc123xyz',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 112,
        "name": "iPhone 13",
        "last_used_at": "-",
        "expires_at": "-",
        "token": "112|TT67ipL9gve55ujQNiVpI4CtK4OOW5F6rkzCdPV15cdccbc0",
        "created_at": "2025-10-21 15:47:12"
    }
}
 

Example response (400):


{
    "success": false,
    "status": "error",
    "message": "Unable to retrieve user email from the provider."
}
 

Example response (403):


{
    "success": false,
    "status": "error",
    "message": "The user account [email protected] is not active."
}
 

Example response (404):


{
    "success": false,
    "status": "error",
    "message": "Invalid or unsupported authentication provider."
}
 

Example response (404):


{
    "success": false,
    "status": "error",
    "message": "Unable to find user with email address: [email protected]."
}
 

Example response (500):


{
    "success": false,
    "status": "error",
    "message": "OAuth exchange failed"
}
 

Request   

POST api/v3/oauth/callback

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

provider   string     

The OAuth provider slug (e.g. "Google", "Github", "CustomClientArea"). Must not be greater than 64 characters. Example: Google

code   string     

Authorization code received from the provider. Example: 4/0AfJohXKXYZ...

state   string     

State parameter for CSRF protection, must match the one stored in session. Example: abc123xyz

Logout

requires authentication

Revoke the current access token to log out the authenticated user.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/logout" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/logout'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/logout';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": null
}
 

Request   

POST api/v3/logout

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Client Endpoints

System

Get Translations

Returns all language translations for the specified locale.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/system/translations/en" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/system/translations/en'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/system/translations/en';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "lang_error_toast_heading": "An error occurred!",
        "lang_success_toast_heading": "Success!",
        "log_in": "Log in",
        "log_out": "Log out",
        "tab": {
            "summary": "Summary",
            "detailed_information": "Detailed Information",
            "graphs": "Graphs",
            "traffic_statistics": "Traffic Statistics",
            "power_usage": "Power Usage",
            "reverse_dns": "Reverse DNS",
            "ip_management": "IP Address Management",
            "outlets": "Outlets"
        },
        "title": {
            "impersonating_as_client": "Logging in as client...",
            "activating_user": "Activating Account...",
            "oauth_callback": "Connecting Account..."
        },
        "messages": {
            "impersonating_description": "Please wait while we securely log you in as the selected client. This process may take a few seconds.",
            "activating_user_description": "Please wait while we activate your account. This will only take a moment.",
            "oauth_callback_description": "Please wait while we securely connect your account. This process may take a few seconds."
        },
        "section_title": {
            "bandwidth": "Bandwidth",
            "power_usage": "Power Usage",
            "outlets": "Outlets",
            "detailed_information": "Detailed Information",
            "device_parts": "Device Parts",
            "graphs": "Graphs",
            "ip_addresses_management": "IP Addresses Management",
            "power_usage_statistic": "Power Usage Statistics",
            "bandwidth_intervals": "Bandwidth Intervals",
            "network_ports": "Network Ports",
            "ping_status": "Ping & Status",
            "name": "Name"
        },
        "boxes": {
            "bandwith_in": "Inbound Bandwidth",
            "bandwith_out": "Outbound Bandwidth",
            "bandwith_total": "Total Bandwidth"
        },
        "table_headers": {
            "base": "Base",
            "ipmi_settings": "IPMI Settings",
            "system": "System",
            "ssh_settings": "SSH Settings",
            "snmp_settings": "SNMP Settings",
            "type": "Type",
            "name": "Name",
            "label": "Label",
            "device": "Device",
            "last_hour_traffic": "Last Hour Traffic",
            "last_day_traffic": "Last Day Traffic",
            "last_month_traffic": "Last Month Traffic",
            "interval": "Interval",
            "bandwidth_in": "Inbound Bandwidth",
            "bandwidth_out": "Outbound Bandwidth",
            "bandwidth_total": "Total Bandwidth",
            "fingerprint": "Fingerprint",
            "status": "Status",
            "actions": "Actions",
            "id": "ID",
            "number": "Number",
            "power_usage": "Power Usage",
            "ip_address": "IP Address",
            "rdata": "RDATA",
            "hostname": "Hostname",
            "created": "Created",
            "description": "Description",
            "iso_url": "ISO URL"
        },
        "interval_table": {
            "last_1hour": "Last 1 Hour",
            "last_6hours": "Last 6 Hours",
            "last_1day": "Last 1 Day",
            "last_2days": "Last 2 Days",
            "last_1week": "Last 1 Week",
            "last_1month": "Last 1 Month",
            "last_6months": "Last 6 Months",
            "last_1year": "Last 1 Year",
            "current_month": "Current Month"
        },
        "power_usage_table": {
            "average_daily_usage": "Average Daily Usage",
            "average_weekly_usage": "Average Weekly Usage",
            "average_monthly_usage": "Average Monthly Usage",
            "previous_month_average_usage": "Previous Month Average Usage"
        },
        "chart": {
            "inbound_total": "Traffic IN",
            "outbound_total": "Traffic OUT",
            "total_bound_bits": "Traffic IN & OUT",
            "95_percentile": "95th Percentile",
            "power_usage": "Power Usage"
        },
        "stats": {
            "power_daily_usage": "Daily Usage",
            "power_weekly_usage": "Weekly Usage",
            "power_monthly_usage": "Monthly Usage",
            "power_previous_month_usage": "Previous Month"
        },
        "panel_branding": {
            "title": "Panel Branding",
            "allowed_formats": "SVG, PNG or JPG",
            "click_to_upload": "Click to upload",
            "change_logo": "Change Logo",
            "change_favicon": "Change Favicon",
            "choose_color_scheme": "Choose Color Scheme",
            "action_saved": "Save Changes",
            "action_restore": "Restore Defaults"
        },
        "login_page": {
            "login_title": "Login",
            "register": "Register",
            "impersonating_as_client": "Loading Client Panel Dashboard...",
            "reset_password_title": "Reset Your Password",
            "reset_password_desc": "Forgot your password? Enter your email address below to begin the reset process.",
            "message_sent_title": "Message Sent",
            "message_sent_desc": "We have sent a message to your email address with a link to reset your password."
        },
        "dropdown": {
            "server_actions": "Server Actions",
            "power_control": "Power Control"
        },
        "status": {
            "active": "Active"
        },
        "nav": {
            "your_services": "Your Services",
            "iso_images": "ISO Images",
            "ssh_keys": "SSH Keys",
            "my_account": "My Account",
            "sign_out": "Sign Out"
        },
        "banner": {
            "services_title": "Your Services",
            "services_desc": "A list of all services assigned to your account.",
            "iso_images_title": "ISO Images",
            "iso_images_desc": "A list of all ISO Images created in your account.",
            "ssh_keys_title": "SSH Keys",
            "ssh_keys_desc": "A list of all SSH Keys created in your account.",
            "my_account_title": "My Account",
            "my_account_desc": "Summary of your account details and settings"
        },
        "inputs": {
            "first_name_title": "First Name",
            "first_name_placeholder": "First Name Placeholder",
            "last_name_title": "Last Name",
            "last_name_placeholder": "Last Name Placeholder",
            "company_name_title": "Company Name",
            "company_name_placeholder": "Company Name Placeholder",
            "email_address_title": "Email Address",
            "email_address_placeholder": "Email Address Placeholder",
            "languages_title": "Language",
            "languages_placeholder": "Language Placeholder",
            "timezones_title": "Timezone",
            "timezones_placeholder": "Timezone Placeholder",
            "current_password_title": "Current Password",
            "current_password_placeholder": "Current Password Placeholder",
            "new_password_title": "New Password",
            "new_password_placeholder": "New Password Placeholder",
            "confirm_new_password_title": "Confirm New Password",
            "confirm_new_password_placeholder": "Confirm New Password Placeholder",
            "generated_code_title": "Generated Code",
            "generated_code_placeholder": "Generated Code Placeholder",
            "template_title": "Template",
            "template_placeholder": "Template Placeholder",
            "hostname_title": "Hostname",
            "hostname_placeholder": "Hostname Placeholder",
            "username_title": "Username",
            "username_placeholder": "Username Placeholder",
            "root_password_title": "Root Password",
            "root_password_placeholder": "Root Password Placeholder",
            "password_title": "Password",
            "password_placeholder": "Password Placeholder",
            "ssh_keys_title": "SSH Keys",
            "ssh_keys_placeholder": "SSH Keys Placeholder",
            "disk_layout_title": "Disk Layout",
            "disk_layout_placeholder": "Disk Layout Placeholder",
            "extras_title": "Extras",
            "extras_placeholder": "Extras Placeholder",
            "remember_me_title": "Remember Me"
        },
        "general": {
            "all": "all",
            "save_changes": "Save Changes",
            "cancel": "Cancel",
            "confirm": "Confirm",
            "unknown": "Unknown",
            "unassigned": "Unassigned",
            "not_found_or_unauthorized": "The requested entity does not exist or does not belong to you.",
            "pdu_required": "PDU Management extension must be enabled to perform this action.",
            "manage": "Manage"
        },
        "auth": {
            "missing_bearer_token": "Missing bearer token.",
            "unauthorized_admin_access_only": "Unauthorized. Admin access only.",
            "invalid_email": "The provided email address is incorrect.",
            "email_send_error": "Unable to send email. Please contact your administrator.",
            "email_send_success": "Success! An email has been sent to your inbox.",
            "invalid_token": "Your token is incorrect or this account does not exist.",
            "validation_error": "Password reset failed due to validation errors.",
            "password_reset_success": "Your password has been updated successfully.",
            "activation_success": "Your account has been activated. You may now log in.",
            "activation_failed": "Activation failed. Please contact support or try again.",
            "user_not_found": "User not found.",
            "invalid_password": "The provided password is incorrect.",
            "your_account_is_inactive": "Your account is not active or has been banned.",
            "invalid_bearer_token": "Invalid bearer token.",
            "impersonated_user_not_found": "Impersonated user not found.",
            "impersonated_user_inactive": "Impersonated user account is inactive.",
            "only_admin_can_impersonate": "Only admin users are allowed to impersonate other users.",
            "missing_impersonate_ability": "Your access token does not have permission to impersonate other users.",
            "oauth_invalid_provider": "Invalid or unsupported authentication provider.",
            "oauth_incorrect_configuration": "Incorrect OAuth provider configuration.",
            "oauth_authorization_error": "An error occurred while creating the authorization URL: :error",
            "oauth_exchange_error": "OAuth exchange failed: :error",
            "oauth_missing_email": "Unable to retrieve user email from the provider.",
            "oauth_user_not_found": "Unable to find user with email address: :email.",
            "oauth_user_inactive": "The user account :email is not active.",
            "oauth_invalid_provider_response": "Invalid or unsupported authentication provider response.",
            "oauth_redirect_failed": "Failed to start OAuth login. Please try again later.",
            "oauth_connecting": "Connecting your account...",
            "oauth_missing_parameters": "Missing authorization parameters.",
            "oauth_invalid_state": "Invalid state parameter.",
            "oauth_authentication_failed": "Authentication failed. Please try again.",
            "oauth_exchange_failed": "OAuth exchange failed. Please try again later.",
            "login_with_GitHubClientArea": "Sign in with GitHub",
            "login_with_GoogleClientArea": "Sign in with Google",
            "login_with_CustomClientArea": "Sign in with OAuth Provider"
        },
        "service": {
            "not_found_or_unauthorized": "The requested service does not exist, is inactive, or does not belong to you.",
            "power_action_error": "An error occurred while attempting to perform the :action action on the server.",
            "outlet_action_error": "An error occurred while attempting to perform the :action action on the outlet."
        },
        "2fa": {
            "already_enabled": "Two-factor authentication is already enabled.",
            "configuration_error": "There was an error while verifying the two-factor configuration.",
            "verification_failed": "Invalid code. Two-factor authentication failed.",
            "you_have_been_signed_in_using_backup_code_please_verify_your_two_factor_configuration": "You have signed in using a backup code. Please verify your two-factor configuration.",
            "please_provide_the_valid_password_for_your_account": "Please provide the valid password for your account.",
            "no_valid_backup_code_specified_into_configuration": "No valid backup code is stored in your configuration.",
            "invalid_or_empty_backup_code": "The backup code provided is invalid or has not been entered.",
            "enabled_successfully": "Two-factor authentication has been enabled successfully.",
            "disabled_successfully": "Two-factor authentication has been disabled successfully.",
            "enable_modal": {
                "title": "Two-Factor Authentication",
                "desc": "Please use an authenticator app, such as Google Authenticator, to scan the QR code below.",
                "backup_code_desc": "The backup code is needed to access your account in the event you cannot complete two-factor authentication. Backup codes are valid once only."
            },
            "disable_modal": {
                "title": "Disable Two-Factor Authentication",
                "desc": "To disable two-factor authentication, please confirm your current account password.",
                "input_title": "Current Password"
            },
            "2fa_title": "Two-Factor Authentication",
            "2fa_code_desc": "To confirm your identity, please enter the six-digit authentication code from your app.",
            "2fa_backup_code_desc": "If you do not have access to the app, please enter a backup code below.",
            "input_title": "Authentication code",
            "input_placeholder": "Enter your 6-digit code",
            "or": "or",
            "use_backup_code": "Use Backup Code",
            "use_standard_code": "Use Authentication Code"
        },
        "login_backup_code": {
            "input_title": "Backup code",
            "input_placeholder": "Enter your backup code"
        },
        "actions": {
            "boot": "Boot",
            "reboot": "Reboot",
            "shutdown": "Shutdown",
            "boot_modal_title": "Boot Server",
            "boot_modal_desc": "Are you sure you want to boot this server?",
            "shutdown_modal_title": "Shutdown Server",
            "shutdown_modal_desc": "Are you sure you want to shut down this server?",
            "reboot_modal_title": "Reboot Server",
            "reboot_modal_desc": "Are you sure you want to reboot this server?",
            "cold_reset_modal_title": "Cold Reset BMC",
            "cold_reset_modal_desc": "This will force a cold reset of the BMC. Are you sure?",
            "rescue_mode_enable_title": "Enable Rescue Mode",
            "rescue_mode_enable_desc": "Do you really want to reboot the device in rescue mode?",
            "rescue_mode_enable_desc1": "If you confirm your request, your server will go into rescue mode and will reboot immediately. You will then receive an email containing the information required to log in to your server.",
            "rescue_mode_enable_desc2": "Downtime due to reboot: approximately 5 minutes.",
            "rescue_mode_disable_title": "Disable Rescue Mode",
            "rescue_mode_disable_desc": "This will boot the server into its normal OS. Proceed?",
            "osreinstall_modal_title": "Reinstall Operating System",
            "outletOn": "Outlet On",
            "outletOff": "Outlet Off",
            "outletReboot": "Outlet Reboot"
        },
        "service_widget": {
            "service": "Service",
            "ip_address": "IP Adress",
            "location": "Location",
            "rack": "Rack",
            "label": "Label",
            "device_status": "Device Status",
            "mac_address": "MAC Address",
            "uptime": "UpTime",
            "operating_system": "Operating System"
        },
        "graphs": {
            "aggregate_traffic": "Aggregate Traffic",
            "ping_response": "Ping Response",
            "status": "Status Graphs",
            "average_loads": "Average Loads For Device",
            "power_usage": "Server Power Usage"
        },
        "vnc_console": {
            "modal_title": "noVNC KVM Console",
            "connecting_desc": "We’re establishing the console connection for you. This may take a moment, please wait.",
            "failed_desc": "The console connection has been established successfully! Please click the button below to open the console.",
            "connected_desc": "Failed to establish the console connection. Please try again or contact support if the problem persists.",
            "action_open": "Open Console",
            "action_try_again": "Try Again",
            "insert_username": "Insert Username",
            "insert_password": "Insert Password",
            "close_session": "Close Session",
            "console_status": "Console Status",
            "loading_desc": "We are loading the console. This may take a moment, please wait.",
            "error_message": "The connection has been lost! Please try to reconnect using the button below. If you continue to experience issues, contact the support team."
        },
        "404": {
            "title": "Something's missing.",
            "desc": "The resource you are looking for does not exist or has been removed.",
            "back_to_services": "Back to Service List",
            "back_to_login": "Back to Login"
        }
    }
}
 

Request   

GET api/v3/client/system/translations/{locale}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

locale   string     

The language code (e.g. "en", "pl"). Example: en

Show System Configuration

requires authentication

Returns basic system configuration.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/system-settings" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/system-settings'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/system-settings';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "company_name": "EasyDCIM",
        "default_client_area_language": "en",
        "languages": {
            "en": "English",
            "de": "German",
            "es": "Spanish"
        },
        "timezones": {
            "": "Select something...",
            "0": "Africa/Abidjan",
            "1": "Africa/Accra",
            "2": "Africa/Addis_Ababa",
            "3": "Africa/Algiers",
            "4": "Africa/Asmara",
            "5": "Africa/Bamako",
            "6": "Africa/Bangui",
            "7": "Africa/Banjul",
            "8": "Africa/Bissau",
            "9": "Africa/Blantyre",
            "10": "Africa/Brazzaville",
            "11": "Africa/Bujumbura",
            "12": "Africa/Cairo",
            "13": "Africa/Casablanca",
            "14": "Africa/Ceuta",
            "15": "Africa/Conakry",
            "16": "Africa/Dakar",
            "17": "Africa/Dar_es_Salaam",
            "18": "Africa/Djibouti",
            "19": "Africa/Douala",
            "20": "Africa/El_Aaiun",
            "21": "Africa/Freetown",
            "22": "Africa/Gaborone",
            "23": "Africa/Harare",
            "24": "Africa/Johannesburg",
            "25": "Africa/Juba",
            "26": "Africa/Kampala",
            "27": "Africa/Khartoum",
            "28": "Africa/Kigali",
            "29": "Africa/Kinshasa",
            "30": "Africa/Lagos",
            "31": "Africa/Libreville",
            "32": "Africa/Lome",
            "33": "Africa/Luanda",
            "34": "Africa/Lubumbashi",
            "35": "Africa/Lusaka",
            "36": "Africa/Malabo",
            "37": "Africa/Maputo",
            "38": "Africa/Maseru",
            "39": "Africa/Mbabane",
            "40": "Africa/Mogadishu",
            "41": "Africa/Monrovia",
            "42": "Africa/Nairobi",
            "43": "Africa/Ndjamena",
            "44": "Africa/Niamey",
            "45": "Africa/Nouakchott",
            "46": "Africa/Ouagadougou",
            "47": "Africa/Porto-Novo",
            "48": "Africa/Sao_Tome",
            "49": "Africa/Tripoli",
            "50": "Africa/Tunis",
            "51": "Africa/Windhoek",
            "52": "America/Adak",
            "53": "America/Anchorage",
            "54": "America/Anguilla",
            "55": "America/Antigua",
            "56": "America/Araguaina",
            "57": "America/Argentina/Buenos_Aires",
            "58": "America/Argentina/Catamarca",
            "59": "America/Argentina/Cordoba",
            "60": "America/Argentina/Jujuy",
            "61": "America/Argentina/La_Rioja",
            "62": "America/Argentina/Mendoza",
            "63": "America/Argentina/Rio_Gallegos",
            "64": "America/Argentina/Salta",
            "65": "America/Argentina/San_Juan",
            "66": "America/Argentina/San_Luis",
            "67": "America/Argentina/Tucuman",
            "68": "America/Argentina/Ushuaia",
            "69": "America/Aruba",
            "70": "America/Asuncion",
            "71": "America/Atikokan",
            "72": "America/Bahia",
            "73": "America/Bahia_Banderas",
            "74": "America/Barbados",
            "75": "America/Belem",
            "76": "America/Belize",
            "77": "America/Blanc-Sablon",
            "78": "America/Boa_Vista",
            "79": "America/Bogota",
            "80": "America/Boise",
            "81": "America/Cambridge_Bay",
            "82": "America/Campo_Grande",
            "83": "America/Cancun",
            "84": "America/Caracas",
            "85": "America/Cayenne",
            "86": "America/Cayman",
            "87": "America/Chicago",
            "88": "America/Chihuahua",
            "89": "America/Ciudad_Juarez",
            "90": "America/Costa_Rica",
            "91": "America/Creston",
            "92": "America/Cuiaba",
            "93": "America/Curacao",
            "94": "America/Danmarkshavn",
            "95": "America/Dawson",
            "96": "America/Dawson_Creek",
            "97": "America/Denver",
            "98": "America/Detroit",
            "99": "America/Dominica",
            "100": "America/Edmonton",
            "101": "America/Eirunepe",
            "102": "America/El_Salvador",
            "103": "America/Fort_Nelson",
            "104": "America/Fortaleza",
            "105": "America/Glace_Bay",
            "106": "America/Goose_Bay",
            "107": "America/Grand_Turk",
            "108": "America/Grenada",
            "109": "America/Guadeloupe",
            "110": "America/Guatemala",
            "111": "America/Guayaquil",
            "112": "America/Guyana",
            "113": "America/Halifax",
            "114": "America/Havana",
            "115": "America/Hermosillo",
            "116": "America/Indiana/Indianapolis",
            "117": "America/Indiana/Knox",
            "118": "America/Indiana/Marengo",
            "119": "America/Indiana/Petersburg",
            "120": "America/Indiana/Tell_City",
            "121": "America/Indiana/Vevay",
            "122": "America/Indiana/Vincennes",
            "123": "America/Indiana/Winamac",
            "124": "America/Inuvik",
            "125": "America/Iqaluit",
            "126": "America/Jamaica",
            "127": "America/Juneau",
            "128": "America/Kentucky/Louisville",
            "129": "America/Kentucky/Monticello",
            "130": "America/Kralendijk",
            "131": "America/La_Paz",
            "132": "America/Lima",
            "133": "America/Los_Angeles",
            "134": "America/Lower_Princes",
            "135": "America/Maceio",
            "136": "America/Managua",
            "137": "America/Manaus",
            "138": "America/Marigot",
            "139": "America/Martinique",
            "140": "America/Matamoros",
            "141": "America/Mazatlan",
            "142": "America/Menominee",
            "143": "America/Merida",
            "144": "America/Metlakatla",
            "145": "America/Mexico_City",
            "146": "America/Miquelon",
            "147": "America/Moncton",
            "148": "America/Monterrey",
            "149": "America/Montevideo",
            "150": "America/Montserrat",
            "151": "America/Nassau",
            "152": "America/New_York",
            "153": "America/Nome",
            "154": "America/Noronha",
            "155": "America/North_Dakota/Beulah",
            "156": "America/North_Dakota/Center",
            "157": "America/North_Dakota/New_Salem",
            "158": "America/Nuuk",
            "159": "America/Ojinaga",
            "160": "America/Panama",
            "161": "America/Paramaribo",
            "162": "America/Phoenix",
            "163": "America/Port-au-Prince",
            "164": "America/Port_of_Spain",
            "165": "America/Porto_Velho",
            "166": "America/Puerto_Rico",
            "167": "America/Punta_Arenas",
            "168": "America/Rankin_Inlet",
            "169": "America/Recife",
            "170": "America/Regina",
            "171": "America/Resolute",
            "172": "America/Rio_Branco",
            "173": "America/Santarem",
            "174": "America/Santiago",
            "175": "America/Santo_Domingo",
            "176": "America/Sao_Paulo",
            "177": "America/Scoresbysund",
            "178": "America/Sitka",
            "179": "America/St_Barthelemy",
            "180": "America/St_Johns",
            "181": "America/St_Kitts",
            "182": "America/St_Lucia",
            "183": "America/St_Thomas",
            "184": "America/St_Vincent",
            "185": "America/Swift_Current",
            "186": "America/Tegucigalpa",
            "187": "America/Thule",
            "188": "America/Tijuana",
            "189": "America/Toronto",
            "190": "America/Tortola",
            "191": "America/Vancouver",
            "192": "America/Whitehorse",
            "193": "America/Winnipeg",
            "194": "America/Yakutat",
            "195": "Antarctica/Casey",
            "196": "Antarctica/Davis",
            "197": "Antarctica/DumontDUrville",
            "198": "Antarctica/Macquarie",
            "199": "Antarctica/Mawson",
            "200": "Antarctica/McMurdo",
            "201": "Antarctica/Palmer",
            "202": "Antarctica/Rothera",
            "203": "Antarctica/Syowa",
            "204": "Antarctica/Troll",
            "205": "Antarctica/Vostok",
            "206": "Arctic/Longyearbyen",
            "207": "Asia/Aden",
            "208": "Asia/Almaty",
            "209": "Asia/Amman",
            "210": "Asia/Anadyr",
            "211": "Asia/Aqtau",
            "212": "Asia/Aqtobe",
            "213": "Asia/Ashgabat",
            "214": "Asia/Atyrau",
            "215": "Asia/Baghdad",
            "216": "Asia/Bahrain",
            "217": "Asia/Baku",
            "218": "Asia/Bangkok",
            "219": "Asia/Barnaul",
            "220": "Asia/Beirut",
            "221": "Asia/Bishkek",
            "222": "Asia/Brunei",
            "223": "Asia/Chita",
            "224": "Asia/Colombo",
            "225": "Asia/Damascus",
            "226": "Asia/Dhaka",
            "227": "Asia/Dili",
            "228": "Asia/Dubai",
            "229": "Asia/Dushanbe",
            "230": "Asia/Famagusta",
            "231": "Asia/Gaza",
            "232": "Asia/Hebron",
            "233": "Asia/Ho_Chi_Minh",
            "234": "Asia/Hong_Kong",
            "235": "Asia/Hovd",
            "236": "Asia/Irkutsk",
            "237": "Asia/Jakarta",
            "238": "Asia/Jayapura",
            "239": "Asia/Jerusalem",
            "240": "Asia/Kabul",
            "241": "Asia/Kamchatka",
            "242": "Asia/Karachi",
            "243": "Asia/Kathmandu",
            "244": "Asia/Khandyga",
            "245": "Asia/Kolkata",
            "246": "Asia/Krasnoyarsk",
            "247": "Asia/Kuala_Lumpur",
            "248": "Asia/Kuching",
            "249": "Asia/Kuwait",
            "250": "Asia/Macau",
            "251": "Asia/Magadan",
            "252": "Asia/Makassar",
            "253": "Asia/Manila",
            "254": "Asia/Muscat",
            "255": "Asia/Nicosia",
            "256": "Asia/Novokuznetsk",
            "257": "Asia/Novosibirsk",
            "258": "Asia/Omsk",
            "259": "Asia/Oral",
            "260": "Asia/Phnom_Penh",
            "261": "Asia/Pontianak",
            "262": "Asia/Pyongyang",
            "263": "Asia/Qatar",
            "264": "Asia/Qostanay",
            "265": "Asia/Qyzylorda",
            "266": "Asia/Riyadh",
            "267": "Asia/Sakhalin",
            "268": "Asia/Samarkand",
            "269": "Asia/Seoul",
            "270": "Asia/Shanghai",
            "271": "Asia/Singapore",
            "272": "Asia/Srednekolymsk",
            "273": "Asia/Taipei",
            "274": "Asia/Tashkent",
            "275": "Asia/Tbilisi",
            "276": "Asia/Tehran",
            "277": "Asia/Thimphu",
            "278": "Asia/Tokyo",
            "279": "Asia/Tomsk",
            "280": "Asia/Ulaanbaatar",
            "281": "Asia/Urumqi",
            "282": "Asia/Ust-Nera",
            "283": "Asia/Vientiane",
            "284": "Asia/Vladivostok",
            "285": "Asia/Yakutsk",
            "286": "Asia/Yangon",
            "287": "Asia/Yekaterinburg",
            "288": "Asia/Yerevan",
            "289": "Atlantic/Azores",
            "290": "Atlantic/Bermuda",
            "291": "Atlantic/Canary",
            "292": "Atlantic/Cape_Verde",
            "293": "Atlantic/Faroe",
            "294": "Atlantic/Madeira",
            "295": "Atlantic/Reykjavik",
            "296": "Atlantic/South_Georgia",
            "297": "Atlantic/St_Helena",
            "298": "Atlantic/Stanley",
            "299": "Australia/Adelaide",
            "300": "Australia/Brisbane",
            "301": "Australia/Broken_Hill",
            "302": "Australia/Darwin",
            "303": "Australia/Eucla",
            "304": "Australia/Hobart",
            "305": "Australia/Lindeman",
            "306": "Australia/Lord_Howe",
            "307": "Australia/Melbourne",
            "308": "Australia/Perth",
            "309": "Australia/Sydney",
            "310": "Europe/Amsterdam",
            "311": "Europe/Andorra",
            "312": "Europe/Astrakhan",
            "313": "Europe/Athens",
            "314": "Europe/Belgrade",
            "315": "Europe/Berlin",
            "316": "Europe/Bratislava",
            "317": "Europe/Brussels",
            "318": "Europe/Bucharest",
            "319": "Europe/Budapest",
            "320": "Europe/Busingen",
            "321": "Europe/Chisinau",
            "322": "Europe/Copenhagen",
            "323": "Europe/Dublin",
            "324": "Europe/Gibraltar",
            "325": "Europe/Guernsey",
            "326": "Europe/Helsinki",
            "327": "Europe/Isle_of_Man",
            "328": "Europe/Istanbul",
            "329": "Europe/Jersey",
            "330": "Europe/Kaliningrad",
            "331": "Europe/Kirov",
            "332": "Europe/Kyiv",
            "333": "Europe/Lisbon",
            "334": "Europe/Ljubljana",
            "335": "Europe/London",
            "336": "Europe/Luxembourg",
            "337": "Europe/Madrid",
            "338": "Europe/Malta",
            "339": "Europe/Mariehamn",
            "340": "Europe/Minsk",
            "341": "Europe/Monaco",
            "342": "Europe/Moscow",
            "343": "Europe/Oslo",
            "344": "Europe/Paris",
            "345": "Europe/Podgorica",
            "346": "Europe/Prague",
            "347": "Europe/Riga",
            "348": "Europe/Rome",
            "349": "Europe/Samara",
            "350": "Europe/San_Marino",
            "351": "Europe/Sarajevo",
            "352": "Europe/Saratov",
            "353": "Europe/Simferopol",
            "354": "Europe/Skopje",
            "355": "Europe/Sofia",
            "356": "Europe/Stockholm",
            "357": "Europe/Tallinn",
            "358": "Europe/Tirane",
            "359": "Europe/Ulyanovsk",
            "360": "Europe/Vaduz",
            "361": "Europe/Vatican",
            "362": "Europe/Vienna",
            "363": "Europe/Vilnius",
            "364": "Europe/Volgograd",
            "365": "Europe/Warsaw",
            "366": "Europe/Zagreb",
            "367": "Europe/Zurich",
            "368": "Indian/Antananarivo",
            "369": "Indian/Chagos",
            "370": "Indian/Christmas",
            "371": "Indian/Cocos",
            "372": "Indian/Comoro",
            "373": "Indian/Kerguelen",
            "374": "Indian/Mahe",
            "375": "Indian/Maldives",
            "376": "Indian/Mauritius",
            "377": "Indian/Mayotte",
            "378": "Indian/Reunion",
            "379": "Pacific/Apia",
            "380": "Pacific/Auckland",
            "381": "Pacific/Bougainville",
            "382": "Pacific/Chatham",
            "383": "Pacific/Chuuk",
            "384": "Pacific/Easter",
            "385": "Pacific/Efate",
            "386": "Pacific/Fakaofo",
            "387": "Pacific/Fiji",
            "388": "Pacific/Funafuti",
            "389": "Pacific/Galapagos",
            "390": "Pacific/Gambier",
            "391": "Pacific/Guadalcanal",
            "392": "Pacific/Guam",
            "393": "Pacific/Honolulu",
            "394": "Pacific/Kanton",
            "395": "Pacific/Kiritimati",
            "396": "Pacific/Kosrae",
            "397": "Pacific/Kwajalein",
            "398": "Pacific/Majuro",
            "399": "Pacific/Marquesas",
            "400": "Pacific/Midway",
            "401": "Pacific/Nauru",
            "402": "Pacific/Niue",
            "403": "Pacific/Norfolk",
            "404": "Pacific/Noumea",
            "405": "Pacific/Pago_Pago",
            "406": "Pacific/Palau",
            "407": "Pacific/Pitcairn",
            "408": "Pacific/Pohnpei",
            "409": "Pacific/Port_Moresby",
            "410": "Pacific/Rarotonga",
            "411": "Pacific/Saipan",
            "412": "Pacific/Tahiti",
            "413": "Pacific/Tarawa",
            "414": "Pacific/Tongatapu",
            "415": "Pacific/Wake",
            "416": "Pacific/Wallis",
            "417": "UTC"
        }
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/system-settings

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Users

Autologin with Token

Logs the user in using a one-time autologin token and returns a new API access token. The token will be valid for 10 minutes.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/user/autologin" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"e32cc8f1004a581583b2702c1fbf8354\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/user/autologin'
payload = {
    "token": "e32cc8f1004a581583b2702c1fbf8354"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/user/autologin';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'token' => 'e32cc8f1004a581583b2702c1fbf8354',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

POST api/v3/client/user/autologin

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

token   string     

One-time autologin token generated for impersonation or quick login. Example: e32cc8f1004a581583b2702c1fbf8354

Get Authenticated User

requires authentication

Returns the currently authenticated user's details.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/user" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/user'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/user';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 5367,
        "username": "holden32",
        "firstname": "Omari",
        "lastname": "Champlin",
        "name": "Omari Champlin",
        "email": "[email protected]",
        "company": null,
        "avatar": "//www.gravatar.com/avatar/77349117760f148b2c7f5dafd5d33a78?s=30&d=mm&r=g",
        "large_avatar": "//www.gravatar.com/avatar/77349117760f148b2c7f5dafd5d33a78?s=130&d=mm&r=g",
        "gender": "0",
        "country_code": null,
        "country_name": "United States",
        "active": 1,
        "status": "Active",
        "last_login": null,
        "locale": null,
        "timezone": 0,
        "two_factor_enabled": false
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/user

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update User

requires authentication

Updates the currently authenticated user's details with the provided data.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/client/user/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\",
    \"firstname\": \"John\",
    \"lastname\": \"Doe\",
    \"company\": \"Acme Inc.\",
    \"locale\": \"en\",
    \"timezone\": 133
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/user/edit'
payload = {
    "email": "[email protected]",
    "firstname": "John",
    "lastname": "Doe",
    "company": "Acme Inc.",
    "locale": "en",
    "timezone": 133
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/user/edit';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => '[email protected]',
            'firstname' => 'John',
            'lastname' => 'Doe',
            'company' => 'Acme Inc.',
            'locale' => 'en',
            'timezone' => 133,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 5368,
        "username": "jermey29",
        "firstname": "Lenora",
        "lastname": "Hermiston",
        "name": "Lenora Hermiston",
        "email": "[email protected]",
        "company": null,
        "avatar": "//www.gravatar.com/avatar/72a44b7b1f6b9ebf66c9581f14a6a691?s=30&d=mm&r=g",
        "large_avatar": "//www.gravatar.com/avatar/72a44b7b1f6b9ebf66c9581f14a6a691?s=130&d=mm&r=g",
        "gender": "0",
        "country_code": null,
        "country_name": "United States",
        "active": 1,
        "status": "Active",
        "last_login": null,
        "locale": null,
        "timezone": 0,
        "two_factor_enabled": false
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

PUT api/v3/client/user/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

The user's email address. Must be unique. Must be a valid email address. Must not be greater than 255 characters. Example: [email protected]

firstname   string  optional    

The user's first name. Max 255 characters. Must not be greater than 255 characters. Example: John

lastname   string  optional    

The user's last name. Max 255 characters. Must not be greater than 255 characters. Example: Doe

company   string  optional    

The user's company name. Optional. Max 255 characters. Must not be greater than 255 characters. Example: Acme Inc.

locale   string  optional    

The language preference (e.g., ISO code). Example: en

timezone   integer  optional    

The ID of the selected timezone. See the Show System Configuration endpoint for valid values. Example: 133

Update User Password

requires authentication

Allows the authenticated user to change their password by providing the current password and a new one.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/client/user/edit-password" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"current_password\": \"OldP@ssword123\",
    \"password\": \"NewSecureP@ss123\",
    \"password_confirmation\": \"NewSecureP@ss123\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/user/edit-password'
payload = {
    "current_password": "OldP@ssword123",
    "password": "NewSecureP@ss123",
    "password_confirmation": "NewSecureP@ss123"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/user/edit-password';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'current_password' => 'OldP@ssword123',
            'password' => 'NewSecureP@ss123',
            'password_confirmation' => 'NewSecureP@ss123',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

PUT api/v3/client/user/edit-password

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

current_password   string     

The user's current password. Example: OldP@ssword123

password   string     

The new password (must be confirmed). Must be at least 5 characters. Example: NewSecureP@ss123

password_confirmation   string     

Must match the password field. Must be at least 5 characters. Example: NewSecureP@ss123

Generate Auto-Login Link

requires authentication

Creates a one-time auto-login link for a specific user.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/user/autologin" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/user/autologin'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/user/autologin';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "link": "https://your-easydcim.com/client/impersonate?token=43128ab30d06c9bf5eb7a1c2f0274bf4"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/user/autologin

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

SSH Keys

List SSH Keys

requires authentication

Returns a paginated list of SSH keys for the authenticated user.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/user/ssh-keys?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/user/ssh-keys'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/user/ssh-keys';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 52,
            "name": "excepturi officiis",
            "ssh_key": "ssh-rsa YTVjYjQyYWY3NWQwZTlmYjg1YTA0Y2FhYjVmZjdlYzNkYzg3MWFlMzJjYWU4ZTU4Mzk2ODdkMWIxM2I3NTJlZA== user@host",
            "default": false,
            "fingerprint": "73:e9:7c:43:1b:35:30:cf:25:ae:b1:a6:43:c2:dc:78",
            "created_at": "2026-07-10 09:49:37"
        },
        {
            "id": 53,
            "name": "voluptates quisquam",
            "ssh_key": "ssh-rsa Mjc3NGQ4NjVkN2U0ZTlkOTZkNzIyNWRlYzcyNzY2NmQwZjU1M2IyYjBiZmYzNDI1M2I3N2E4MGUzNDUxNGI1OQ== user@host",
            "default": false,
            "fingerprint": "15:83:dc:17:d8:c4:64:f1:56:ac:d4:18:57:e0:df:7b",
            "created_at": "2026-07-10 09:49:37"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/user/ssh-keys?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/user/ssh-keys",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/user/ssh-keys

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, fingerprint, default, user_id, created_at. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, user_id. Example: id

Create SSH Key

requires authentication

Creates a new SSH key associated with the authenticated client.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/user/ssh-keys" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Public Key\",
    \"ssh_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy...\",
    \"default\": true
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/user/ssh-keys'
payload = {
    "name": "Public Key",
    "ssh_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy...",
    "default": true
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/user/ssh-keys';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Public Key',
            'ssh_key' => 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy...',
            'default' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 54,
        "name": "quibusdam numquam",
        "ssh_key": "ssh-rsa NzdlOWRjZjdlOWQyMmViYWRjNTdlZGQ1YmNkMjhkOGM2MzM0ODQyZDM5MmJmMWU1YWI4Y2JhMTcyMGQ2NTAwZg== user@host",
        "default": false,
        "fingerprint": "e3:d6:56:00:a1:d9:4a:b2:1f:aa:53:1c:71:21:1b:ee",
        "created_at": "2026-07-10 09:49:37"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/user/ssh-keys

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The name of the SSH key. Example: Public Key

ssh_key   string     

The public SSH key content. Example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy...

default   boolean  optional    

Whether the key should be set as default. Example: true

Update SSH Key

requires authentication

Updates a given SSH key for the authenticated user.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/client/user/ssh-keys/3" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Public Key\",
    \"ssh_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy...\",
    \"default\": true
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/user/ssh-keys/3'
payload = {
    "name": "Public Key",
    "ssh_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy...",
    "default": true
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/user/ssh-keys/3';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Public Key',
            'ssh_key' => 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy...',
            'default' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 55,
        "name": "accusamus deleniti",
        "ssh_key": "ssh-rsa ZjM3YzcxNmEyN2Y4NjIxZjY5MTYxOTg0MzkxMzgxZTFmYWE5YjU4YmI4MTYxN2Y0OTM1NjAxNWNlOTEwNTgzNQ== user@host",
        "default": false,
        "fingerprint": "44:82:b0:54:56:80:0b:7a:5c:47:dc:27:f2:d8:fe:f2",
        "created_at": "2026-07-10 09:49:37"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

PUT api/v3/client/user/ssh-keys/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the SSH key to update. Example: 3

Body Parameters

name   string     

The name of the SSH key. Example: Public Key

ssh_key   string     

The public SSH key content. Example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy...

default   boolean  optional    

Whether the key should be set as default. Example: true

Set SSH Key as Default

requires authentication

Sets a given SSH key as the default key for the authenticated client.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/user/ssh-keys/7/set-as-default" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/user/ssh-keys/7/set-as-default'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/user/ssh-keys/7/set-as-default';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 56,
        "name": "in voluptatem",
        "ssh_key": "ssh-rsa MjEwMjk0MzYzZjIzNmY0YmM4ZDM1ZDdjYzk2MmM3ZGRjNjhiYTBjNDI1MjY4MTcwMWIwMDA2NGE4YzIzMzQyZg== user@host",
        "default": false,
        "fingerprint": "d7:0a:cb:32:5b:a1:48:ff:48:03:67:d3:9f:ff:6c:db",
        "created_at": "2026-07-10 09:49:37"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/user/ssh-keys/{id}/set-as-default

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the SSH key to mark as default. Example: 7

Delete SSH Key

requires authentication

Deletes a specific SSH key belonging to the authenticated client.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/client/user/ssh-keys/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/user/ssh-keys/16'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/user/ssh-keys/16';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

DELETE api/v3/client/user/ssh-keys/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the ssh key. Example: 16

Services

List Services

requires authentication

Returns a paginated list of services for the authenticated client.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services?filter=active&per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services'
params = {
  'filter': 'active',
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'filter' => 'active',
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 35,
            "related_id": 1055,
            "related": {
                "label": "eum",
                "model": "voluptatem",
                "location": "Renner-Renner",
                "location_flag": "Canada.png",
                "metadata": []
            },
            "type": "Server",
            "status": "terminated",
            "created_at": "2026-07-10 09:49:41"
        },
        {
            "id": 36,
            "related_id": 1056,
            "related": {
                "label": "voluptate",
                "model": "delectus",
                "location": "Bernier-Torp",
                "location_flag": "Germany.png",
                "metadata": []
            },
            "type": "Server",
            "status": "",
            "created_at": "2026-07-10 09:49:43"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/services?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/services",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

filter   string  optional    

optional Filter services by status group. Allowed values: all, active, inactive. Default: all. Example: active

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, type, status, related.label, related.model, related.location, related.ip. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, type, status, related.label, related.model, related.location, related.ip. Example: id

Show Service

requires authentication

Returns detailed information about a specific service.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 37,
        "related_id": 1057,
        "type": "Server",
        "status": "",
        "created_at": "2026-07-10 09:49:46",
        "related": {
            "label": "sint",
            "model": "omnis",
            "location": "Harber, Torp and Ward",
            "location_flag": "USA.png",
            "rack": "Unknown",
            "device_status": "running",
            "os_installation": 0,
            "uptime": {
                "is_down": false,
                "value": "Unknown"
            },
            "image": null,
            "ip_addresses": [],
            "metadata": [],
            "metadataGroups": []
        },
        "access_level": {
            "id": 59,
            "name": "mollitia",
            "type": "Server",
            "default": true,
            "value": "a:5:{s:13:\"base_features\";a:5:{i:0;s:5:\"model\";i:1;s:8:\"position\";i:2;s:11:\"description\";i:3;s:5:\"label\";i:4;s:8:\"location\";}s:18:\"traffic_statistics\";a:5:{i:0;s:17:\"widget_last_month\";i:1;s:20:\"widget_network_ports\";i:2;s:23:\"widget_last_month_graph\";i:3;s:17:\"left_sidebar_link\";i:4;s:9:\"filtering\";}s:5:\"power\";a:6:{i:0;s:17:\"widget_last_month\";i:1;s:23:\"widget_last_month_graph\";i:2;s:17:\"left_sidebar_link\";i:3;s:9:\"filtering\";i:4;s:7:\"outlets\";i:5;s:20:\"widget_average_usage\";}s:4:\"ipam\";a:1:{i:0;s:30:\"ipam_widget_in_service_summary\";}s:11:\"dns-manager\";a:4:{i:0;s:11:\"update_rdns\";i:1;s:11:\"delete_rdns\";i:2;s:11:\"create_rdns\";i:3;s:22:\"rdns_left_sidebar_link\";}}"
        }
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Get Service Bandwidth

requires authentication

Retrieves bandwidth usage for a specific service. If a date range is provided, it returns detailed traffic data for that period. Otherwise, it returns historical usage data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/101/bandwidth" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"startDate\": \"2024-01-01 00:00:00\",
    \"endDate\": \"2024-01-31 23:59:59\",
    \"units\": \"GB\",
    \"ports\": [
        12,
        100
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/101/bandwidth'
payload = {
    "startDate": "2024-01-01 00:00:00",
    "endDate": "2024-01-31 23:59:59",
    "units": "GB",
    "ports": [
        12,
        100
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/101/bandwidth';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'startDate' => '2024-01-01 00:00:00',
            'endDate' => '2024-01-31 23:59:59',
            'units' => 'GB',
            'ports' => [
                12,
                100,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "raw": {
            "BW_TOTAL": {
                "rrd": "93.78 GB",
                "bytes": 93780000000
            },
            "BW_IN": {
                "rrd": "43.04 GB",
                "bytes": 43040000000
            },
            "BW_OUT": {
                "rrd": "50.74 GB",
                "bytes": 50740000000
            },
            "95TH_PERC": {
                "rrd": "0.00",
                "bytes": 0
            },
            "95TH_PERC_IN": {
                "rrd": "0.00",
                "bytes": 0
            },
            "95TH_PERC_OUT": {
                "rrd": "0.00",
                "bytes": 0
            }
        },
        "BW_TOTAL": "93.78",
        "BW_IN": "43.04",
        "BW_OUT": "50.74",
        "95TH_PERC": "0.00",
        "95TH_PERC_IN": "0.00",
        "95TH_PERC_OUT": "0.00"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/bandwidth

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 101

Body Parameters

startDate   string  optional    

The start date for the traffic range. Must be a valid date. Must be a valid date. Example: 2024-01-01 00:00:00

endDate   string  optional    

The end date for the traffic range. Must be a valid date. Must be a valid date. Example: 2024-01-31 23:59:59

units   string  optional    

The unit of bandwidth. Must be one of: MB, GB, TB. Example: GB

Must be one of:
  • MB
  • GB
  • TB
ports   object  optional    

An array of device port names to include in the traffic query.

Get Service Power Usage

requires authentication

Retrieves power usage data for a specific service. If a date range is provided, it returns detailed power data for that period. Otherwise, it returns historical usage data.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/101/powerusage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"startDate\": \"2024-01-01 00:00:00\",
    \"endDate\": \"2024-01-31 23:59:59\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/101/powerusage'
payload = {
    "startDate": "2024-01-01 00:00:00",
    "endDate": "2024-01-31 23:59:59"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/101/powerusage';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'startDate' => '2024-01-01 00:00:00',
            'endDate' => '2024-01-31 23:59:59',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "AVG_TOTAL_USAGE": 10,
        "units": "Amps"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/powerusage

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 101

Body Parameters

startDate   string  optional    

The start date for the traffic range. Must be a valid date. Must be a valid date. Example: 2024-01-01 00:00:00

endDate   string  optional    

The end date for the traffic range. Must be a valid date. Must be a valid date. Example: 2024-01-31 23:59:59

Assign Metadata To Service

requires authentication

Assigns metadata for specified device associated with service.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/1/assign-metadata" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"slug\": \"ipmi.ip\",
    \"value\": \"192.168.56.180\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/1/assign-metadata'
payload = {
    "slug": "ipmi.ip",
    "value": "192.168.56.180"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/1/assign-metadata';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'slug' => 'ipmi.ip',
            'value' => '192.168.56.180',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/assign-metadata

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 1

Body Parameters

slug   string     

The slug of the item metadata field. The slug of an existing record in the types_fields table. Example: ipmi.ip

value   string     

The value for the item metadata field. Example: 192.168.56.180

Perform Power Action

requires authentication

Executes a power-related action on a device assigned to the given service. This includes booting, rebooting, or shutting down the device.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/123/power/action" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"action\": \"boot\",
    \"device_id\": 1
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/power/action'
payload = {
    "action": "boot",
    "device_id": 1
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/power/action';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'action' => 'boot',
            'device_id' => 1,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/power/action

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Body Parameters

action   string     

The power action to perform. One of: boot, reboot, shutdown. Example: boot

Must be one of:
  • boot
  • reboot
  • shutdown
device_id   integer  optional    

The ID of the device assigned to the colocation linked with the given service. Required only for colocation-type services when performing a power action on a specific device. Must reference a valid device associated with the colocation belonging to the service. The id of an existing record in the items table. Example: 1

Parts

List Service Parts

requires authentication

Returns a paginated list of parts related to a specific service.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123/parts?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/parts'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/parts';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 1058,
            "label": "tenetur",
            "type": "doloribus"
        },
        {
            "id": 1059,
            "label": "nobis",
            "type": "est"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/services/{id}/parts?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/services/{id}/parts",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/parts

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, label, type. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, label, type. Example: id

Power Ports

List Service Power Ports

requires authentication

Returns a paginated list of power ports related to a specific service.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123/power-ports?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/power-ports'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/power-ports';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 442,
            "port_number": 8,
            "port_label": "officiis",
            "user_label": "ut",
            "outlet_state": "Outlet On",
            "connected_item": null,
            "connected_port": null,
            "power_usage": 64,
            "power_usage_units": "Amps",
            "power_usage_value": 64,
            "power_usage_unit": "amps",
            "power_usage_label": "64 Amps"
        },
        {
            "id": 443,
            "port_number": 4,
            "port_label": "eum",
            "user_label": "omnis",
            "outlet_state": "Outlet On",
            "connected_item": null,
            "connected_port": null,
            "power_usage": 46,
            "power_usage_units": "Amps",
            "power_usage_value": 46,
            "power_usage_unit": "amps",
            "power_usage_label": "46 Amps"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/services/{id}/power-ports?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/services/{id}/power-ports",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/power-ports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, port_number, port_label, user_label, power_usage, outlet_state. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, port_number, port_label, user_label, power_usage, outlet_state. Example: id

Perform action on a specific Power Port

requires authentication

Executes an outlet action (outletOn, outletOff, outletReboot) for a given port.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/123/power-ports/action" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"port_id\": 45,
    \"action\": \"outletOff\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/power-ports/action'
payload = {
    "port_id": 45,
    "action": "outletOff"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/power-ports/action';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'port_id' => 45,
            'action' => 'outletOff',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 444,
        "port_number": 38,
        "port_label": "praesentium",
        "user_label": "suscipit",
        "outlet_state": "Outlet On",
        "connected_item": null,
        "connected_port": null,
        "power_usage": 49,
        "power_usage_units": "Amps",
        "power_usage_value": 49,
        "power_usage_unit": "amps",
        "power_usage_label": "49 Amps"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/power-ports/action

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Body Parameters

port_id   integer     

The ID of the power port on which to perform the action. Example: 45

action   string     

The outlet action to perform. Must be one of: outletOn, outletOff, outletReboot. Example: outletOff

Must be one of:
  • outletOn
  • outletOff
  • outletReboot

Ports

List Service Ports

requires authentication

Returns a paginated list of ports related to a specific service.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123/ports?with_traffic=1&per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/ports'
params = {
  'with_traffic': '1',
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/ports';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'with_traffic' => '1',
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 7506,
            "name": null,
            "port_number": 13,
            "port_label": "ab",
            "user_label": "aperiam",
            "description": "Facere assumenda atque distinctio.",
            "if_type": "fibreChannel",
            "adminstate": "down",
            "opstate": "down",
            "connected_item": null,
            "connected_port": null,
            "connection": "Unknown",
            "speed": "1 kbps"
        },
        {
            "id": 7507,
            "name": null,
            "port_number": 44,
            "port_label": "est",
            "user_label": "voluptatibus",
            "description": "Aspernatur modi est maiores.",
            "if_type": "cnr",
            "adminstate": "up",
            "opstate": "up",
            "connected_item": null,
            "connected_port": null,
            "connection": "Unknown",
            "speed": "100 bps"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/services/{id}/ports?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/services/{id}/ports",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/ports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Query Parameters

with_traffic   boolean  optional    

Include traffic statistics (last 1 hour, last 1 day, last 1 month) for each port. Default: false. Example: true

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, port_number, port_label, user_label, description, if_type, adminstate, opstate, speed. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, port_number, port_label, user_label, description, if_type, adminstate, opstate. Example: id

Sensors

List Sensors

requires authentication

Returns a paginated list of sensors associated with the service.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/1/sensors?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/1/sensors'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/1/sensors';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 710,
            "item_id": 1065,
            "name": "atque",
            "class": "Power Supply",
            "type": "Thermal",
            "unit": "Amps",
            "index": "Thermal",
            "reading": 868,
            "last_polled": "0000-00-00 00:00:00",
            "configuration": [],
            "created_at": "2026-07-10 09:50:00",
            "updated_at": "2026-07-10 09:50:00"
        },
        {
            "id": 711,
            "item_id": 1066,
            "name": "sit",
            "class": "Power Supply",
            "type": "Thermal",
            "unit": "Voltages",
            "index": "Thermal",
            "reading": 351,
            "last_polled": "0000-00-00 00:00:00",
            "configuration": [],
            "created_at": "2026-07-10 09:50:02",
            "updated_at": "2026-07-10 09:50:02"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/services/{id}/sensors?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/services/{id}/sensors",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/sensors

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 1

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, item_id, name, class, type. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, item_id, name, class, type. Example: id

Show sensor

requires authentication

Display detailed information about a single sensor associated with the service by its ID.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/1/sensors/11" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/1/sensors/11'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/1/sensors/11';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 712,
        "item_id": 1067,
        "name": "consequuntur",
        "class": "Power Supply",
        "type": "Thermal",
        "unit": "Voltages",
        "index": "Thermal",
        "reading": 348,
        "last_polled": "0000-00-00 00:00:00",
        "configuration": [],
        "created_at": "2026-07-10 09:50:03",
        "updated_at": "2026-07-10 09:50:03"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/sensors/{sensorId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 1

sensorId   integer     

The ID of the sensor. Example: 11

Graphs

Export Graph

requires authentication

Exports a graph data for a given target

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/graphs/42/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"AggregateTraffic\",
    \"target\": \"service\",
    \"start\": \"2025-04-01 00:00:00\",
    \"end\": \"2025-04-30 23:59:59\",
    \"raw\": false
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/graphs/42/export'
payload = {
    "type": "AggregateTraffic",
    "target": "service",
    "start": "2025-04-01 00:00:00",
    "end": "2025-04-30 23:59:59",
    "raw": false
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/graphs/42/export';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'AggregateTraffic',
            'target' => 'service',
            'start' => '2025-04-01 00:00:00',
            'end' => '2025-04-30 23:59:59',
            'raw' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "datasets": [
            {
                "data": [
                    "0.00186",
                    "0.00000",
                    "0.00231",
                    "0.00231",
                    "0.00228",
                    "0.00229",
                    "0.00006",
                    "0.00219",
                    "0.00245",
                    "0.00336",
                    "0.00337",
                    "0.00191",
                    "0.00000"
                ],
                "dataset_name": "inboundtotal"
            },
            {
                "data": [
                    "0.00045",
                    "0.00046",
                    "0.00321",
                    "0.00321",
                    "0.00000",
                    "0.00232",
                    "0.00198",
                    "0.00193",
                    "0.00036",
                    "0.00036",
                    "0.00145",
                    "0.00286",
                    "0.00000"
                ],
                "dataset_name": "outboundtotal"
            },
            {
                "data": [
                    "0.00232",
                    "0.00046",
                    "0.00552",
                    "0.00552",
                    "0.00228",
                    "0.00461",
                    "0.00204",
                    "0.00412",
                    "0.00281",
                    "0.00372",
                    "0.00482",
                    "0.00478",
                    "0.00000"
                ],
                "dataset_name": "totalboundbits"
            },
            {
                "data": [
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336",
                    "0.00336"
                ],
                "dataset_name": "95_percentile"
            }
        ],
        "labels": [
            "2025-10-21 13:35:00",
            "2025-10-21 13:40:00",
            "2025-10-21 13:45:00",
            "2025-10-21 13:50:00",
            "2025-10-21 13:55:00",
            "2025-10-21 14:00:00",
            "2025-10-21 14:05:00",
            "2025-10-21 14:10:00",
            "2025-10-21 14:15:00",
            "2025-10-21 14:20:00",
            "2025-10-21 14:25:00",
            "2025-10-21 14:30:00",
            "2025-10-21 14:35:00"
        ]
    },
    "legend": {
        "header": [
            "Current",
            "Average",
            "Maximum",
            "95th %"
        ],
        "rows": [
            {
                "label": "In",
                "color": "#62C45E",
                "values": [
                    632798.1868925721,
                    1372582.1214573288,
                    2053141.22367529,
                    2053141.22367529
                ]
            },
            {
                "label": "Out",
                "color": "#2BA7FF",
                "values": [
                    639398.799042107,
                    1396441.8722763401,
                    1919831.1749942221,
                    1919831.1749942221
                ]
            }
        ],
        "format": "bits",
        "footer": "Total 670.81 GB  (In 332.34 GB  Out 338.47 GB)"
    },
    "units": {
        "traffic": "Mbps",
        "power_usage": "Amps"
    },
    "precision": {
        "traffic": "2"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/graphs/{id}/export

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the target. Example: 42

Body Parameters

type   string     

The type of graph to export, depending on the target. Example: AggregateTraffic

Must be one of:
  • AggregateTraffic
  • Load
  • OutletPowerUsage
  • Ping
  • PowerUsage
  • Sensor
  • ServerPowerUsage
  • Status
target   string     

The type of target to graph (e.g., service, itempowerport, itemsensor). Example: service

Must be one of:
  • service
  • itemPowerPort
  • itemSensor
start   string  optional    

Start datetime for the graph range in format Y-m-d H:i:s. Must be a valid date in the format Y-m-d H:i:s. Example: 2025-04-01 00:00:00

end   string  optional    

End datetime for the graph range in format Y-m-d H:i:s. Must be after or equal to start. Must be a valid date in the format Y-m-d H:i:s. Must be a date after or equal to start. Example: 2025-04-30 23:59:59

raw   boolean  optional    

Whether to return raw graph data. Example: false

OS Installation

List ISO Images

requires authentication

Returns a paginated list of ISO images available to the authenticated client.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/os/isoimages?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/os/isoimages'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/os/isoimages';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 92,
            "name": "illum-iso",
            "iso_url": "http://spinka.com/cumque-molestiae-dolor-consequuntur-optio.html",
            "status": 1,
            "download": {
                "status": "waiting",
                "message": "Waiting for ISO image download to start..."
            },
            "created_at": "2026-07-10 09:51:26",
            "updated_at": "2026-07-10 09:51:26"
        },
        {
            "id": 93,
            "name": "rerum-iso",
            "iso_url": "http://hoeger.com/",
            "status": 1,
            "download": {
                "status": "waiting",
                "message": "Waiting for ISO image download to start..."
            },
            "created_at": "2026-07-10 09:51:26",
            "updated_at": "2026-07-10 09:51:26"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/os/isoimages?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/os/isoimages",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/os/isoimages

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, iso_url, status. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, iso_url, status. Example: id

Create ISO Image

requires authentication

Creates a new ISO image for the authenticated client.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/os/isoimages" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Ubuntu Server ISO\",
    \"iso_url\": \"https:\\/\\/example.com\\/images\\/ubuntu.iso\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/os/isoimages'
payload = {
    "name": "Ubuntu Server ISO",
    "iso_url": "https:\/\/example.com\/images\/ubuntu.iso"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/os/isoimages';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Ubuntu Server ISO',
            'iso_url' => 'https://example.com/images/ubuntu.iso',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 94,
        "name": "voluptates-iso",
        "iso_url": "https://reilly.com/tempore-quaerat-voluptate-quia-rerum-sit-quas.html",
        "status": 1,
        "download": {
            "status": "waiting",
            "message": "Waiting for ISO image download to start..."
        },
        "created_at": "2026-07-10 09:51:26",
        "updated_at": "2026-07-10 09:51:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/os/isoimages

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The display name for the ISO image. Must not be greater than 255 characters. Example: Ubuntu Server ISO

iso_url   string     

Direct URL to the ISO file. Must be publicly accessible and point to a valid .iso resource. Must be a valid URL. Example: https://example.com/images/ubuntu.iso

Update ISO Image

requires authentication

Updates the name of an existing ISO image for the authenticated client.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/client/os/isoimages/3" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Updated ISO Name\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/os/isoimages/3'
payload = {
    "name": "Updated ISO Name"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/os/isoimages/3';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Updated ISO Name',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 95,
        "name": "consequatur-iso",
        "iso_url": "http://okon.com/quibusdam-tempore-aperiam-qui-adipisci-id-consequuntur-reiciendis",
        "status": 1,
        "download": {
            "status": "waiting",
            "message": "Waiting for ISO image download to start..."
        },
        "created_at": "2026-07-10 09:51:26",
        "updated_at": "2026-07-10 09:51:26"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

PUT api/v3/client/os/isoimages/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the ISO image to update. Example: 3

Body Parameters

name   string     

The new name for the ISO image. Must not be greater than 255 characters. Example: Updated ISO Name

Delete ISO Image

requires authentication

Deletes a specific ISO image belonging to the authenticated client.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/client/os/isoimages/3" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/os/isoimages/3'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/os/isoimages/3';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

DELETE api/v3/client/os/isoimages/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the ISO image to delete. Example: 3

List OS Templates

requires authentication

Returns a paginated list of OS templates available for the given service.

Optionally, you can include a list of addons (based on template tags) by using the with_addons query parameter.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123/os/templates?with_addons=1&per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/os/templates'
params = {
  'with_addons': '1',
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/os/templates';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'with_addons' => '1',
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 219,
            "template_id": 219,
            "name": "mollitia",
            "tags": [
                "nihil",
                "impedit",
                "vel",
                "soluta",
                "pariatur",
                "itaque"
            ],
            "architecture": "x86",
            "cache_folder": "sint",
            "mirror": "http://www.schowalter.biz/totam-ad-esse-odio-quia-quaerat-id",
            "edition": "ad",
            "iso_url": "http://gleichner.com/ut-et-accusamus-illo-mollitia-fugit-quod",
            "tftp_url": "http://www.blick.com/aut-quia-alias-aut-praesentium-quos-aut.html",
            "license": "commodi",
            "gpxe": "Porro ut adipisci nam quis non perferendis corporis.",
            "disk_layout": "Ea perferendis rem quam nihil vero est ab ipsum.",
            "packages": "Perferendis non incidunt magnam officia deleniti et.",
            "post_installation": "Optio architecto veritatis hic aut et.",
            "first_boot": "Quia cum officiis quasi dolorum perspiciatis quasi.",
            "extras": "Error magnam aut et aliquid ipsum ut placeat atque.",
            "timezone": "Pacific/Chatham",
            "language": "ha",
            "family": "",
            "is_windows": false,
            "is_rescue": false
        },
        {
            "id": 220,
            "template_id": 220,
            "name": "saepe",
            "tags": [
                "et",
                "delectus",
                "ut",
                "aut",
                "cumque",
                "iste"
            ],
            "architecture": "x64",
            "cache_folder": "vero",
            "mirror": "http://wolff.net/quaerat-aspernatur-minus-et-cupiditate-a-nesciunt-eius.html",
            "edition": "illum",
            "iso_url": "http://www.kemmer.com/ipsum-corrupti-at-ab-sint-atque-non.html",
            "tftp_url": "https://parker.com/doloribus-explicabo-doloribus-autem-ab-suscipit-vero.html",
            "license": "quis",
            "gpxe": "Qui sit officiis odit dolorum quidem mollitia minima.",
            "disk_layout": "Voluptas voluptatem ipsum et modi animi ut.",
            "packages": "Alias sed ipsum dolor dolorum voluptas.",
            "post_installation": "Odit exercitationem alias illum totam et et fugit.",
            "first_boot": "Eum earum ut consectetur culpa quia atque.",
            "extras": "Necessitatibus recusandae minima necessitatibus sunt cum nostrum quod.",
            "timezone": "America/Detroit",
            "language": "rw",
            "family": "",
            "is_windows": false,
            "is_rescue": false
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/services/{id}/os/templates?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/services/{id}/os/templates",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/os/templates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Query Parameters

with_addons   boolean  optional    

Optional. If set to true, includes a list of addons for each template. Example: true

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, edition, architecture, family. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, edition, architecture, tags, family. Example: id

List OS Addons

requires authentication

Returns a paginated list of OS addons available for the given service.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123/os/addons?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/os/addons'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/os/addons';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 86,
            "name": "Sadie Medhurst",
            "description": "Autem et placeat aliquam est sint pariatur.",
            "type": "firstboot",
            "tag": "explicabo non",
            "tags": [
                "explicabo",
                "non"
            ],
            "data": "Quia doloribus ut a."
        },
        {
            "id": 87,
            "name": "Prof. Garry Goodwin DDS",
            "description": "Sunt similique vel accusamus inventore consequatur ipsam sapiente.",
            "type": "disklayout",
            "tag": "qui cumque",
            "tags": [
                "qui",
                "cumque"
            ],
            "data": "Autem veritatis accusamus culpa error nobis tempora."
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/services/{id}/os/addons?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/services/{id}/os/addons",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/os/addons

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, name, type. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, name, type, tag. Example: id

Install OS on Device

requires authentication

Initiates OS installation on a device assigned to the given service

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/123/os/install" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"template\": 12,
    \"hostname\": \"server01.example.com\",
    \"username\": \"admin\",
    \"password\": \"secret123\",
    \"root_password\": \"rootsecret\",
    \"disk_addon\": 1,
    \"extras\": [
        16
    ],
    \"ssh_keys\": [
        8
    ]
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/os/install'
payload = {
    "template": 12,
    "hostname": "server01.example.com",
    "username": "admin",
    "password": "secret123",
    "root_password": "rootsecret",
    "disk_addon": 1,
    "extras": [
        16
    ],
    "ssh_keys": [
        8
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/os/install';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'template' => 12,
            'hostname' => 'server01.example.com',
            'username' => 'admin',
            'password' => 'secret123',
            'root_password' => 'rootsecret',
            'disk_addon' => 1,
            'extras' => [
                16,
            ],
            'ssh_keys' => [
                8,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 191,
        "device_id": 1108,
        "template_id": 221,
        "message": "Aut voluptatem nostrum consequuntur vitae nam.",
        "log": "",
        "created_at": "2026-07-10 09:51:27",
        "updated_at": "2026-07-10 09:51:27"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/os/install

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Body Parameters

template   integer     

ID or identifier of the OS template to install. Example: 12

hostname   string  optional    

Optional hostname for the new system. Example: server01.example.com

username   string     

Username for the new system. Example: admin

password   string     

Password for the user account. Example: secret123

root_password   string  optional    

Root password for the system (optional). Example: rootsecret

disk_addon   integer  optional    

Optional ID of an additional disk to use during installation. Example: 1

extras   integer[]  optional    
ssh_keys   integer[]  optional    

Cancel OS Installation

requires authentication

Attempts to cancel the operating system installation process

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/123/os/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/os/cancel'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/os/cancel';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/os/cancel

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

OS Installation Information

requires authentication

Returns details about the current OS installation process

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123/os/install/information" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/os/install/information'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/os/install/information';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 192,
        "device_id": 1109,
        "template_id": 222,
        "message": "Deserunt quasi temporibus dignissimos itaque eos consectetur.",
        "log": "",
        "created_at": "2026-07-10 09:51:27",
        "updated_at": "2026-07-10 09:51:27"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/os/install/information

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Enable Rescue Mode

requires authentication

Initiates rescue mode for the device assigned to the given service

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/123/os/rescue/enable" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/os/rescue/enable'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/os/rescue/enable';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 193,
        "device_id": 1110,
        "template_id": 223,
        "message": "Sunt inventore autem maxime omnis.",
        "log": "",
        "created_at": "2026-07-10 09:51:28",
        "updated_at": "2026-07-10 09:51:28"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/os/rescue/enable

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Rescue Mode Status

requires authentication

Returns the current rescue mode status

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123/os/rescue/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/os/rescue/status'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/os/rescue/status';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "inRescueMode": false
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/os/rescue/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Lock OS Installation

requires authentication

Added in 1.25.1
Locks the OS installation process for this device, preventing any OS reinstallation.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/client/services/123/os/lock" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/os/lock'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/os/lock';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

PUT api/v3/client/services/{id}/os/lock

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Unlock OS Installation

requires authentication

Added in 1.25.1
Unlocks the OS installation process for this device.

Example request:
curl --request PUT \
    "https://your-easydcim.com/api/v3/client/services/123/os/unlock" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/os/unlock'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/os/unlock';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

PUT api/v3/client/services/{id}/os/unlock

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

IPMI

BMC Cold Reset

requires authentication

Sends a cold reset command to the BMC (Baseboard Management Controller) of the device associated with the given service. This action forces a full reboot of the BMC, which may temporarily interrupt device management features.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/123/ipmi/bmc-reset-cold" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/ipmi/bmc-reset-cold'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/ipmi/bmc-reset-cold';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/ipmi/bmc-reset-cold

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Start noVNC Session

requires authentication

Initiates a remote IPMI proxy session to the BMC of the device associated with the given service. The proxy allows web-based access to the BMC for remote management tasks like KVM, virtual media, or BIOS configuration.

If a session cannot be established, an error with logs may be returned for debugging purposes.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/123/ipmi/novnc-connect" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/ipmi/novnc-connect'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/ipmi/novnc-connect';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "id": 91,
        "device_id": 1118,
        "url": "https://192.168.203.150/client/console/35762/uEaQQKFF/c1cd80059d82afc5a33a9195b7924161a0a8c40e",
        "status": 1,
        "message": "Enim sit est necessitatibus ipsum."
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/ipmi/novnc-connect

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Show IPMI console session information

Retrieves session-related data for an active IPMI proxy session

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/ipmi/console/information" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"3bf5By\",
    \"port\": 5901,
    \"token\": \"1784360e52abb6d874b92747ea9df6fabde33a20\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/ipmi/console/information'
payload = {
    "password": "3bf5By",
    "port": 5901,
    "token": "1784360e52abb6d874b92747ea9df6fabde33a20"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/ipmi/console/information';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'password' => '3bf5By',
            'port' => 5901,
            'token' => '1784360e52abb6d874b92747ea9df6fabde33a20',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "ipmi_username": "ipmi_username",
        "ipmi_password": "ipmi_password",
        "disable_login_buttons": "0"
    }
}
 

Request   

POST api/v3/client/ipmi/console/information

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

password   string     

The unique session password used to identify the IPMI proxy session. Example: 3bf5By

port   integer     

The port used for the proxy session. Example: 5901

token   string     

The unique session token used to identify the IPMI proxy session. Example: 1784360e52abb6d874b92747ea9df6fabde33a20

Update IPMI session activity

Updates the updated_at timestamp of an active IPMI proxy session.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/ipmi/console/activity" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"3bf5By\",
    \"port\": 5901,
    \"token\": \"1784360e52abb6d874b92747ea9df6fabde33a20\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/ipmi/console/activity'
payload = {
    "password": "3bf5By",
    "port": 5901,
    "token": "1784360e52abb6d874b92747ea9df6fabde33a20"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/ipmi/console/activity';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'password' => '3bf5By',
            'port' => 5901,
            'token' => '1784360e52abb6d874b92747ea9df6fabde33a20',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "2025-10-21 15:06:20",
    "data": null
}
 

Request   

POST api/v3/client/ipmi/console/activity

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

password   string     

The unique session password used to identify the IPMI proxy session. Example: 3bf5By

port   integer     

The port used for the proxy session. Example: 5901

token   string     

The unique session token used to identify the IPMI proxy session. Example: 1784360e52abb6d874b92747ea9df6fabde33a20

Close IPMI session

Terminates the IPMI proxy session. This is typically used when the user exits the remote console.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/ipmi/console/close" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"3bf5By\",
    \"port\": 5901,
    \"token\": \"1784360e52abb6d874b92747ea9df6fabde33a20\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/ipmi/console/close'
payload = {
    "password": "3bf5By",
    "port": 5901,
    "token": "1784360e52abb6d874b92747ea9df6fabde33a20"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/ipmi/console/close';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'password' => '3bf5By',
            'port' => 5901,
            'token' => '1784360e52abb6d874b92747ea9df6fabde33a20',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": null
}
 

Request   

POST api/v3/client/ipmi/console/close

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

password   string     

The unique session password used to identify the IPMI proxy session. Example: 3bf5By

port   integer     

The port used for the proxy session. Example: 5901

token   string     

The unique session token used to identify the IPMI proxy session. Example: 1784360e52abb6d874b92747ea9df6fabde33a20

Two-Factor Authentication

Enable two-factor authentication

requires authentication

Initializes the selected 2FA module for the logged-in client and returns configuration data such as a QR code and secret needed to complete setup.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/two-factor/enable" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"module_name\": \"Totp\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/two-factor/enable'
payload = {
    "module_name": "Totp"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/two-factor/enable';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'module_name' => 'Totp',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "Two-factor authentication has been enabled successfully.",
    "data": {
        "qr_code": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAADcAQMAAAAhlF3CAAAABlBMVEX///8AAABVwtN+AAAACXBIWXMAAA7EAAAOxAGVKw4bDDDCGUlEQVRYhe2YPW7DMAyFGXjw6CPoJvbFBMiAL5bcREfwqMEI+x6lxGmQWSzQaCgSfRpYPv5G5Hv+00mqug9ZLnqEsuxR9IYbvbrBKHLZU9bbnnTkPb6KjI4w4H7Qws9l0S2P9swZ0lpdA66SlssfgIL76Qij8tO7tb0h9YyBUmaR6YPYnaFFPOH55y0dOsN27L7M0yofTlcIa2ke9RTomTJebLn4wUGpYtYGJcCbIs19HhA5t9SqSRsnbfL6QaTgHYZa2AOsMt5PUT0gCiYNlYX39By+rqdvPSA+tDKud0GRorWjH0zZPAc9lXFu8p5iO0AzD7VytnLFRkdrWwp6wCFb4snMFKT7kIzMSDeYmHiIKHa7wheYB45TTweoCPaNpXPLJqos6LzqBxFb9oITibZgbwngAxP1HFgTUKkW+pBF9Klnf4gAu7KzceC2Co7pbchnxDvAx9xvL9TsDo6QkyRHOKtPmE04WG4qfjAy51axHQk1wZaT4dyR+kOU8dm6HadaZZRxWHKEdQOQ2lcYW6ovW6QPvFaTEWVqixJEfejpA20bmSetmxFeHOHlX+kNm6jwXLQixaqJwuUHbUfiGrDXjbb+BKB+0LZIMQHpSOsr8amnB2TER6sJnE0wuFFPb8jOC0NtkrRt6TU/PWCkofYCzYV9ZXSEth6ZqMJtKQj73mNwcYAt4qEi2hsGtzoZ/E6HrvB7vgfnBzwswUtTyEcKAAAAAElFTkSuQmCC",
        "secret_word": "DPVKWEKE6EOWOKWR"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/client/two-factor/enable

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

module_name   string     

The identifier of the 2FA module to enable. Currently supported: "Totp". Example: Totp

Must be one of:
  • Totp

Disable two-factor authentication

requires authentication

Validates the user's password and, if correct, disables 2FA and removes any stored configuration.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/two-factor/disable" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"user_current_password\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/two-factor/disable'
payload = {
    "password": "user_current_password"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/two-factor/disable';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'password' => 'user_current_password',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "Two-factor authentication has been disabled successfully.",
    "data": null
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/client/two-factor/disable

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

password   string     

The current password of the user, required to disable two-factor authentication. Example: user_current_password

Store and verify 2FA configuration

requires authentication

Verifies the provided 2FA code and secret, and stores the configuration if verification succeeds. Also returns a backup code for account recovery.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/two-factor/store" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"module_name\": \"Totp\",
    \"configuration\": {
        \"code\": \"123456\",
        \"secret_word\": \"JBSWY3DPEHPK3PXP\"
    }
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/two-factor/store'
payload = {
    "module_name": "Totp",
    "configuration": {
        "code": "123456",
        "secret_word": "JBSWY3DPEHPK3PXP"
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/two-factor/store';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'module_name' => 'Totp',
            'configuration' => [
                'code' => '123456',
                'secret_word' => 'JBSWY3DPEHPK3PXP',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "backup_code": "Wsg4Q 1ieF9 Rw6ID DIBrb"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/client/two-factor/store

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

module_name   string     

The identifier of the 2FA module to configure. Currently supported: "Totp". Example: Totp

Must be one of:
  • Totp
configuration   object     

Key-value configuration specific to the selected 2FA module. For the "Totp" module, the array must contain the fields: "code" (current token) and "secret_word" (shared secret).

Validate the second-factor authentication code after login

requires authentication

Verifies the submitted 2FA code using the user's default 2FA module. On success, marks the session as 2FA-authenticated.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/two-factor/validate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"configuration\": {
        \"code\": \"123456\"
    }
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/two-factor/validate'
payload = {
    "configuration": {
        "code": "123456"
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/two-factor/validate';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'configuration' => [
                'code' => '123456',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/client/two-factor/validate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

configuration   object     

Container for second-factor verification data.

code   string     

The 2FA code generated by the authenticator app. Must be at least 4 characters. Must not be greater than 10 characters. Example: 123456

Log in using a backup 2FA code

requires authentication

Validates the backup code stored during 2FA setup and marks the session as verified.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/two-factor/backup-code" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"MY-BACKUP-CODE-123\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/two-factor/backup-code'
payload = {
    "code": "MY-BACKUP-CODE-123"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/two-factor/backup-code';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'code' => 'MY-BACKUP-CODE-123',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": {
        "backup_code": "Wsg4Q 1ieF9 Rw6ID DIBrb"
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found."
}
 

Request   

POST api/v3/client/two-factor/backup-code

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

The backup code defined during 2FA setup. Must be at least 6 characters. Must not be greater than 255 characters. Example: MY-BACKUP-CODE-123

IP Address Management

List of IP addresses

requires authentication

This endpoint returns a paginated collection of IP addresses associated with the specified service.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123/ipaddresses?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=value" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/ipaddresses'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'value',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/ipaddresses';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'value',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 265,
            "item_id": 38,
            "device_label": "#38 web-prod-01 (PowerEdge R640)",
            "value": "200.94.209.231",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4",
            "subnet": {
                "id": 12,
                "pool": "200.94.209.0",
                "mask": 24,
                "cidr": "200.94.209.0/24"
            },
            "vlan": {
                "id": 7,
                "name": "Production",
                "vlan_id": 100
            }
        },
        {
            "id": 307,
            "item_id": 44,
            "value": "146.224.170.224",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 314,
            "item_id": 45,
            "value": "139.235.236.138",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 328,
            "item_id": 47,
            "value": "207.243.68.21",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 335,
            "item_id": 48,
            "value": "46.236.68.242",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 342,
            "item_id": 49,
            "value": "166.73.24.58",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 356,
            "item_id": 51,
            "value": "160.24.83.37",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 363,
            "item_id": 52,
            "value": "80.24.122.22",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 370,
            "item_id": 53,
            "value": "174.251.45.79",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        },
        {
            "id": 377,
            "item_id": 54,
            "value": "155.150.252.1",
            "description": "",
            "type": "primary",
            "ip_type": "ipv4"
        }
    ],
    "links": {
        "first": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=1",
        "last": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=16",
        "prev": null,
        "next": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 16,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=2",
                "label": "2",
                "page": 2,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=3",
                "label": "3",
                "page": 3,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=4",
                "label": "4",
                "page": 4,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=5",
                "label": "5",
                "page": 5,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=6",
                "label": "6",
                "page": 6,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=7",
                "label": "7",
                "page": 7,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=8",
                "label": "8",
                "page": 8,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=9",
                "label": "9",
                "page": 9,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=10",
                "label": "10",
                "page": 10,
                "active": false
            },
            {
                "url": null,
                "label": "...",
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=15",
                "label": "15",
                "page": 15,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=16",
                "label": "16",
                "page": 16,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/admin/ipam/ips?page=2",
                "label": "Next &raquo;",
                "page": 2,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/admin/ipam/ips",
        "per_page": 10,
        "to": 10,
        "total": 151,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/ipaddresses

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, item_id, value, description, type, ip_type. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: value, description, type, ip_type. Example: value

Update IP address description

requires authentication

Updates the description of an IP address entity associated with the device assigned to the specified service.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/123/ipaddresses/456" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"description\": \"Primary IP for web server\",
    \"ip_address\": \"192.168.56.1\"
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/ipaddresses/456'
payload = {
    "description": "Primary IP for web server",
    "ip_address": "192.168.56.1"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/ipaddresses/456';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'description' => 'Primary IP for web server',
            'ip_address' => '192.168.56.1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/ipaddresses/{entityId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

entityId   integer     

The ID of the IP address entity. Example: 456

Body Parameters

description   string  optional    

Description or label for the IP address. Example: Primary IP for web server

ip_address   string     

IP Address for which description will be updated. Example: 192.168.56.1

List of subnets

requires authentication

This endpoint returns a paginated collection of subnets associated with the specified service.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123/subnets?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=pool" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/subnets'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'pool',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/subnets';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'pool',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 124,
            "subnet": "118.163.50.0/24",
            "pool": "118.163.50.0",
            "mask": 24,
            "gateway": null,
            "type": "ipv4"
        },
        {
            "id": 125,
            "subnet": "101.160.74.0/24",
            "pool": "101.160.74.0",
            "mask": 24,
            "gateway": null,
            "type": "ipv4"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/services/{id}/subnets?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/services/{id}/subnets",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/subnets

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, pool, mask, gateway, type. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: pool, gateway, type. Example: pool

DNS Management

List rDNS records

requires authentication

This endpoint returns a paginated list of reverse DNS (rDNS) entries associated with the device assigned to the specified service.

Example request:
curl --request GET \
    --get "https://your-easydcim.com/api/v3/client/services/123/rdns?per_page=10&page=1&sort_by=id&sort_dir=asc&search_term=active%2Cpending&search_op=like&search_fields=id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/rdns'
params = {
  'per_page': '10',
  'page': '1',
  'sort_by': 'id',
  'sort_dir': 'asc',
  'search_term': 'active,pending',
  'search_op': 'like',
  'search_fields': 'id',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/rdns';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '10',
            'page' => '1',
            'sort_by' => 'id',
            'sort_dir' => 'asc',
            'search_term' => 'active,pending',
            'search_op' => 'like',
            'search_fields' => 'id',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success",
    "data": [
        {
            "id": 61,
            "device_id": 1125,
            "user_id": 5821,
            "server_id": 91,
            "ip": "194.126.98.255",
            "from": "osinski.com",
            "name": "fisher.com",
            "ttl": "3600",
            "created_at": "2026-07-10 09:51:37",
            "updated_at": "2026-07-10 09:51:37"
        },
        {
            "id": 62,
            "device_id": 1126,
            "user_id": 5829,
            "server_id": 92,
            "ip": "226.150.102.116",
            "from": "monahan.com",
            "name": "cruickshank.com",
            "ttl": "3600",
            "created_at": "2026-07-10 09:51:37",
            "updated_at": "2026-07-10 09:51:37"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://your-easydcim.com/api/v3/client/services/{id}/rdns?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://your-easydcim.com/api/v3/client/services/{id}/rdns",
        "per_page": 10,
        "to": 1,
        "total": 2,
        "sort_by": "",
        "sort_dir": null
    }
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

GET api/v3/client/services/{id}/rdns

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Query Parameters

per_page   integer  optional    

The number of items per page (min:1, max:100). Example: 10

page   integer  optional    

The page number of results to return. Example: 1

sort_by   string  optional    

The field to sort by. Allowed: id, device_id, user_id, server_id, ip, from, name, ttl, created_at. Example: id

sort_dir   string  optional    

The direction of sorting. Allowed values: asc, desc. Example: asc

search_term   string  optional    

Search value. For in/not_in provide comma-separated. For between provide two values comma-separated (from,to). Example: active,pending

search_op   string  optional    

How to apply search_term. Allowed: like (default), in, not_in, eq, neq, gt, gte, lt, lte, between. Example: like

search_fields   array|string  optional    

Optional. Restrict search to specific fields. Allowed: id, device_id, user_id, server_id, ip, from, name, created_at. Example: id

Create rDNS record

requires authentication

Stores a new reverse DNS (rDNS) entry for the device assigned to the given service.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/123/rdns" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"ip\": \"192.168.1.1\",
    \"rdata\": \"example.mydomain.com\",
    \"ttl\": 3600
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/rdns'
payload = {
    "ip": "192.168.1.1",
    "rdata": "example.mydomain.com",
    "ttl": 3600
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/rdns';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'ip' => '192.168.1.1',
            'rdata' => 'example.mydomain.com',
            'ttl' => 3600,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/rdns

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

Body Parameters

ip   string     

The IP address to associate with the reverse DNS record. Must be a valid IP address. Example: 192.168.1.1

rdata   string     

The domain name (PTR) that should resolve for the IP. Example: example.mydomain.com

ttl   integer  optional    

Optional TTL (Time To Live) value for the record in seconds. Must be at least 60. Example: 3600

Update rDNS record

requires authentication

Updates an existing reverse DNS (rDNS) record.

Example request:
curl --request POST \
    "https://your-easydcim.com/api/v3/client/services/123/rdns/456" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"rdata\": \"updated.example.net\",
    \"ttl\": 3600
}"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/rdns/456'
payload = {
    "rdata": "updated.example.net",
    "ttl": 3600
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/rdns/456';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'rdata' => 'updated.example.net',
            'ttl' => 3600,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

POST api/v3/client/services/{id}/rdns/{recordId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

recordId   integer     

The ID of the rDNS record. Example: 456

Body Parameters

rdata   string     

The domain name (PTR) to update for this record. Example: updated.example.net

ttl   integer  optional    

Optional TTL (Time To Live) value in seconds. Must be at least 60. Example: 3600

Delete rDNS record

requires authentication

Deletes a reverse DNS (rDNS) record that belongs to the device assigned to the specified service.

Example request:
curl --request DELETE \
    "https://your-easydcim.com/api/v3/client/services/123/rdns/456" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
import requests
import json

url = 'https://your-easydcim.com/api/v3/client/services/123/rdns/456'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://your-easydcim.com/api/v3/client/services/123/rdns/456';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "status": "success",
    "message": "success"
}
 

Example response (401, Unauthorized):


{
    "success": false,
    "status": "error",
    "message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
 

Example response (403, Forbidden):


{
    "success": false,
    "status": "error",
    "message": "Your account is inactive or banned.|Your access token does not have permission to impersonate other users.|Only admin users are allowed to impersonate other users."
}
 

Example response (404, Not Found):


{
    "success": false,
    "status": "error",
    "message": "Requested resource not found.|Impersonated user not found.|Service not found, inactive, or does not belong to you.|The requested entity does not exist or does not belong to you."
}
 

Request   

DELETE api/v3/client/services/{id}/rdns/{recordId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the service. Example: 123

recordId   integer     

The ID of the rDNS record. Example: 456