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"
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Tags
List Tags
requires authentication
Returns a paginated list of tags.
Show tag
requires authentication
Display detailed information about a single tag by its ID.
Create tag
requires authentication
Store a new tag in the system using validated request data.
Update tag
requires authentication
Updates the specified tag with provided data.
Delete tag
requires authentication
Removes the specified tag from the system.
Assign multiple tags to specified entity
requires authentication
Assigns multiple tags to specified entity
Unassign multiple tags from specified entity
requires authentication
Unassigns multiple tags from specified entity
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."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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));Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": "« 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 »",
"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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.