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 your token has the impersonate-users ability and your staff account has the Act as client via API permission (full administrators always have it), 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.
Only client accounts can be impersonated. Requests that target a staff or administrator account (including your own) are rejected with 403. The same rule applies to auto-login links.
Session tokens: Tokens returned by POST /api/v3/login expire after 1 day by default; token_ttl=0 requests the longest allowed lifetime (30 days by default). Tokens obtained from an auto-login link are valid for 30 minutes and cannot be used on /api/v3/admin endpoints. Changing the password or deactivating the account revokes session tokens; API tokens created in the control panel are not affected.
Token scopes: Every API token created in the control panel has an access scope. scope:read allows GET, HEAD and OPTIONS requests plus a few read-only POST endpoints (token check verify-token-ability, traffic and power statistics, graph export, IPMI power status, order stock search and logout). GET /api/v3/client/user/autologin issues a login link and needs scope:write. scope:write allows every request. A token can also be limited to permission groups (perm:<permission prefix>, for example perm:api_v3.admin.devices; perm:api_v3.client covers the client endpoints). A scope never grants more than the role of the token owner. Requests outside the scope are rejected with 403. Tokens created before scopes existed are marked legacy-full and keep the full rights of the owner; replace them with scoped tokens.
Token expiry: New tokens expire after 1 year by default (30 days, 90 days or no expiry can be chosen). The owner receives an e-mail 14 days before expiry. Expired tokens are rejected with 401.
Billing modules: A WHMCS EasyDCIMv2 token needs scope:write and impersonate-users, without a permission limit (the owner role decides which admin endpoints work). Test Connection also succeeds with a read-only token, but provisioning and client actions then fail with 403.
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/client-area/config" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://your-easydcim.com/api/v3/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/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\": false
},
\"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": false
},
"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' => false,
],
'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": 8090,
"app_id": null,
"name": "Glover Ltd",
"address": "187 Prince Mission\nEast Julien, MT 14536-6690",
"city": "Lake Dariusview",
"state": "Georgia",
"description": "Quae occaecati libero quis architecto ullam assumenda. Consequuntur nemo aut quibusdam reprehenderit eum non iste. Aut ut facere dolor voluptatem ratione ex.",
"notes": "Consequatur quod maiores voluptas ut sed. Eaque quaerat nisi voluptatem blanditiis aut.",
"emergency": "0",
"phone": "+1.469.300.5359",
"flag": "USA.png",
"created_at": "2026-11-02 08:35:00",
"updated_at": "2026-11-02 08:35:00"
},
{
"id": 8091,
"app_id": null,
"name": "Schulist Inc",
"address": "6902 Torey Falls\nWest Aureliofort, SC 67879",
"city": "Port Shanonburgh",
"state": "Ohio",
"description": "Quis non veniam occaecati doloremque rem. Cumque maxime non minus laboriosam. Et sed consequuntur facilis distinctio ut porro et. Corporis fuga laboriosam ea omnis omnis.",
"notes": "Quidem cumque consequatur quasi dignissimos praesentium quia. Aliquid quas dolores illo veniam odit eligendi cumque.",
"emergency": "0",
"phone": "949.490.4144",
"flag": "USA.png",
"created_at": "2026-11-02 08:35:01",
"updated_at": "2026-11-02 08:35:01"
}
],
"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": 8092,
"app_id": null,
"name": "Spinka PLC",
"address": "1098 Hoeger Junctions\nPort Yasmine, MI 95289",
"city": "Funkton",
"state": "Montana",
"description": "Architecto modi quaerat et qui quae. Nulla soluta excepturi harum qui. Aspernatur voluptatem tempore veritatis eligendi beatae consequatur. Velit qui temporibus quia totam.",
"notes": "Voluptatum id nihil est at animi. Et culpa autem alias natus. Voluptatibus nam facere non aliquam.",
"emergency": "1",
"phone": "559-624-0573",
"flag": "USA.png",
"created_at": "2026-11-02 08:35:02",
"updated_at": "2026-11-02 08:35:02"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 8093,
"app_id": null,
"name": "Ernser Inc",
"address": "9269 Casper Streets Suite 654\nRowechester, HI 53600",
"city": "Myriamborough",
"state": "Oklahoma",
"description": "Est similique aut sit qui. Ipsam recusandae sint iste dolores incidunt fugit. Recusandae labore eius id. Repudiandae et vel facere sit. Voluptas possimus maiores sed et amet nostrum reiciendis.",
"notes": "Tempore quis ut voluptatum. Tempora ut quis vero tenetur eos eveniet sint. Voluptatibus beatae quis nulla officia a quo sit optio. Enim autem dolores ut excepturi.",
"emergency": "1",
"phone": "+1-442-481-0176",
"flag": "Canada.png",
"created_at": "2026-11-02 08:35:03",
"updated_at": "2026-11-02 08:35: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.
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": 8094,
"app_id": null,
"name": "Feest-Rutherford",
"address": "9731 Altenwerth Street\nWest Hilda, IL 41253",
"city": "Schuppeborough",
"state": "Maryland",
"description": "Perferendis velit rerum facere eos. Blanditiis velit impedit exercitationem eius non. Et facere expedita rerum rerum nesciunt consequatur magnam. Qui tenetur aut nihil ullam facilis expedita vel occaecati.",
"notes": "Nulla labore sequi eveniet. Est nihil quisquam dolor quisquam aliquid neque.",
"emergency": "1",
"phone": "283-314-7647",
"flag": "UK.png",
"created_at": "2026-11-02 08:35:04",
"updated_at": "2026-11-02 08:35:04"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 1495,
"name": "pariatur",
"floor_id": 1550,
"location_id": 8095,
"description": "Quia nesciunt et ratione soluta velit voluptatum.",
"room": "pariatur",
"units_number": 89,
"weight": 53,
"speed": 100,
"manager_id": 14995,
"location": {
"id": 8095,
"app_id": null,
"name": "Jenkins, O'Keefe and Maggio",
"address": "761 Rohan Center\nEdaland, UT 25065",
"city": "North Paxton",
"state": "Mississippi",
"description": "Dolore saepe illum labore. Molestiae ut incidunt occaecati aperiam dolore esse optio aut. Aliquid optio sed qui. Illum sunt quia non possimus quibusdam.",
"notes": "Reprehenderit nobis aut ut saepe. Commodi delectus voluptatem quis similique. Soluta esse quis et quo ut quia. Numquam voluptatum voluptates labore enim est sint.",
"emergency": "0",
"phone": "(435) 356-6454",
"flag": "Germany.png",
"created_at": "2026-11-02 08:35:06",
"updated_at": "2026-11-02 08:35:06"
},
"floor": {
"id": 1550,
"name": "similique",
"number": 98,
"rows": 6,
"columns": 10,
"racks": [
{
"id": 1495,
"name": "pariatur"
}
],
"created_at": "2026-11-02 08:35:07",
"updated_at": "2026-11-02 08:35:07"
},
"manager": {
"id": 14995,
"username": "upowlowski",
"email": "[email protected]",
"name": "Jayne Kilback",
"firstname": "Jayne",
"lastname": "Kilback",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/5cf268d4450140f58f9cba2ae0515c63?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/5cf268d4450140f58f9cba2ae0515c63?s=130&d=mm&r=g",
"company_id": null,
"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-11-02 08:35:07",
"updated_at": "2026-11-02 08:35:07"
},
{
"id": 1496,
"name": "est",
"floor_id": 1551,
"location_id": 8097,
"description": "Maiores et non distinctio omnis.",
"room": "consectetur",
"units_number": 63,
"weight": 76,
"speed": 1000,
"manager_id": 14998,
"location": {
"id": 8097,
"app_id": null,
"name": "Fritsch-Ryan",
"address": "809 Leffler Views Suite 459\nNew Dusty, AL 44932-3261",
"city": "New Malliestad",
"state": "Arkansas",
"description": "Et et dolore quisquam minima officiis. Et dignissimos laudantium dignissimos quia. Molestiae consequatur sequi quo tempore voluptas.",
"notes": "Assumenda sapiente voluptas non. Est sed ut ut explicabo. Voluptatem dolor explicabo aliquid qui voluptatem amet. Optio maiores et officia suscipit soluta suscipit.",
"emergency": "1",
"phone": "1-360-649-9816",
"flag": "Germany.png",
"created_at": "2026-11-02 08:35:08",
"updated_at": "2026-11-02 08:35:08"
},
"floor": {
"id": 1551,
"name": "aut",
"number": 74,
"rows": 6,
"columns": 5,
"racks": [
{
"id": 1496,
"name": "est"
}
],
"created_at": "2026-11-02 08:35:09",
"updated_at": "2026-11-02 08:35:09"
},
"manager": {
"id": 14998,
"username": "pwunsch",
"email": "[email protected]",
"name": "Tyra Von",
"firstname": "Tyra",
"lastname": "Von",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/532b9933a3231d3aa4f9350f2ad04840?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/532b9933a3231d3aa4f9350f2ad04840?s=130&d=mm&r=g",
"company_id": null,
"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-11-02 08:35:09",
"updated_at": "2026-11-02 08:35:09"
}
],
"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": 1497,
"name": "recusandae",
"floor_id": 1552,
"location_id": 8099,
"description": "Non cum qui architecto iusto.",
"room": "est",
"units_number": 47,
"weight": 155,
"speed": 10,
"manager_id": 15001,
"location": {
"id": 8099,
"app_id": null,
"name": "Larkin, Sawayn and Morissette",
"address": "20700 Coy Village Suite 656\nPort Enriqueton, GA 05580",
"city": "Chetstad",
"state": "Utah",
"description": "Excepturi enim ut et dolores in qui consequatur. Voluptas similique eum asperiores. Eum beatae reiciendis fuga id voluptate et.",
"notes": "Nesciunt dolorem perspiciatis qui rerum quisquam. Unde qui qui ut hic qui. Suscipit error repudiandae qui est et eum. A aperiam iste eligendi voluptatibus voluptas soluta.",
"emergency": "1",
"phone": "+1-203-349-0040",
"flag": "USA.png",
"created_at": "2026-11-02 08:35:11",
"updated_at": "2026-11-02 08:35:11"
},
"floor": {
"id": 1552,
"name": "eum",
"number": 32,
"rows": 8,
"columns": 9,
"racks": [
{
"id": 1497,
"name": "recusandae"
}
],
"created_at": "2026-11-02 08:35:12",
"updated_at": "2026-11-02 08:35:12"
},
"manager": {
"id": 15001,
"username": "joan17",
"email": "[email protected]",
"name": "Lew Rolfson",
"firstname": "Lew",
"lastname": "Rolfson",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/23ed18ef522c5cbde508ff5fc5ab8211?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/23ed18ef522c5cbde508ff5fc5ab8211?s=130&d=mm&r=g",
"company_id": null,
"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-11-02 08:35:12",
"updated_at": "2026-11-02 08:35: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.
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": 1498,
"name": "aut",
"floor_id": 1553,
"location_id": 8101,
"description": "Sed quaerat doloremque vel mollitia reprehenderit eaque aut.",
"room": "porro",
"units_number": 30,
"weight": 173,
"speed": 100,
"manager_id": 15004,
"location": {
"id": 8101,
"app_id": null,
"name": "Pfannerstill PLC",
"address": "49585 Braun Gateway Apt. 560\nMcCulloughville, NC 96665",
"city": "Pricehaven",
"state": "Hawaii",
"description": "Architecto voluptatibus molestiae ut ad est officiis magni. Facere maiores voluptatem velit ut quidem eligendi. Molestiae perspiciatis sed qui ab voluptatem. Saepe sit quas est deleniti minima repellendus nulla nesciunt.",
"notes": "Iste consequatur sint qui et. Corrupti sed quia quisquam facere. Quae harum rem qui vel. Quae molestiae nesciunt expedita ut nihil aut molestias. Ipsum consequatur rerum quam.",
"emergency": "1",
"phone": "509-780-0200",
"flag": "UK.png",
"created_at": "2026-11-02 08:35:13",
"updated_at": "2026-11-02 08:35:13"
},
"floor": {
"id": 1553,
"name": "rerum",
"number": 94,
"rows": 6,
"columns": 8,
"racks": [
{
"id": 1498,
"name": "aut"
}
],
"created_at": "2026-11-02 08:35:14",
"updated_at": "2026-11-02 08:35:14"
},
"manager": {
"id": 15004,
"username": "savannah.williamson",
"email": "[email protected]",
"name": "Kyleigh Klein",
"firstname": "Kyleigh",
"lastname": "Klein",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/5dc66e8c7f8cb05fe863ae8b0a7d5836?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/5dc66e8c7f8cb05fe863ae8b0a7d5836?s=130&d=mm&r=g",
"company_id": null,
"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-11-02 08:35:14",
"updated_at": "2026-11-02 08:35: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 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": 1499,
"name": "alias",
"floor_id": 1554,
"location_id": 8103,
"description": "Dolorum et voluptas autem.",
"room": "repellendus",
"units_number": 63,
"weight": 56,
"speed": 100,
"manager_id": 15007,
"location": {
"id": 8103,
"app_id": null,
"name": "Carter, Auer and Romaguera",
"address": "132 Barton Skyway Suite 936\nNienowview, WI 54766",
"city": "Cristobalfurt",
"state": "Kansas",
"description": "Voluptates nostrum occaecati temporibus quis. Debitis libero soluta vel ut quia. Qui voluptatem quaerat ea magni omnis autem placeat. Ut voluptas autem excepturi corporis rerum sunt. Consequatur distinctio ducimus ipsa recusandae repellendus libero exercitationem.",
"notes": "Consequuntur vero aut optio consequuntur reiciendis. Repellendus omnis aspernatur vero enim assumenda. Neque et corporis animi aliquid cumque. Neque amet quasi dolor.",
"emergency": "1",
"phone": "(575) 744-3994",
"flag": "UK.png",
"created_at": "2026-11-02 08:35:15",
"updated_at": "2026-11-02 08:35:15"
},
"floor": {
"id": 1554,
"name": "accusantium",
"number": 57,
"rows": 8,
"columns": 7,
"racks": [
{
"id": 1499,
"name": "alias"
}
],
"created_at": "2026-11-02 08:35:16",
"updated_at": "2026-11-02 08:35:16"
},
"manager": {
"id": 15007,
"username": "sonia.kreiger",
"email": "[email protected]",
"name": "Janis Koepp",
"firstname": "Janis",
"lastname": "Koepp",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/97b899aac70c5f9f98fdb8ff9a1ff748?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/97b899aac70c5f9f98fdb8ff9a1ff748?s=130&d=mm&r=g",
"company_id": null,
"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-11-02 08:35:16",
"updated_at": "2026-11-02 08:35:16"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 1555,
"name": "quasi",
"number": 27,
"rows": 9,
"columns": 2,
"racks": [],
"created_at": "2026-11-02 08:35:18",
"updated_at": "2026-11-02 08:35:18"
},
{
"id": 1556,
"name": "aspernatur",
"number": 26,
"rows": 7,
"columns": 10,
"racks": [],
"created_at": "2026-11-02 08:35:19",
"updated_at": "2026-11-02 08:35:19"
}
],
"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": 1557,
"name": "explicabo",
"number": 0,
"rows": 3,
"columns": 9,
"racks": [],
"created_at": "2026-11-02 08:35:20",
"updated_at": "2026-11-02 08:35:20"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 1558,
"name": "necessitatibus",
"number": 40,
"rows": 8,
"columns": 3,
"racks": [],
"created_at": "2026-11-02 08:35:21",
"updated_at": "2026-11-02 08:35: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.
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": 1559,
"name": "maiores",
"number": 45,
"rows": 6,
"columns": 7,
"racks": [],
"created_at": "2026-11-02 08:35:22",
"updated_at": "2026-11-02 08:35: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.
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": 3955,
"name": "ut",
"label": "omnis",
"type_id": 4825,
"type": {
"id": 4825,
"name": "maxime"
},
"location_id": 8110,
"status": "in_use",
"description": "Eos facilis consectetur atque.",
"is_part": true,
"mountable": false,
"manufacturer": "Armstrong and Sons",
"position": "dignissimos",
"size": 0,
"image": "https://via.placeholder.com/640x480.png/007755?text=et",
"data_ports": 3,
"serialnumber1": "9941cca8-45da-3bf6-8257-5512be145955",
"serialnumber2": "9020dcb1-565f-3f7d-bdb8-5f6594da0cbf",
"service_tag": "e2a2e8ea-4409-3a60-8efc-e0931b939e49",
"comments": "Eligendi non ducimus ullam pariatur et. Dolorem est maxime maiores optio est ea. Totam corporis et quod et. Iure ut a ut repellat quo provident libero culpa.",
"notes": "Accusamus hic rerum dolores consequatur id aut deleniti aut. Aut voluptas modi aut sit praesentium ipsa. Voluptatem dolorem animi alias.",
"purchase_date": "1981-10-02",
"warranty_months": 21,
"warranty_info": "Numquam doloribus repellat ea ducimus laboriosam.",
"function": "dolore",
"maintenance_instruction": "Et veniam nisi laudantium repellat. Neque sit sint corporis non ut corporis est. Id sint corporis qui et. Numquam dignissimos exercitationem voluptas hic.",
"origin": "Myanmar",
"buy_price": 901.75,
"appdata": "a:1:{s:3:\"key\";s:8:\"sapiente\";}",
"fields_data": "a:1:{s:5:\"field\";s:5:\"harum\";}",
"parts_data": "a:1:{s:4:\"part\";s:8:\"voluptas\";}",
"created_at": "2026-11-02T07:35:23.000000Z",
"updated_at": "2026-11-02T07:35:23.000000Z"
},
{
"id": 3956,
"name": "delectus",
"label": "quis",
"type_id": 4826,
"type": {
"id": 4826,
"name": "totam"
},
"location_id": 8111,
"status": "in_use",
"description": "Aut commodi aut omnis eos.",
"is_part": false,
"mountable": true,
"manufacturer": "McGlynn Ltd",
"position": "voluptatem",
"size": 0,
"image": "https://via.placeholder.com/640x480.png/004433?text=aut",
"data_ports": 7,
"serialnumber1": "c3e0f283-c267-3281-8d56-c626fcf083fe",
"serialnumber2": "571340aa-d53f-3256-865e-b5db89f5aafb",
"service_tag": "10eee718-cc33-3ca5-aeaa-b7a703943f50",
"comments": "Et numquam a eum fugit ea et quam. Veritatis similique error voluptatem quia accusamus reprehenderit. Necessitatibus sapiente impedit perferendis eaque ut. Fugit qui minus iure qui eum.",
"notes": "At nihil doloremque quasi. Qui aut a quo et et commodi ducimus. Laboriosam amet aliquid consequatur perspiciatis maxime minus. Eum occaecati eos et et quo.",
"purchase_date": "1977-06-30",
"warranty_months": 14,
"warranty_info": "Reiciendis incidunt perspiciatis minima harum earum qui voluptatem.",
"function": "ad",
"maintenance_instruction": "Et repellat velit repudiandae et laboriosam. Quia minus et quos dolor esse fugit est. Quod et repellat et sequi inventore cupiditate voluptatem eum.",
"origin": "Palau",
"buy_price": 437.15,
"appdata": "a:1:{s:3:\"key\";s:11:\"repudiandae\";}",
"fields_data": "a:1:{s:5:\"field\";s:7:\"commodi\";}",
"parts_data": "a:1:{s:4:\"part\";s:5:\"dicta\";}",
"created_at": "2026-11-02T07:35:24.000000Z",
"updated_at": "2026-11-02T07:35:24.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": 3957,
"name": "quidem",
"label": "nemo",
"type_id": 4827,
"type": {
"id": 4827,
"name": "consequatur"
},
"location_id": 8112,
"status": "available",
"description": "Illum consequatur id saepe rerum aspernatur.",
"is_part": true,
"mountable": false,
"manufacturer": "Hickle-Casper",
"position": "et",
"size": 0,
"image": "https://via.placeholder.com/640x480.png/0044ff?text=aspernatur",
"data_ports": 7,
"serialnumber1": "e0c38e55-e08c-3fee-b522-1a1b09488840",
"serialnumber2": "a0e5315e-5266-3c84-918c-6e5cacfd735a",
"service_tag": "232c5cb5-72d8-321f-b248-d8e77fcfae29",
"comments": "Unde distinctio et veniam vitae qui. Beatae aperiam commodi praesentium perspiciatis accusamus assumenda. Tempore mollitia quia cum rem.",
"notes": "Mollitia impedit eaque sed dolore labore accusamus reiciendis. Cupiditate vero voluptates sapiente blanditiis saepe odio. Atque et ea consequatur id est fuga ut. Vel quas molestias numquam non quo.",
"purchase_date": "1985-06-14",
"warranty_months": 28,
"warranty_info": "Vero dolorum occaecati qui ullam praesentium non et sed.",
"function": "voluptatem",
"maintenance_instruction": "Sed ipsam nulla et nesciunt perferendis tempore dolorum. Ut laudantium consequuntur eius iste quia. Id fuga nobis sunt molestiae quo itaque molestiae.",
"origin": "Cook Islands",
"buy_price": 530.15,
"appdata": "a:1:{s:3:\"key\";s:3:\"qui\";}",
"fields_data": "a:1:{s:5:\"field\";s:4:\"eius\";}",
"parts_data": "a:1:{s:4:\"part\";s:9:\"excepturi\";}",
"created_at": "2026-11-02T07:35:25.000000Z",
"updated_at": "2026-11-02T07:35:25.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\": \"ozglataivsltqhwofrgboeze\",
\"serialnumber1\": \"SN123456789\",
\"serialnumber2\": \"SN987654321\",
\"service_tag\": \"ST-001122\",
\"comments\": \"nymlvloybqznmueslo\",
\"notes\": \"kcduacsryiegqiihhbzjaycgs\",
\"purchase_date\": \"2026-11-02T08:35:25\",
\"warranty_months\": 36,
\"warranty_info\": \"tjpss\",
\"function\": \"vcqohgpsajyj\",
\"maintenance_instruction\": \"tswtz\",
\"origin\": \"hfd\",
\"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": "ozglataivsltqhwofrgboeze",
"serialnumber1": "SN123456789",
"serialnumber2": "SN987654321",
"service_tag": "ST-001122",
"comments": "nymlvloybqznmueslo",
"notes": "kcduacsryiegqiihhbzjaycgs",
"purchase_date": "2026-11-02T08:35:25",
"warranty_months": 36,
"warranty_info": "tjpss",
"function": "vcqohgpsajyj",
"maintenance_instruction": "tswtz",
"origin": "hfd",
"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' => 'ozglataivsltqhwofrgboeze',
'serialnumber1' => 'SN123456789',
'serialnumber2' => 'SN987654321',
'service_tag' => 'ST-001122',
'comments' => 'nymlvloybqznmueslo',
'notes' => 'kcduacsryiegqiihhbzjaycgs',
'purchase_date' => '2026-11-02T08:35:25',
'warranty_months' => 36,
'warranty_info' => 'tjpss',
'function' => 'vcqohgpsajyj',
'maintenance_instruction' => 'tswtz',
'origin' => 'hfd',
'buy_price' => 2500.0,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"id": 3958,
"name": "ea",
"label": "maiores",
"type_id": 4828,
"type": {
"id": 4828,
"name": "dolorum"
},
"location_id": 8113,
"status": "unavailable",
"description": "Et voluptatem in itaque odio hic suscipit neque.",
"is_part": true,
"mountable": false,
"manufacturer": "Kautzer LLC",
"position": "laudantium",
"size": 0,
"image": "https://via.placeholder.com/640x480.png/00aadd?text=consequuntur",
"data_ports": 4,
"serialnumber1": "99121eb1-5bec-3a3f-a207-9e7dbd00d29d",
"serialnumber2": "e7a7cc9b-abb6-3f77-b63c-5350edbd99f5",
"service_tag": "fb25f288-d286-34ac-ad60-a3aec95854d1",
"comments": "Maiores expedita fugiat praesentium voluptas molestiae animi. Voluptas cupiditate consequatur reiciendis quia. Qui quia maiores omnis ad. Nesciunt tempora iusto molestiae sunt itaque doloribus quia.",
"notes": "Vel rerum alias officiis et saepe et. Dicta esse adipisci animi suscipit. Mollitia aut tempore nesciunt voluptate. Ipsa animi deserunt totam illo. Voluptate laborum voluptatem qui quod.",
"purchase_date": "2004-07-19",
"warranty_months": 13,
"warranty_info": "Iste possimus omnis perferendis aut autem id corrupti.",
"function": "amet",
"maintenance_instruction": "Consequatur eum ipsum et similique est. Ad qui autem commodi corporis laboriosam aut maxime. Deserunt id cupiditate beatae.",
"origin": "Somalia",
"buy_price": 626.1,
"appdata": "a:1:{s:3:\"key\";s:8:\"quisquam\";}",
"fields_data": "a:1:{s:5:\"field\";s:2:\"ut\";}",
"parts_data": "a:1:{s:4:\"part\";s:2:\"et\";}",
"created_at": "2026-11-02T07:35:27.000000Z",
"updated_at": "2026-11-02T07:35:27.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\": \"ogvvrnojrslnwqzavvca\",
\"serialnumber1\": \"SN123456789\",
\"serialnumber2\": \"SN987654321\",
\"service_tag\": \"ST-001122\",
\"comments\": \"kbkbvumrlclhntrvu\",
\"notes\": \"lndwrpzoddvfjxbenrv\",
\"purchase_date\": \"2026-11-02T08:35:27\",
\"warranty_months\": 36,
\"warranty_info\": \"mekcsnmhyioepapfnwhmsd\",
\"function\": \"gxzuhjcrvrbfxckhassw\",
\"maintenance_instruction\": \"dbbne\",
\"origin\": \"vfloqfowbmk\",
\"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": "ogvvrnojrslnwqzavvca",
"serialnumber1": "SN123456789",
"serialnumber2": "SN987654321",
"service_tag": "ST-001122",
"comments": "kbkbvumrlclhntrvu",
"notes": "lndwrpzoddvfjxbenrv",
"purchase_date": "2026-11-02T08:35:27",
"warranty_months": 36,
"warranty_info": "mekcsnmhyioepapfnwhmsd",
"function": "gxzuhjcrvrbfxckhassw",
"maintenance_instruction": "dbbne",
"origin": "vfloqfowbmk",
"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' => 'ogvvrnojrslnwqzavvca',
'serialnumber1' => 'SN123456789',
'serialnumber2' => 'SN987654321',
'service_tag' => 'ST-001122',
'comments' => 'kbkbvumrlclhntrvu',
'notes' => 'lndwrpzoddvfjxbenrv',
'purchase_date' => '2026-11-02T08:35:27',
'warranty_months' => 36,
'warranty_info' => 'mekcsnmhyioepapfnwhmsd',
'function' => 'gxzuhjcrvrbfxckhassw',
'maintenance_instruction' => 'dbbne',
'origin' => 'vfloqfowbmk',
'buy_price' => 2500.0,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"id": 3959,
"name": "consequuntur",
"label": "ducimus",
"type_id": 4829,
"type": {
"id": 4829,
"name": "sint"
},
"location_id": 8114,
"status": "available",
"description": "Cupiditate occaecati ratione aspernatur repudiandae incidunt illum quas.",
"is_part": true,
"mountable": false,
"manufacturer": "Towne-Collins",
"position": "odit",
"size": 0,
"image": "https://via.placeholder.com/640x480.png/009966?text=est",
"data_ports": 10,
"serialnumber1": "98a190a2-e728-33b5-80d7-4cbaaacc597e",
"serialnumber2": "155ecad8-f10b-3475-bb0e-083d03be7831",
"service_tag": "1990efbe-632d-3abd-8a15-410dde92ab50",
"comments": "Dolorem aliquid natus molestiae accusamus. Laudantium quos mollitia maxime laborum placeat. Aspernatur voluptas repudiandae recusandae voluptatem.",
"notes": "Soluta hic adipisci consequuntur molestiae ut. Sed amet non dolorum aspernatur illum optio. Veniam commodi maiores in autem. Ducimus voluptatem harum iure sed.",
"purchase_date": "2010-01-28",
"warranty_months": 22,
"warranty_info": "Non voluptatem quasi consequatur laudantium cumque.",
"function": "qui",
"maintenance_instruction": "Ad doloribus voluptatem dolorem a. Minus et alias voluptates consequatur. Corrupti ullam neque animi molestiae sunt nihil possimus et. Quasi aut magni unde natus consequuntur.",
"origin": "Cocos (Keeling) Islands",
"buy_price": 183.27,
"appdata": "a:1:{s:3:\"key\";s:4:\"quos\";}",
"fields_data": "a:1:{s:5:\"field\";s:8:\"voluptas\";}",
"parts_data": "a:1:{s:4:\"part\";s:6:\"maxime\";}",
"created_at": "2026-11-02T07:35:28.000000Z",
"updated_at": "2026-11-02T07:35:28.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": 15018,
"username": "tkreiger",
"email": "[email protected]",
"name": "Bridgette Lehner",
"firstname": "Bridgette",
"lastname": "Lehner",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/4ce522d17075d3ca59188971edad5e87?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/4ce522d17075d3ca59188971edad5e87?s=130&d=mm&r=g",
"company_id": null,
"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": 15019,
"username": "von.stanton",
"email": "[email protected]",
"name": "Felipa Kuhlman",
"firstname": "Felipa",
"lastname": "Kuhlman",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/a87ac3fd194e82d4ea1d52c2df34809b?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/a87ac3fd194e82d4ea1d52c2df34809b?s=130&d=mm&r=g",
"company_id": null,
"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": 15020,
"username": "douglas.karlee",
"email": "[email protected]",
"name": "Evans Luettgen",
"firstname": "Evans",
"lastname": "Luettgen",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/f2605261654fd0ab62c140bd09868651?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/f2605261654fd0ab62c140bd09868651?s=130&d=mm&r=g",
"company_id": null,
"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": 15021,
"username": "deanna.denesik",
"email": "[email protected]",
"name": "Kacey Wisozk",
"firstname": "Kacey",
"lastname": "Wisozk",
"devices": [],
"orders": [],
"gender": "0",
"avatar": "//www.gravatar.com/avatar/e5416f336289a9766af2f28caf1911c0?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/e5416f336289a9766af2f28caf1911c0?s=130&d=mm&r=g",
"company_id": null,
"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_id\": 12,
\"company\": \"Example Ltd\",
\"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_id": 12,
"company": "Example Ltd",
"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_id' => 12,
'company' => 'Example Ltd',
'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": 15022,
"username": "gina.metz",
"email": "[email protected]",
"name": "Ellis Quigley",
"firstname": "Ellis",
"lastname": "Quigley",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/ad19678fc5e55136095e5972c7a4b570?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/ad19678fc5e55136095e5972c7a4b570?s=130&d=mm&r=g",
"company_id": null,
"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_id\": 12,
\"company\": \"Example Ltd\",
\"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_id": 12,
"company": "Example Ltd",
"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_id' => 12,
'company' => 'Example Ltd',
'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": 15023,
"username": "herzog.roscoe",
"email": "[email protected]",
"name": "Ona Skiles",
"firstname": "Ona",
"lastname": "Skiles",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/c27146a3715f5530f93f1d3fd8641053?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/c27146a3715f5530f93f1d3fd8641053?s=130&d=mm&r=g",
"company_id": null,
"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\": [
8
],
\"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": [
8
],
"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' => [
8,
],
'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
For impersonate-users the token must hold the exact ability and its owner must be an
active staff account with the "Act as client via API" permission. deprecated is true for a
legacy full-access token; it keeps working, but should be replaced with a scoped token.
expires_at is the token's own expiry, or null when it never expires.
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": [
"scope:write",
"impersonate-users"
],
"valid": true,
"deprecated": false,
"expires_at": "2027-10-22T10:00:00+00: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.
Companies
List companies.
requires authentication
Example request:
curl --request GET \
--get "https://your-easydcim.com/api/v3/admin/companies?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/companies'
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/companies';
$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": 71,
"name": "Hyatt-Cronin",
"status": "active",
"notes": null,
"users_count": 0,
"devices_count": 0,
"orders_count": 0,
"created_at": "2026-11-02T07:35:28.000000Z",
"updated_at": "2026-11-02T07:35:28.000000Z"
},
{
"id": 72,
"name": "Sporer, Ondricka and Carter",
"status": "active",
"notes": null,
"users_count": 0,
"devices_count": 0,
"orders_count": 0,
"created_at": "2026-11-02T07:35:28.000000Z",
"updated_at": "2026-11-02T07:35:28.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/companies?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "https://your-easydcim.com/api/v3/admin/companies",
"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 company details.
requires authentication
Example request:
curl --request GET \
--get "https://your-easydcim.com/api/v3/admin/companies/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/companies/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/companies/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": 73,
"name": "Gulgowski-Hilpert",
"status": "active",
"notes": null,
"users": [],
"contacts": [],
"devices": [],
"orders": []
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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 a company.
requires authentication
Example request:
curl --request POST \
"https://your-easydcim.com/api/v3/admin/companies" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"yixsxpctyxqylyaukgckay\",
\"status\": \"archived\",
\"notes\": \"voluptatem\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/admin/companies'
payload = {
"name": "yixsxpctyxqylyaukgckay",
"status": "archived",
"notes": "voluptatem"
}
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/companies';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'yixsxpctyxqylyaukgckay',
'status' => 'archived',
'notes' => 'voluptatem',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"id": 74,
"name": "Kub Group",
"status": "active",
"notes": null,
"users_count": 0,
"devices_count": 0,
"orders_count": 0,
"created_at": "2026-11-02T07:35:28.000000Z",
"updated_at": "2026-11-02T07:35:28.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 a company.
requires authentication
Example request:
curl --request PUT \
"https://your-easydcim.com/api/v3/admin/companies/5" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"bihbzt\",
\"status\": \"archived\",
\"notes\": \"voluptatem\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/admin/companies/5'
payload = {
"name": "bihbzt",
"status": "archived",
"notes": "voluptatem"
}
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/companies/5';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'bihbzt',
'status' => 'archived',
'notes' => 'voluptatem',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"id": 75,
"name": "O'Keefe Group",
"status": "active",
"notes": null,
"users_count": 0,
"devices_count": 0,
"orders_count": 0,
"created_at": "2026-11-02T07:35:28.000000Z",
"updated_at": "2026-11-02T07:35:28.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.
Archive a company.
requires authentication
Example request:
curl --request POST \
"https://your-easydcim.com/api/v3/admin/companies/5/archive" \
--header "Authorization: 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/companies/5/archive'
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/companies/5/archive';
$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": 76,
"name": "Beatty-Marvin",
"status": "active",
"notes": null,
"users_count": 0,
"devices_count": 0,
"orders_count": 0,
"created_at": "2026-11-02T07:35:28.000000Z",
"updated_at": "2026-11-02T07:35:28.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 an empty company.
requires authentication
Example request:
curl --request DELETE \
"https://your-easydcim.com/api/v3/admin/companies/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/companies/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/companies/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.
Assign a user to an active company.
requires authentication
Example request:
curl --request POST \
"https://your-easydcim.com/api/v3/admin/companies/5/users" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"user_id\": 19
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/admin/companies/5/users'
payload = {
"user_id": 19
}
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/companies/5/users';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'user_id' => 19,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"id": 15024,
"username": "morar.judah",
"email": "[email protected]",
"name": "Darrin Okuneva",
"firstname": "Darrin",
"lastname": "Okuneva",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/e1df39cc83a9d4d1008cdb85a2bbeebd?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/e1df39cc83a9d4d1008cdb85a2bbeebd?s=130&d=mm&r=g",
"company_id": null,
"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.
Remove a user from a company.
requires authentication
Example request:
curl --request DELETE \
"https://your-easydcim.com/api/v3/admin/companies/5/users/8" \
--header "Authorization: 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/companies/5/users/8'
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/companies/5/users/8';
$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",
"data": {
"id": 15025,
"username": "greenfelder.wiley",
"email": "[email protected]",
"name": "Ken Kovacek",
"firstname": "Ken",
"lastname": "Kovacek",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/cf488cfea50c622bddbdb9f92a4a48ce?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/cf488cfea50c622bddbdb9f92a4a48ce?s=130&d=mm&r=g",
"company_id": null,
"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.
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": 9896,
"name": null,
"description": "Nostrum fugiat perferendis consectetur qui molestiae accusantium totam.",
"item_id": 3066,
"colocation_id": 0,
"connected_item": null,
"connected_port": null,
"port_number": 2,
"port_index": 66,
"port_mode": "access",
"port_label": "provident",
"user_label": "eos",
"speed": "100",
"high_speed": "10000",
"if_type": "201",
"physaddress": "40:E0:CF:26:39:AA",
"pullable": 0,
"primary": 1,
"vlan": 0,
"vlans": [],
"opstate": "down",
"adminstate": "up",
"type": "",
"ifInUcastPkts": 3335,
"ifOutUcastPkts": 1110,
"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-11-02 08:35:33",
"updated_at": "2026-11-02 08:35:33"
},
{
"id": 9897,
"name": null,
"description": "Fuga a dignissimos quidem esse perferendis et porro velit.",
"item_id": 3067,
"colocation_id": 0,
"connected_item": null,
"connected_port": null,
"port_number": 26,
"port_index": 39,
"port_mode": "trunk",
"port_label": "sit",
"user_label": "consequuntur",
"speed": "1000",
"high_speed": "1000",
"if_type": "198",
"physaddress": "40:E5:43:7E:0A:05",
"pullable": 1,
"primary": 0,
"vlan": 0,
"vlans": [],
"opstate": "down",
"adminstate": "down",
"type": "",
"ifInUcastPkts": 7861,
"ifOutUcastPkts": 7495,
"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-11-02 08:35:37",
"updated_at": "2026-11-02 08:35: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/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": 9898,
"name": null,
"description": "Qui culpa ea occaecati sint laborum qui.",
"item": null,
"colocation": null,
"connected_item": null,
"connected_port": null,
"port_number": 16,
"port_index": 94,
"port_mode": "access",
"port_label": "qui",
"user_label": "possimus",
"speed": "10000",
"high_speed": "100",
"if_type": "105",
"physaddress": "AF:A4:CD:E1:1D:0A",
"pullable": 0,
"primary": 0,
"vlan": 0,
"vlans": [],
"opstate": "down",
"adminstate": "down",
"type": "",
"ifInUcastPkts": 9810,
"ifOutUcastPkts": 1919,
"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-11-02 08:35:40",
"updated_at": "2026-11-02 08:35: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.
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": 9899,
"name": null,
"description": "Ut qui rem odit molestiae et qui sit.",
"item": null,
"colocation": null,
"connected_item": null,
"connected_port": null,
"port_number": 16,
"port_index": 60,
"port_mode": "access",
"port_label": "rerum",
"user_label": "est",
"speed": "100",
"high_speed": "1000",
"if_type": "66",
"physaddress": "E0:80:7D:D8:37:CF",
"pullable": 0,
"primary": 1,
"vlan": 0,
"vlans": [],
"opstate": "down",
"adminstate": "up",
"type": "",
"ifInUcastPkts": 7691,
"ifOutUcastPkts": 1562,
"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-11-02 08:35:42",
"updated_at": "2026-11-02 08:35: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 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": 9900,
"name": null,
"description": "Odit tenetur natus sequi et ea eaque.",
"item": {
"id": 3070,
"name": null,
"label": "vero",
"type_id": 4838,
"location_id": 8124,
"status": "available",
"description": "Nihil qui veniam exercitationem necessitatibus.",
"is_part": false,
"mountable": true,
"manufacturer": "Hane Group",
"position": null,
"size": 8,
"image": null,
"data_ports": 0,
"serialnumber1": "SN064HL",
"serialnumber2": null,
"service_tag": "ST640AK",
"comments": null,
"notes": null,
"purchase_date": "2025-11-02",
"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-11-02T07:35:42.000000Z",
"updated_at": "2026-11-02T07:35:42.000000Z"
},
"colocation": null,
"connected_item": null,
"connected_port": null,
"port_number": 30,
"port_index": 89,
"port_mode": "access",
"port_label": "perspiciatis",
"user_label": "sint",
"speed": "100",
"high_speed": "10000",
"if_type": "123",
"physaddress": "CE:14:D4:18:EA:76",
"pullable": 0,
"primary": 1,
"vlan": 0,
"vlans": [],
"opstate": "up",
"adminstate": "up",
"type": "",
"ifInUcastPkts": 4913,
"ifOutUcastPkts": 1930,
"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-11-02 08:35:45",
"updated_at": "2026-11-02 08:35: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.
Replace VLAN assignments on a network port.
requires authentication
Send the complete list of VLAN record IDs. Sending an empty list removes all VLAN assignments from the port.
Supported managed switch drivers are Arista vEOS, Cisco NX-API, HPE Comware, Juniper Junos 12, and Juniper Junos 20. Unsupported drivers return an error without changing local VLAN assignments.
Example request:
curl --request PUT \
"https://your-easydcim.com/api/v3/admin/ports/1/vlans" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"vlan_ids\": [
13
]
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/admin/ports/1/vlans'
payload = {
"vlan_ids": [
13
]
}
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/vlans';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'vlan_ids' => [
13,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"id": 9901,
"name": null,
"description": "Quam sint nobis est aliquid fugit.",
"item": null,
"colocation": null,
"connected_item": null,
"connected_port": null,
"port_number": 34,
"port_index": 10,
"port_mode": "trunk",
"port_label": "reprehenderit",
"user_label": "dolorem",
"speed": "1000",
"high_speed": "100",
"if_type": "114",
"physaddress": "5A:0E:38:6A:25:51",
"pullable": 1,
"primary": 1,
"vlan": 0,
"vlans": [],
"opstate": "up",
"adminstate": "down",
"type": "",
"ifInUcastPkts": 4412,
"ifOutUcastPkts": 1407,
"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-11-02 08:35:47",
"updated_at": "2026-11-02 08:35:47"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 9902,
"name": null,
"description": "Ipsum quis nisi tempora itaque animi qui.",
"item": null,
"colocation": null,
"connected_item": null,
"connected_port": null,
"port_number": 21,
"port_index": 65,
"port_mode": "access",
"port_label": "laudantium",
"user_label": "est",
"speed": "10000",
"high_speed": "100",
"if_type": "179",
"physaddress": "6D:B4:ED:33:9B:7F",
"pullable": 1,
"primary": 0,
"vlan": 0,
"vlans": [],
"opstate": "down",
"adminstate": "up",
"type": "",
"ifInUcastPkts": 2615,
"ifOutUcastPkts": 527,
"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-11-02 08:35:50",
"updated_at": "2026-11-02 08:35:50"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 9903,
"name": null,
"description": "Et corporis repellendus repellat eveniet animi nihil.",
"item": {
"id": 3073,
"name": null,
"label": "assumenda",
"type_id": 4844,
"location_id": 8130,
"status": "available",
"description": "Perspiciatis voluptas sit iste beatae nostrum.",
"is_part": false,
"mountable": true,
"manufacturer": "Grant, Mayer and Padberg",
"position": null,
"size": 8,
"image": null,
"data_ports": 0,
"serialnumber1": "SN951ER",
"serialnumber2": null,
"service_tag": "ST233YG",
"comments": null,
"notes": null,
"purchase_date": "2025-11-02",
"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-11-02T07:35:50.000000Z",
"updated_at": "2026-11-02T07:35:50.000000Z"
},
"colocation": null,
"connected_item": null,
"connected_port": null,
"port_number": 44,
"port_index": 74,
"port_mode": "trunk",
"port_label": "tempore",
"user_label": "recusandae",
"speed": "1000",
"high_speed": "100",
"if_type": "191",
"physaddress": "65:1A:24:8B:2A:18",
"pullable": 0,
"primary": 1,
"vlan": 0,
"vlans": [],
"opstate": "down",
"adminstate": "up",
"type": "",
"ifInUcastPkts": 1231,
"ifOutUcastPkts": 444,
"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-11-02 08:35:52",
"updated_at": "2026-11-02 08:35:52"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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.
Show port speed configuration
requires authentication
Added in 1.29.0
Reads the physical link speed configuration of one switch port live from the switch through
its Remote Agent. The request never changes the switch configuration or the stored port record.
This is the physical Ethernet link speed of the interface. It is not QoS, policing, shaping, traffic-rate limiting or tariff management.
Example request:
curl -H "Authorization: Bearer <api-token>" -H "Accept: application/json" https://your-easydcim.com/api/v3/admin/ports/1/speed
Response fields:
configured_mode- the mode configured on the switch, ornullwhen it could not be read or the switch reports a value that is not one of the supported modes (for example no speed setting, or automatic negotiation on Arista vEOS; on Cisco NX-API a port at its default speed, which includes automatic negotiation, shows no speed setting). A default is never assumed.configured_mode_readable- whether this read actually returned the configured speed from the switch. On Arista vEOS it istrueonly with a Remote Agent that includes the running-configuration speed read action (released after 1.23.0); older Remote Agents reportfalse.observed_speed_bps- the last link speed stored by polling, in bits per second, ornull. It can differ from the configured mode, for example on a disconnected port.aggregate_member- whether the switch reports that the interface belongs to a port-channel or link aggregation group. Juniper Junos:truewhen membership is configured directly on the interface, otherwisenull(membership inherited from configuration groups or interface ranges is not visible). Arista vEOS:trueorfalsefrom the Port-Channel membership reported in the interface status,nullwhen the switch does not report membership. Cisco NX-API:trueorfalsefrom the port-channel reported for the interface, which also covers vPC port-channels and the vPC peer-link. MikroTik:trueorfalsefrom the bonding interfaces that list the interface as a slave.supported_modes- the mode identifiers accepted by the update endpoint for this port.
Supported switch drivers and mode identifiers:
| Driver | Mode identifiers | Automatic mode | Configured mode readable | Restoring the previous mode |
|---|---|---|---|---|
| Juniper Junos 12 | 10m, 100m, 1g, auto |
yes (auto) |
yes | send previous_mode when it is not null |
| Juniper Junos 20 | 10m, 100m, 1g, 10g, auto |
yes (auto) |
yes | send previous_mode when it is not null |
| Arista vEOS | 10m-full, 100m-full, 100m-half, 1g-full, 1g-half, 10g-full, 40g-full, 100g-full |
no | with a Remote Agent released after 1.23.0 that includes the speed read action; older Remote Agents: no | send previous_mode when it is not null; it is null with older Remote Agents and when the port has no forced speed. Automatic negotiation can only be restored directly on the switch. |
| Cisco NX-API | 100m, 1g, 10g, 25g, 40g, 100g, auto |
yes (auto) |
yes, with Remote Agent 1.24.0 or later; auto cannot be confirmed because the running configuration does not show the default speed |
send previous_mode when it is not null; it is null while the port uses its default (automatic) speed, which auto restores. |
| MikroTik | 10m-baset-half, 10m-baset-full, 100m-baset-half, 100m-baset-full, 1g-baset-half, 1g-baset-full, 1g-basex, 2500m-baset, 2500m-basex, 5g-baset, 10g-baset, 10g-basesr-lr, 10g-basecr, 25g-basesr-lr, 25g-basecr, 40g-basesr4-lr4, 40g-basecr4, 50g-basesr2-lr2, 50g-basecr2, 100g-basesr4-lr4, 100g-basecr4, auto |
yes (auto; the speeds advertised by the router are kept) |
yes, with Remote Agent 1.24.0 or later | send previous_mode when it is not null; it is null when automatic negotiation is off and the speed is not one of the listed modes. |
HPE Comware Software and Generic SNMP switches are not supported. Cisco NX-API and MikroTik require Remote Agent 1.24.0 or later, the other drivers 1.23.0 or later. A switch port must be a physical Ethernet interface; server ports, port-channels, link aggregation groups and bonds are rejected. Which speeds a port accepts depends on the switch model, the port type and the optic; a speed the port cannot use is refused by the switch.
A 422 response without data is returned, and nothing is sent to the switch, when the port does not
belong to a switch, router or firewall, is not a physical Ethernet interface, is an aggregated interface,
has no interface name or a name the driver does not accept, when the switch driver is not supported,
when no Remote Agent is assigned to the switch, or when the Remote Agent version is unknown or older
than the version the driver requires. A 422 response is also returned when the switch configuration
cannot be read.
Requires the Switch Management extension, the "Switch Management" permission and the "View Port Speed Configuration" API permission.
Example request:
curl --request GET \
--get "https://your-easydcim.com/api/v3/admin/ports/1/speed" \
--header "Authorization: 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/speed'
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/speed';
$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": "The port speed configuration was read from the switch.",
"data": {
"port": {
"id": 1,
"name": "xe-0/0/12",
"description": "xe-0/0/12",
"item_id": 15,
"colocation_id": null,
"connected_item": 42,
"connected_port": 318,
"port_number": 524,
"port_index": 524,
"port_mode": "access",
"port_label": "xe-0/0/12",
"user_label": "server-042 eth0",
"speed": "10000000000",
"high_speed": "10000000000",
"if_type": "6",
"physaddress": "40:a6:77:12:34:0c",
"pullable": 1,
"primary": 0,
"vlan": 0,
"vlans": [],
"opstate": "up",
"adminstate": "up",
"type": "data",
"ifInUcastPkts": 1843211,
"ifOutUcastPkts": 2094412,
"ifInErrors": 0,
"ifOutErrors": 0,
"ifInOctets": 9182736451,
"ifOutOctets": 12387461923,
"poll_time": 1791952800,
"poll_period": 300,
"current_in_bps": 1250000,
"current_out_bps": 2480000,
"current_total_bps": 3730000,
"current_usage_percent": 0.04,
"rate_valid": true,
"created_at": "2026-09-01 10:15:00",
"updated_at": "2026-10-14 09:20:00"
},
"driver": {
"name": "Juniper Junos 20",
"type": "Components\\Switches\\Drivers\\Junos20NETCONF\\Junos20NETCONFDriver"
},
"configured_mode": "10g",
"configured_mode_readable": true,
"aggregate_member": null,
"auto_negotiation_supported": true,
"observed_speed_bps": 10000000000,
"supported_modes": [
{
"id": "10m",
"label": "10 Mbps",
"speed_bps": 10000000,
"duplex": null,
"auto": false
},
{
"id": "100m",
"label": "100 Mbps",
"speed_bps": 100000000,
"duplex": null,
"auto": false
},
{
"id": "1g",
"label": "1 Gbps",
"speed_bps": 1000000000,
"duplex": null,
"auto": false
},
{
"id": "10g",
"label": "10 Gbps",
"speed_bps": 10000000000,
"duplex": null,
"auto": false
},
{
"id": "auto",
"label": "Automatic negotiation",
"speed_bps": null,
"duplex": null,
"auto": 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."
}
Example response (422, Unsupported port or switch driver):
{
"success": false,
"status": "error",
"message": "The HPE Comware Software switch driver does not support speed configuration.",
"errors": 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.
Change port speed
requires authentication
Added in 1.29.0
Applies one physical link speed mode to a switch port through its switch driver and Remote Agent.
Read the port first and send one of its supported_modes.*.id values. The interface name is taken
from the port record (the port name, or the port label when the name is empty) and must match the
physical interface pattern of the switch driver; it cannot be supplied in the request.
This is the physical Ethernet link speed of the interface. It is not QoS, policing, shaping, traffic-rate limiting or tariff management.
Warning: changing the link speed can interrupt connectivity of the connected
device and the link may stay down when the server NIC, optics or cable do not support the new
speed. Use a maintenance window and keep independent management access to the connected device.
previous_mode holds the mode read before the change and can be sent again to restore it when it
is not null. It is null on Arista vEOS with a Remote Agent that cannot read the configured speed
or when no speed is forced. Arista vEOS has no automatic mode in this API, so returning such a port to
automatic negotiation must be done directly on the switch. Record the current switch setting before
changing these ports.
Example request:
curl -X PUT -H "Authorization: Bearer <api-token>" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"port_speed": "1g"}' https://your-easydcim.com/api/v3/admin/ports/1/speed
Processing:
- The port, switch driver, interface, mode and Remote Agent version (1.23.0 or later; 1.24.0 or later for Cisco NX-API and MikroTik) are validated. Nothing is sent when validation fails.
- The current configuration is read from the switch. When it cannot be read, or the switch reports that the interface belongs to a port-channel or link aggregation group, nothing is sent.
- The change is sent once and never retried automatically.
- The configuration is read again to confirm the change when the switch driver and Remote Agent can read the configured mode.
Successful responses contain confirmation:
confirmed- the switch reports the requested mode after the change.unavailable- the switch accepted the change but the configured mode could not be confirmed, for example on Arista vEOS with a Remote Agent that does not include the speed read action (1.23.0 or older), or afterautoon Cisco NX-API.
Errors returned after the change was sent contain data.outcome:
rejected- the Remote Agent returned an error. The switch may have refused the change, but the change may also have been applied: the Arista vEOS and MikroTik actions read the interface again after applying the change and report an error when that read fails, and a timeout between the Remote Agent and the switch after a Junos commit is reported the same way. Verify the port before trying again; on Arista vEOS with a Remote Agent that cannot read the configured speed, check it on the switch.unknown- no reliable answer was received (timeout, transport error or unexpected response). The switch may or may not have applied the change.mismatch- the switch accepted the request but reports a different mode inconfigured_mode.
When data.outcome is absent, the change was not sent to the switch. This includes the 422 response
returned while another speed change for the same switch is in progress; only one change per switch is
processed at a time. After rejected, unknown or mismatch, verify the port configuration before
sending the request again. The stored port record is
never modified by this endpoint; observed_speed_bps is updated by polling.
Port-channel and link aggregation membership is detected only where the switch reports it: Juniper membership configured directly on the interface, Arista Port-Channel membership, the Cisco NX-API port-channel of the interface (including vPC port-channels and the vPC peer-link) and MikroTik bonding slaves. Membership inherited from Junos configuration groups or interface ranges and vPC configuration on Arista vEOS and Juniper are not detected; do not use this endpoint on such ports.
Requires the Switch Management extension, the "Switch Management" permission and the "Change Port Speed" API permission.
Example request:
curl --request PUT \
"https://your-easydcim.com/api/v3/admin/ports/1/speed" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"port_speed\": \"1g\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/admin/ports/1/speed'
payload = {
"port_speed": "1g"
}
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/speed';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'port_speed' => '1g',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200, Configuration confirmed):
{
"success": true,
"status": "success",
"message": "The switch applied the speed mode and the configuration was confirmed.",
"data": {
"port": {
"id": 1,
"name": "xe-0/0/12",
"description": "xe-0/0/12",
"item_id": 15,
"colocation_id": null,
"connected_item": 42,
"connected_port": 318,
"port_number": 524,
"port_index": 524,
"port_mode": "access",
"port_label": "xe-0/0/12",
"user_label": "server-042 eth0",
"speed": "10000000000",
"high_speed": "10000000000",
"if_type": "6",
"physaddress": "40:a6:77:12:34:0c",
"pullable": 1,
"primary": 0,
"vlan": 0,
"vlans": [],
"opstate": "up",
"adminstate": "up",
"type": "data",
"ifInUcastPkts": 1843211,
"ifOutUcastPkts": 2094412,
"ifInErrors": 0,
"ifOutErrors": 0,
"ifInOctets": 9182736451,
"ifOutOctets": 12387461923,
"poll_time": 1791952800,
"poll_period": 300,
"current_in_bps": 1250000,
"current_out_bps": 2480000,
"current_total_bps": 3730000,
"current_usage_percent": 0.04,
"rate_valid": true,
"created_at": "2026-09-01 10:15:00",
"updated_at": "2026-10-14 09:20:00"
},
"requested_mode": "1g",
"previous_mode": "10g",
"configured_mode": "1g",
"observed_speed_bps": 10000000000,
"confirmation": "confirmed"
}
}
Example response (200, Confirmation unavailable):
{
"success": true,
"status": "success",
"message": "The switch accepted the speed change, but the configured mode cannot be read with this switch driver or Remote Agent version, so the change could not be confirmed.",
"data": {
"port": {
"id": 1,
"name": "Ethernet12",
"description": "Ethernet12",
"item_id": 15,
"colocation_id": null,
"connected_item": 42,
"connected_port": 318,
"port_number": 12,
"port_index": 12,
"port_mode": "access",
"port_label": "Ethernet12",
"user_label": "server-042 eth0",
"speed": "10000000000",
"high_speed": "10000000000",
"if_type": "6",
"physaddress": "44:4c:a8:12:34:0c",
"pullable": 1,
"primary": 0,
"vlan": 0,
"vlans": [],
"opstate": "up",
"adminstate": "up",
"type": "data",
"ifInUcastPkts": 1843211,
"ifOutUcastPkts": 2094412,
"ifInErrors": 0,
"ifOutErrors": 0,
"ifInOctets": 9182736451,
"ifOutOctets": 12387461923,
"poll_time": 1791952800,
"poll_period": 300,
"current_in_bps": 1250000,
"current_out_bps": 2480000,
"current_total_bps": 3730000,
"current_usage_percent": 0.04,
"rate_valid": true,
"created_at": "2026-09-01 10:15:00",
"updated_at": "2026-10-14 09:20:00"
},
"requested_mode": "1g-full",
"previous_mode": null,
"configured_mode": null,
"observed_speed_bps": 10000000000,
"confirmation": "unavailable"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
Example response (404, Not Found):
{
"success": false,
"status": "error",
"message": "Requested resource not found."
}
Example response (422, Unsupported speed mode):
{
"success": false,
"status": "error",
"message": "Some data did not pass validation. Please review and try again.",
"errors": {
"port_speed": [
"The selected speed mode is not supported for this port. Supported modes: 10m, 100m, 1g, 10g, auto."
]
}
}
Example response (422, Unsupported port or switch driver):
{
"success": false,
"status": "error",
"message": "The HPE Comware Software switch driver does not support speed configuration.",
"errors": null
}
Example response (422, Rejected):
{
"success": false,
"status": "error",
"message": "The Remote Agent returned an error for the speed change ([Switch Driver] Commit Error: error: configuration check-out failed). The change may still have been applied, for example when the switch could not be read again after the change. Verify the port with a read request before trying again; when the read cannot return the configured speed, check it on the switch.",
"errors": null,
"data": {
"port": {
"id": 1,
"name": "xe-0/0/12",
"description": "xe-0/0/12",
"item_id": 15,
"colocation_id": null,
"connected_item": 42,
"connected_port": 318,
"port_number": 524,
"port_index": 524,
"port_mode": "access",
"port_label": "xe-0/0/12",
"user_label": "server-042 eth0",
"speed": "10000000000",
"high_speed": "10000000000",
"if_type": "6",
"physaddress": "40:a6:77:12:34:0c",
"pullable": 1,
"primary": 0,
"vlan": 0,
"vlans": [],
"opstate": "up",
"adminstate": "up",
"type": "data",
"ifInUcastPkts": 1843211,
"ifOutUcastPkts": 2094412,
"ifInErrors": 0,
"ifOutErrors": 0,
"ifInOctets": 9182736451,
"ifOutOctets": 12387461923,
"poll_time": 1791952800,
"poll_period": 300,
"current_in_bps": 1250000,
"current_out_bps": 2480000,
"current_total_bps": 3730000,
"current_usage_percent": 0.04,
"rate_valid": true,
"created_at": "2026-09-01 10:15:00",
"updated_at": "2026-10-14 09:20:00"
},
"requested_mode": "1g",
"previous_mode": "10g",
"configured_mode": null,
"observed_speed_bps": 10000000000,
"outcome": "rejected"
}
}
Example response (422, Unknown outcome):
{
"success": false,
"status": "error",
"message": "No reliable result was received from the Remote Agent. The switch may or may not have applied the change. Check the current configuration with a read request before trying again.",
"errors": null,
"data": {
"port": {
"id": 1,
"name": "xe-0/0/12",
"description": "xe-0/0/12",
"item_id": 15,
"colocation_id": null,
"connected_item": 42,
"connected_port": 318,
"port_number": 524,
"port_index": 524,
"port_mode": "access",
"port_label": "xe-0/0/12",
"user_label": "server-042 eth0",
"speed": "10000000000",
"high_speed": "10000000000",
"if_type": "6",
"physaddress": "40:a6:77:12:34:0c",
"pullable": 1,
"primary": 0,
"vlan": 0,
"vlans": [],
"opstate": "up",
"adminstate": "up",
"type": "data",
"ifInUcastPkts": 1843211,
"ifOutUcastPkts": 2094412,
"ifInErrors": 0,
"ifOutErrors": 0,
"ifInOctets": 9182736451,
"ifOutOctets": 12387461923,
"poll_time": 1791952800,
"poll_period": 300,
"current_in_bps": 1250000,
"current_out_bps": 2480000,
"current_total_bps": 3730000,
"current_usage_percent": 0.04,
"rate_valid": true,
"created_at": "2026-09-01 10:15:00",
"updated_at": "2026-10-14 09:20:00"
},
"requested_mode": "1g",
"previous_mode": "10g",
"configured_mode": null,
"observed_speed_bps": 10000000000,
"outcome": "unknown"
}
}
Example response (422, Mismatch):
{
"success": false,
"status": "error",
"message": "The switch accepted the request but now reports the speed mode \"10g\" instead of the requested one. Check the switch configuration before trying again.",
"errors": null,
"data": {
"port": {
"id": 1,
"name": "xe-0/0/12",
"description": "xe-0/0/12",
"item_id": 15,
"colocation_id": null,
"connected_item": 42,
"connected_port": 318,
"port_number": 524,
"port_index": 524,
"port_mode": "access",
"port_label": "xe-0/0/12",
"user_label": "server-042 eth0",
"speed": "10000000000",
"high_speed": "10000000000",
"if_type": "6",
"physaddress": "40:a6:77:12:34:0c",
"pullable": 1,
"primary": 0,
"vlan": 0,
"vlans": [],
"opstate": "up",
"adminstate": "up",
"type": "data",
"ifInUcastPkts": 1843211,
"ifOutUcastPkts": 2094412,
"ifInErrors": 0,
"ifOutErrors": 0,
"ifInOctets": 9182736451,
"ifOutOctets": 12387461923,
"poll_time": 1791952800,
"poll_period": 300,
"current_in_bps": 1250000,
"current_out_bps": 2480000,
"current_total_bps": 3730000,
"current_usage_percent": 0.04,
"rate_valid": true,
"created_at": "2026-09-01 10:15:00",
"updated_at": "2026-10-14 09:20:00"
},
"requested_mode": "1g",
"previous_mode": "10g",
"configured_mode": "10g",
"observed_speed_bps": 10000000000,
"outcome": "mismatch"
}
}
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": 1550,
"ordernumber": 958322,
"user_id": 15050,
"status": "pending",
"service_status": "provisioning",
"type": "Colocation",
"options": {
"autostart": true
},
"service": null,
"created_at": "2026-11-02 08:35:52",
"updated_at": "2026-11-02 08:35:52"
},
{
"id": 1551,
"ordernumber": 112759,
"user_id": 15051,
"status": "accepted",
"service_status": "provisioning",
"type": "Server",
"options": {
"autostart": true
},
"service": null,
"created_at": "2026-11-02 08:35:52",
"updated_at": "2026-11-02 08:35:52"
}
],
"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": 1552,
"ordernumber": 803510,
"user_id": 15052,
"status": "accepted",
"service_status": "terminated",
"type": "Colocation",
"options": {
"autostart": true
},
"service": null,
"created_at": "2026-11-02 08:35:52",
"updated_at": "2026-11-02 08:35:52"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 1553,
"ordernumber": 138133,
"user_id": 15053,
"status": "accepted",
"service_status": "waiting",
"type": "Colocation",
"options": {
"autostart": true
},
"service": null,
"created_at": "2026-11-02 08:35:52",
"updated_at": "2026-11-02 08:35:52"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 1554,
"ordernumber": 534935,
"user_id": 15054,
"status": "accepted",
"service_status": "activated",
"type": "Colocation",
"options": {
"autostart": true
},
"service": null,
"created_at": "2026-11-02 08:35:52",
"updated_at": "2026-11-02 08:35:52"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 1555,
"ordernumber": 878298,
"user_id": 15055,
"status": "pending",
"service_status": "activated",
"type": "Colocation",
"options": {
"autostart": true
},
"service": null,
"created_at": "2026-11-02 08:35:52",
"updated_at": "2026-11-02 08:35:52"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 1556,
"ordernumber": 289372,
"user_id": 15056,
"status": "accepted",
"service_status": "provisioning",
"type": "Server",
"options": {
"autostart": true
},
"service": null,
"created_at": "2026-11-02 08:35:53",
"updated_at": "2026-11-02 08:35: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.
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\": \"Server\",
\"action\": \"suspend\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/admin/orders/actions/list'
payload = {
"type": "Server",
"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' => 'Server',
'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": 160,
"name": "Karen McDermott",
"order": 9,
"parent_id": 3075,
"child_id": 3074,
"created_at": "2026-11-02 08:36:05",
"updated_at": "2026-11-02 08:36:05"
},
{
"id": 161,
"name": "Amira Nienow",
"order": 6,
"parent_id": 3077,
"child_id": 3076,
"created_at": "2026-11-02 08:36:10",
"updated_at": "2026-11-02 08:36:10"
}
],
"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": 162,
"name": "Prof. Hardy Koelpin",
"order": 6,
"parent": {
"id": 3079,
"label": "libero",
"model": "excepturi",
"product_id": 0,
"model_id": 3987,
"parent_id": 0,
"type_id": 6,
"user_id": 15073,
"order_id": 0,
"location_id": 8142,
"rack_id": 0,
"blade_id": 0,
"os_installation": 0,
"colocation_id": 0,
"provisioning_id": 0,
"manufacturer": "Mosciski, Windler and Jacobi",
"description": "Et libero non magni aliquam.",
"comments": null,
"status": "available",
"device_status": "running",
"service_status": "activated",
"function": null,
"serialnumber1": "SN187VV",
"serialnumber2": null,
"service_tag": "ST949SZ",
"location": "West-Torp",
"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-11-02 08:36:15",
"updated_at": "2026-11-02 08:36:15"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 163,
"name": "Prof. Geovanni O'Reilly Sr.",
"order": 0,
"parent": {
"id": 3081,
"label": "deleniti",
"model": "autem",
"product_id": 0,
"model_id": 3991,
"parent_id": 0,
"type_id": 6,
"user_id": 15079,
"order_id": 0,
"location_id": 8146,
"rack_id": 0,
"blade_id": 0,
"os_installation": 0,
"colocation_id": 0,
"provisioning_id": 0,
"manufacturer": "Greenholt Group",
"description": "Occaecati saepe quia dolore molestias.",
"comments": null,
"status": "available",
"device_status": "running",
"service_status": "activated",
"function": null,
"serialnumber1": "SN214HR",
"serialnumber2": null,
"service_tag": "ST896FG",
"location": "Konopelski, Hessel and Abshire",
"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": 3080,
"label": "qui",
"model": "qui",
"product_id": 0,
"model_id": 3989,
"parent_id": 0,
"type_id": 4855,
"user_id": 15076,
"order_id": 0,
"location_id": 8146,
"rack_id": 0,
"blade_id": 0,
"os_installation": 0,
"colocation_id": 0,
"provisioning_id": 0,
"manufacturer": "Wunsch-Wolff",
"description": "Est qui qui repellat inventore.",
"comments": null,
"status": "available",
"device_status": "running",
"service_status": "activated",
"function": null,
"serialnumber1": "SN146GI",
"serialnumber2": null,
"service_tag": "ST108GY",
"location": "Konopelski, Hessel and Abshire",
"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-11-02 08:36:22",
"updated_at": "2026-11-02 08:36: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 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": 164,
"name": "Etha Hayes",
"order": 7,
"parent": {
"id": 3083,
"label": "laborum",
"model": "incidunt",
"product_id": 0,
"model_id": 3995,
"parent_id": 0,
"type_id": 6,
"user_id": 15085,
"order_id": 0,
"location_id": 8150,
"rack_id": 0,
"blade_id": 0,
"os_installation": 0,
"colocation_id": 0,
"provisioning_id": 0,
"manufacturer": "Schultz, Conroy and Jacobson",
"description": "Ab quia et in quidem rerum rerum quas.",
"comments": null,
"status": "available",
"device_status": "running",
"service_status": "activated",
"function": null,
"serialnumber1": "SN027EN",
"serialnumber2": null,
"service_tag": "ST445TQ",
"location": "Rowe LLC",
"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-11-02 08:36:27",
"updated_at": "2026-11-02 08:36: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.|Unauthorized admin access only.|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": 4861,
"name": "sapiente",
"description": "Mollitia qui nihil pariatur aliquid est.",
"hardware": 1,
"software": 1,
"predefined": 0,
"color": "white",
"created_at": "2026-11-02 08:36:27",
"updated_at": "2026-11-02 08:36:27"
},
{
"id": 4862,
"name": "itaque",
"description": "Consequuntur odio qui omnis.",
"hardware": 0,
"software": 0,
"predefined": 1,
"color": "black",
"created_at": "2026-11-02 08:36:27",
"updated_at": "2026-11-02 08:36:27"
}
],
"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": 4863,
"name": "repellendus",
"description": "Fuga dicta quia a eos voluptas sint blanditiis deleniti.",
"hardware": 0,
"software": 1,
"predefined": 1,
"color": "black",
"created_at": "2026-11-02 08:36:27",
"updated_at": "2026-11-02 08:36: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.|Unauthorized admin access only.|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": 4864,
"name": "beatae",
"description": "Eligendi officia aliquid ut at odit.",
"hardware": 1,
"software": 0,
"predefined": 0,
"color": "black",
"created_at": "2026-11-02 08:36:27",
"updated_at": "2026-11-02 08:36: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.|Unauthorized admin access only.|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": 4865,
"name": "quibusdam",
"description": "Quasi eius sit quia cupiditate.",
"hardware": 0,
"software": 1,
"predefined": 1,
"color": "green",
"created_at": "2026-11-02 08:36:27",
"updated_at": "2026-11-02 08:36: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.|Unauthorized admin access only.|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": 156,
"title": "Federico Conn"
},
{
"id": 157,
"title": "Ayla Jakubowski Jr."
}
],
"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": 544,
"name": "odit.consequatur.nihil",
"display_name": "Dr. Retta Larkin",
"created_at": "2026-11-02 08:36:27",
"updated_at": "2026-11-02 08:36:27"
},
{
"id": 545,
"name": "autem.dolorem.earum",
"display_name": "Dr. Guadalupe Krajcik",
"created_at": "2026-11-02 08:36:27",
"updated_at": "2026-11-02 08:36: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.|Unauthorized admin access only.|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": 158,
"title": "Lillian Kreiger II",
"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": 159,
"title": "Willa Pfeffer",
"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": 160,
"title": "Norwood Graham",
"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": 3084,
"model_id": 3997,
"parent_id": 0,
"type_id": 4866,
"user_id": 15088,
"location_id": 8152,
"rack_id": 0,
"position": null,
"image": null,
"is_part": 0,
"mountable": 1,
"model": "eos",
"manufacturer": "Kirlin-Hand",
"serialnumber1": "SN284DX",
"serialnumber2": null,
"service_tag": "ST482SW",
"comments": null,
"label": "est",
"description": "Aut occaecati omnis porro velit reiciendis.",
"purchase_date": "2025-11-02",
"warranty_months": 24,
"warranty_info": null,
"status": "available",
"function": null,
"origin": null,
"buy_price": 0,
"appdata": false,
"notes": null,
"created_at": "2026-11-02 08:36:27",
"updated_at": "2026-11-02 08:36:27"
},
{
"id": 3085,
"model_id": 3999,
"parent_id": 0,
"type_id": 4868,
"user_id": 15091,
"location_id": 8154,
"rack_id": 0,
"position": null,
"image": null,
"is_part": 1,
"mountable": 0,
"model": "autem",
"manufacturer": "Walker Ltd",
"serialnumber1": "SN197VX",
"serialnumber2": null,
"service_tag": "ST959CR",
"comments": null,
"label": "et",
"description": "Ea minus aut dolorum qui.",
"purchase_date": "2025-11-02",
"warranty_months": 24,
"warranty_info": null,
"status": "available",
"function": null,
"origin": null,
"buy_price": 0,
"appdata": false,
"notes": null,
"created_at": "2026-11-02 08:36:30",
"updated_at": "2026-11-02 08:36:30"
}
],
"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": 3086,
"model": {
"id": 4001,
"name": "amet",
"label": null,
"type_id": 4870,
"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-11-02T07:36:35.000000Z",
"updated_at": "2026-11-02T07:36:35.000000Z"
},
"user": {
"id": 15094,
"username": "hbartell",
"email": "[email protected]",
"name": "Jaycee Heller",
"firstname": "Jaycee",
"lastname": "Heller",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/c26ce5385146d9ba018525328ba99655?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/c26ce5385146d9ba018525328ba99655?s=130&d=mm&r=g",
"company_id": null,
"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": 4870,
"name": "provident",
"description": "Id consequuntur voluptatibus quos nemo dicta repudiandae quis.",
"hardware": 1,
"software": 0,
"predefined": 0,
"color": "aqua",
"created_at": "2026-11-02 08:36:33",
"updated_at": "2026-11-02 08:36:33"
},
"parent": null,
"location": {
"id": 8156,
"app_id": null,
"name": "Langworth-Borer",
"address": "34287 Isom Row Suite 499\nLake Kipburgh, CA 40794-5459",
"city": "Willmsville",
"state": "Indiana",
"description": "Voluptas voluptas eos veritatis esse sunt amet aut tempore. Sit magni aut et laudantium odit. Quia aut consequatur voluptates commodi. Suscipit harum qui expedita iste et dolorem atque. Ex voluptatem nobis dolor quis perferendis eveniet eum repellat.",
"notes": "Mollitia doloremque corrupti necessitatibus aut eos eius. Quaerat non quibusdam saepe deserunt et. Temporibus consequatur est vero.",
"emergency": "0",
"phone": "+1.239.932.4734",
"flag": "Germany.png",
"created_at": "2026-11-02 08:36:35",
"updated_at": "2026-11-02 08:36:35"
},
"rack": null,
"metadata": [],
"position": null,
"image": null,
"is_part": 1,
"mountable": 0,
"manufacturer": "Heidenreich and Sons",
"serialnumber1": "SN389QW",
"serialnumber2": null,
"service_tag": "ST599GR",
"comments": null,
"label": "repellendus",
"description": "Ipsa fugit asperiores voluptatem nostrum.",
"purchase_date": "2025-11-02",
"warranty_months": 24,
"warranty_info": null,
"status": "available",
"function": null,
"origin": null,
"buy_price": 0,
"appdata": false,
"notes": null,
"created_at": "2026-11-02 08:36:33",
"updated_at": "2026-11-02 08:36:33"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 3087,
"model": {
"id": 4003,
"name": "inventore",
"label": null,
"type_id": 4872,
"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-11-02T07:36:38.000000Z",
"updated_at": "2026-11-02T07:36:38.000000Z"
},
"user": {
"id": 15097,
"username": "monty.schultz",
"email": "[email protected]",
"name": "Rossie Trantow",
"firstname": "Rossie",
"lastname": "Trantow",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/36255eb7fa14086cd078ef4585488094?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/36255eb7fa14086cd078ef4585488094?s=130&d=mm&r=g",
"company_id": null,
"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": 4872,
"name": "nam",
"description": "Nesciunt et officiis quia quos laborum.",
"hardware": 1,
"software": 0,
"predefined": 0,
"color": "fuchsia",
"created_at": "2026-11-02 08:36:35",
"updated_at": "2026-11-02 08:36:35"
},
"parent": null,
"location": {
"id": 8158,
"app_id": null,
"name": "Lowe Group",
"address": "516 Rowe Corner Apt. 092\nWest Chasityhaven, GA 29494-7798",
"city": "South Elveratown",
"state": "Florida",
"description": "Dicta autem sed minus molestias nesciunt quis animi. Quibusdam et facere cupiditate ullam et itaque voluptatibus tempore. Iure officiis incidunt commodi ipsa natus perspiciatis placeat.",
"notes": "Voluptatem sunt eaque molestias ut. Iure rerum sunt sed est nesciunt explicabo. Nam in veritatis eos cumque numquam.",
"emergency": "1",
"phone": "+1 (806) 486-2882",
"flag": "UK.png",
"created_at": "2026-11-02 08:36:38",
"updated_at": "2026-11-02 08:36:38"
},
"rack": null,
"metadata": [],
"position": null,
"image": null,
"is_part": 1,
"mountable": 0,
"manufacturer": "Stracke and Sons",
"serialnumber1": "SN551PU",
"serialnumber2": null,
"service_tag": "ST420LE",
"comments": null,
"label": "provident",
"description": "Omnis sint et voluptas voluptatem in.",
"purchase_date": "2025-11-02",
"warranty_months": 24,
"warranty_info": null,
"status": "available",
"function": null,
"origin": null,
"buy_price": 0,
"appdata": false,
"notes": null,
"created_at": "2026-11-02 08:36:35",
"updated_at": "2026-11-02 08:36: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 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": 3088,
"model": {
"id": 4005,
"name": "mollitia",
"label": null,
"type_id": 4874,
"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-11-02T07:36:40.000000Z",
"updated_at": "2026-11-02T07:36:40.000000Z"
},
"user": {
"id": 15100,
"username": "zion.feeney",
"email": "[email protected]",
"name": "Salma Williamson",
"firstname": "Salma",
"lastname": "Williamson",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/4706cb7a96b23563dfe69375ec3e04a5?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/4706cb7a96b23563dfe69375ec3e04a5?s=130&d=mm&r=g",
"company_id": null,
"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": 4874,
"name": "vitae",
"description": "Delectus laudantium totam architecto molestiae non eveniet temporibus.",
"hardware": 1,
"software": 1,
"predefined": 1,
"color": "maroon",
"created_at": "2026-11-02 08:36:38",
"updated_at": "2026-11-02 08:36:38"
},
"parent": null,
"location": {
"id": 8160,
"app_id": null,
"name": "Spencer LLC",
"address": "29295 Volkman Club Suite 524\nThompsontown, ID 06286-2969",
"city": "Lemkemouth",
"state": "Indiana",
"description": "Sint delectus molestiae nam optio quia eos impedit. Consequatur laborum dicta fugiat totam ratione. Veritatis omnis debitis alias est dolor voluptatem. Velit et illum odit consequatur ratione qui quia odio.",
"notes": "Consequatur aliquam nostrum eos voluptatem. Fugiat ratione accusamus delectus cupiditate officiis. Quasi et ducimus recusandae quia.",
"emergency": "0",
"phone": "508-244-8524",
"flag": "Germany.png",
"created_at": "2026-11-02 08:36:40",
"updated_at": "2026-11-02 08:36:40"
},
"rack": null,
"metadata": [],
"position": null,
"image": null,
"is_part": 0,
"mountable": 1,
"manufacturer": "Streich Group",
"serialnumber1": "SN361RC",
"serialnumber2": null,
"service_tag": "ST780WQ",
"comments": null,
"label": "cupiditate",
"description": "Repellat aliquid sapiente sit quo.",
"purchase_date": "2025-11-02",
"warranty_months": 24,
"warranty_info": null,
"status": "available",
"function": null,
"origin": null,
"buy_price": 0,
"appdata": false,
"notes": null,
"created_at": "2026-11-02 08:36:38",
"updated_at": "2026-11-02 08:36:38"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 3089,
"model": {
"id": 4007,
"name": "autem",
"label": null,
"type_id": 4876,
"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-11-02T07:36:43.000000Z",
"updated_at": "2026-11-02T07:36:43.000000Z"
},
"user": {
"id": 15103,
"username": "braun.kaitlin",
"email": "[email protected]",
"name": "Dominic Donnelly",
"firstname": "Dominic",
"lastname": "Donnelly",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/3521d3291bb2188b3ec08e20bb0a9ced?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/3521d3291bb2188b3ec08e20bb0a9ced?s=130&d=mm&r=g",
"company_id": null,
"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": 4876,
"name": "voluptatibus",
"description": "Voluptatem harum deserunt a in numquam et.",
"hardware": 1,
"software": 0,
"predefined": 0,
"color": "gray",
"created_at": "2026-11-02 08:36:40",
"updated_at": "2026-11-02 08:36:40"
},
"parent": null,
"location": {
"id": 8162,
"app_id": null,
"name": "Wehner, Stehr and Reichel",
"address": "987 Wilbert Drive Apt. 766\nLeannefort, MD 28575-0247",
"city": "Lake Paulineton",
"state": "Nevada",
"description": "Recusandae delectus sapiente consequatur voluptates. Quo sit qui consequatur. Placeat beatae nostrum architecto ratione molestiae.",
"notes": "Voluptas ratione laudantium a incidunt. Ab nihil ullam consequatur laboriosam consequatur sunt recusandae. Velit eum iste esse labore nisi eaque. Voluptas commodi sit et quas.",
"emergency": "1",
"phone": "+1.434.380.8212",
"flag": "UK.png",
"created_at": "2026-11-02 08:36:43",
"updated_at": "2026-11-02 08:36:43"
},
"rack": null,
"metadata": [],
"position": null,
"image": null,
"is_part": 1,
"mountable": 0,
"manufacturer": "Corkery-Gerlach",
"serialnumber1": "SN946GP",
"serialnumber2": null,
"service_tag": "ST957AF",
"comments": null,
"label": "voluptates",
"description": "Numquam dolores a voluptatibus autem.",
"purchase_date": "2025-11-02",
"warranty_months": 24,
"warranty_info": null,
"status": "available",
"function": null,
"origin": null,
"buy_price": 0,
"appdata": false,
"notes": null,
"created_at": "2026-11-02 08:36:40",
"updated_at": "2026-11-02 08:36: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 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": 268,
"related_type": null,
"element": "textarea",
"group": "Base",
"slug": "aut.rerum.qui",
"label": "Evie Abernathy",
"options": {
"atque eos architecto velit reiciendis": "atque eos architecto velit reiciendis"
},
"predefined": 1,
"hidden": 1,
"provisionable": 0,
"combined": 0,
"filterable": 0,
"filterable_type": null,
"unique": 0,
"sortable": 0,
"encrypted": 1,
"additional_rules": [
"et",
"nulla",
"consequatur",
"animi",
"error"
],
"order": 18,
"types": [],
"created_at": "2026-11-02 08:36:43",
"updated_at": "2026-11-02 08:36:43"
},
{
"id": 269,
"related_type": null,
"element": "dropdown",
"group": "Base",
"slug": "et.temporibus.eum",
"label": "Diego O'Connell",
"options": {
"saepe quibusdam consequatur ipsam est": "saepe quibusdam consequatur ipsam est"
},
"predefined": 0,
"hidden": 0,
"provisionable": 1,
"combined": 0,
"filterable": 0,
"filterable_type": null,
"unique": 0,
"sortable": 0,
"encrypted": 1,
"additional_rules": [
"natus",
"quos",
"repellendus",
"sapiente",
"minus"
],
"order": 26,
"types": [],
"created_at": "2026-11-02 08:36:43",
"updated_at": "2026-11-02 08:36: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/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": 270,
"related_type": null,
"element": "dropdown",
"group": "Base",
"slug": "beatae.vel.sit",
"label": "Osvaldo Zulauf Jr.",
"options": {
"sapiente inventore a doloribus laudantium": "sapiente inventore a doloribus laudantium"
},
"predefined": 1,
"hidden": 0,
"provisionable": 0,
"combined": 0,
"filterable": 0,
"filterable_type": null,
"unique": 1,
"sortable": 1,
"encrypted": 1,
"additional_rules": [
"pariatur",
"et",
"voluptatibus",
"non",
"fuga"
],
"order": 26,
"values": [],
"types": [],
"created_at": "2026-11-02 08:36:43",
"updated_at": "2026-11-02 08:36: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.
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": 271,
"related_type": null,
"element": "text_multi",
"group": "Base",
"slug": "nesciunt.ea.qui",
"label": "Dr. Myrl Strosin MD",
"options": {
"corporis nesciunt voluptas iste velit": "corporis nesciunt voluptas iste velit"
},
"predefined": 1,
"hidden": 1,
"provisionable": 0,
"combined": 0,
"filterable": 0,
"filterable_type": null,
"unique": 0,
"sortable": 0,
"encrypted": 1,
"additional_rules": [
"quasi",
"commodi",
"consequatur",
"ut",
"quod"
],
"order": 98,
"values": [],
"types": [],
"created_at": "2026-11-02 08:36:43",
"updated_at": "2026-11-02 08:36: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.
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": 272,
"related_type": null,
"element": "dropdown",
"group": "Base",
"slug": "quos.autem.nostrum",
"label": "Sean Blick",
"options": {
"et non incidunt facilis sint": "et non incidunt facilis sint"
},
"predefined": 0,
"hidden": 0,
"provisionable": 0,
"combined": 0,
"filterable": 0,
"filterable_type": null,
"unique": 1,
"sortable": 0,
"encrypted": 1,
"additional_rules": [
"ut",
"tempore",
"esse",
"molestias",
"ea"
],
"order": 52,
"values": [],
"types": [],
"created_at": "2026-11-02 08:36:43",
"updated_at": "2026-11-02 08:36: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.
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": 8824,
"name": "et",
"description": "Impedit ex enim quam mollitia.",
"item_id": 3090,
"colocation_id": 0,
"port_number": 34,
"port_label": "deleniti",
"user_label": "deserunt",
"outlet_state": "up",
"connected_item": null,
"connected_port": null,
"power_usage": 25,
"power_usage_units": "Amps",
"power_usage_value": 25,
"power_usage_unit": "amps",
"power_usage_label": "25 Amps",
"created_at": "2026-11-02 08:36:43",
"updated_at": "2026-11-02 08:36:43"
},
{
"id": 8825,
"name": "sunt",
"description": "Et quae et qui placeat.",
"item_id": 3091,
"colocation_id": 0,
"port_number": 46,
"port_label": "magni",
"user_label": "in",
"outlet_state": "outletOff",
"connected_item": null,
"connected_port": null,
"power_usage": 89,
"power_usage_units": "Amps",
"power_usage_value": 89,
"power_usage_unit": "amps",
"power_usage_label": "89 Amps",
"created_at": "2026-11-02 08:36:48",
"updated_at": "2026-11-02 08:36: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": 8826,
"name": "nam",
"description": "Saepe tempore asperiores nihil sit ipsa.",
"item": null,
"colocation": null,
"port_number": 41,
"port_label": "beatae",
"user_label": "fugiat",
"outlet_state": "down",
"connected_item": null,
"connected_port": null,
"power_usage": 34,
"power_usage_units": "Amps",
"power_usage_value": 34,
"power_usage_unit": "amps",
"power_usage_label": "34 Amps",
"created_at": "2026-11-02 08:36:53",
"updated_at": "2026-11-02 08:36: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.
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": 8827,
"name": "sint",
"description": "Quaerat accusamus enim modi.",
"item": {
"id": 3093,
"name": null,
"label": "eum",
"type_id": 4884,
"location_id": 8176,
"status": "available",
"description": "Tempore similique necessitatibus iste occaecati est et et.",
"is_part": false,
"mountable": true,
"manufacturer": "West-Runolfsson",
"position": null,
"size": 1,
"image": null,
"data_ports": 0,
"serialnumber1": "SN873XG",
"serialnumber2": null,
"service_tag": "ST377PK",
"comments": null,
"notes": null,
"purchase_date": "2025-11-02",
"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-11-02T07:36:57.000000Z",
"updated_at": "2026-11-02T07:36:57.000000Z"
},
"colocation": null,
"port_number": 36,
"port_label": "consequatur",
"user_label": "et",
"outlet_state": "down",
"connected_item": null,
"connected_port": null,
"power_usage": 51,
"power_usage_units": "Amps",
"power_usage_value": 51,
"power_usage_unit": "amps",
"power_usage_label": "51 Amps",
"created_at": "2026-11-02 08:36:57",
"updated_at": "2026-11-02 08:36:57"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 8828,
"name": "beatae",
"description": "Cumque dignissimos error suscipit nihil magni eum.",
"item": null,
"colocation": null,
"port_number": 29,
"port_label": "fugiat",
"user_label": "nihil",
"outlet_state": "outletOff",
"connected_item": null,
"connected_port": null,
"power_usage": 65,
"power_usage_units": "Amps",
"power_usage_value": 65,
"power_usage_unit": "amps",
"power_usage_label": "65 Amps",
"created_at": "2026-11-02 08:37:02",
"updated_at": "2026-11-02 08:37:02"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 8829,
"name": "dicta",
"description": "Quia maxime asperiores ducimus amet explicabo mollitia.",
"item": {
"id": 3095,
"name": null,
"label": "doloremque",
"type_id": 4888,
"location_id": 8184,
"status": "available",
"description": "Sequi nisi illum et voluptatem.",
"is_part": false,
"mountable": true,
"manufacturer": "Boehm, Prohaska and McDermott",
"position": null,
"size": 1,
"image": null,
"data_ports": 0,
"serialnumber1": "SN412MP",
"serialnumber2": null,
"service_tag": "ST925WO",
"comments": null,
"notes": null,
"purchase_date": "2025-11-02",
"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-11-02T07:37:07.000000Z",
"updated_at": "2026-11-02T07:37:07.000000Z"
},
"colocation": null,
"port_number": 16,
"port_label": "amet",
"user_label": "est",
"outlet_state": "outletOn",
"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",
"created_at": "2026-11-02 08:37:07",
"updated_at": "2026-11-02 08:37:07"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 8830,
"name": "id",
"description": "Voluptatem necessitatibus excepturi iusto enim.",
"item": {
"id": 3096,
"name": null,
"label": "maiores",
"type_id": 4890,
"location_id": 8188,
"status": "available",
"description": "Adipisci quod nulla rerum animi quia officia nisi.",
"is_part": false,
"mountable": true,
"manufacturer": "Stoltenberg Inc",
"position": null,
"size": 1,
"image": null,
"data_ports": 0,
"serialnumber1": "SN732VU",
"serialnumber2": null,
"service_tag": "ST851AM",
"comments": null,
"notes": null,
"purchase_date": "2025-11-02",
"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-11-02T07:37:12.000000Z",
"updated_at": "2026-11-02T07:37:12.000000Z"
},
"colocation": null,
"port_number": 25,
"port_label": "commodi",
"user_label": "aspernatur",
"outlet_state": "outletOn",
"connected_item": null,
"connected_port": null,
"power_usage": 99,
"power_usage_units": "Amps",
"power_usage_value": 99,
"power_usage_unit": "amps",
"power_usage_label": "99 Amps",
"created_at": "2026-11-02 08:37:12",
"updated_at": "2026-11-02 08:37: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.
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": 8831,
"name": "laudantium",
"description": "Culpa a aliquid quam minima consequatur animi sit.",
"item": null,
"colocation": null,
"port_number": 5,
"port_label": "molestias",
"user_label": "molestiae",
"outlet_state": "down",
"connected_item": null,
"connected_port": null,
"power_usage": 32,
"power_usage_units": "Amps",
"power_usage_value": 32,
"power_usage_unit": "amps",
"power_usage_label": "32 Amps",
"created_at": "2026-11-02 08:37:17",
"updated_at": "2026-11-02 08:37:17"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 2758,
"item_id": 3098,
"name": "officia",
"class": "Power Supply",
"type": "Thermal",
"unit": "RPM",
"index": "Thermal",
"reading": 708,
"last_polled": "-000001-11-29T22:36:00.000000Z",
"configuration": [],
"created_at": "2026-11-02 08:37:24",
"updated_at": "2026-11-02 08:37:24"
},
{
"id": 2759,
"item_id": 3099,
"name": "delectus",
"class": "Power Supply",
"type": "Power",
"unit": "Celsius",
"index": "Power",
"reading": 835,
"last_polled": "-000001-11-29T22:36:00.000000Z",
"configuration": [],
"created_at": "2026-11-02 08:37:26",
"updated_at": "2026-11-02 08:37: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/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": 2760,
"item_id": 3100,
"name": "sunt",
"class": "Fans",
"type": "Thermal",
"unit": "Watts",
"index": "Thermal",
"reading": 991,
"last_polled": "-000001-11-29T22:36:00.000000Z",
"configuration": [],
"created_at": "2026-11-02 08:37:29",
"updated_at": "2026-11-02 08:37: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.
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": 147,
"name": "expedita",
"type": "Server",
"default": 0,
"value": "a:5:{s:13:\"base_features\";a:5:{i:0;s:8:\"location\";i:1;s:8:\"position\";i:2;s:11:\"description\";i:3;s:5:\"label\";i:4;s:5:\"model\";}s:18:\"traffic_statistics\";a:5:{i:0;s:23:\"widget_last_month_graph\";i:1;s:17:\"widget_last_month\";i:2;s:9:\"filtering\";i:3;s:20:\"widget_network_ports\";i:4;s:17:\"left_sidebar_link\";}s:5:\"power\";a:6:{i:0;s:17:\"left_sidebar_link\";i:1;s:23:\"widget_last_month_graph\";i:2;s:7:\"outlets\";i:3;s:17:\"widget_last_month\";i:4;s:20:\"widget_average_usage\";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:\"update_rdns\";i:1;s:11:\"delete_rdns\";i:2;s:22:\"rdns_left_sidebar_link\";i:3;s:11:\"create_rdns\";}}"
},
{
"id": 148,
"name": "debitis",
"type": "Server",
"default": 0,
"value": "a:5:{s:13:\"base_features\";a:5:{i:0;s:8:\"location\";i:1;s:11:\"description\";i:2;s:5:\"model\";i:3;s:8:\"position\";i:4;s:5:\"label\";}s:18:\"traffic_statistics\";a:5:{i:0;s:23:\"widget_last_month_graph\";i:1;s:9:\"filtering\";i:2;s:17:\"widget_last_month\";i:3;s:20:\"widget_network_ports\";i:4;s:17:\"left_sidebar_link\";}s:5:\"power\";a:6:{i:0;s:17:\"widget_last_month\";i:1;s:17:\"left_sidebar_link\";i:2;s:20:\"widget_average_usage\";i:3;s:7:\"outlets\";i:4;s:9:\"filtering\";i:5;s:23:\"widget_last_month_graph\";}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:\"create_rdns\";i:2;s:22:\"rdns_left_sidebar_link\";i:3;s:11:\"delete_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": 3101,
"label": "eius",
"model": "sequi",
"product_id": 0,
"model_id": 4031,
"parent_id": 0,
"type_id": 4900,
"user_id": 15171,
"order_id": 1565,
"location_id": 8202,
"rack_id": 0,
"blade_id": 0,
"os_installation": 0,
"colocation_id": 0,
"provisioning_id": 0,
"manufacturer": "Johns, Goyette and Schoen",
"description": "Et ratione quo saepe qui aut minus quae.",
"comments": null,
"status": "available",
"device_status": "running",
"service_status": "activated",
"function": null,
"serialnumber1": "SN790AS",
"serialnumber2": null,
"service_tag": "ST794IT",
"location": "Schulist, Kihn and Borer",
"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": 3102,
"label": "ipsum",
"model": "illum",
"product_id": 0,
"model_id": 4033,
"parent_id": 0,
"type_id": 4902,
"user_id": 15178,
"order_id": 1566,
"location_id": 8206,
"rack_id": 0,
"blade_id": 0,
"os_installation": 0,
"colocation_id": 0,
"provisioning_id": 0,
"manufacturer": "Flatley, Nader and Howell",
"description": "Et a labore hic consequuntur omnis omnis distinctio.",
"comments": null,
"status": "available",
"device_status": "running",
"service_status": "activated",
"function": null,
"serialnumber1": "SN852FI",
"serialnumber2": null,
"service_tag": "ST994EZ",
"location": "Hamill-Bednar",
"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": 3103,
"product_id": 0,
"model_id": 4035,
"parent_id": 0,
"type_id": 4904,
"user_id": 15185,
"order_id": 1567,
"location_id": 8210,
"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": "Wehner-Zulauf",
"serialnumber1": "SN918GQ",
"serialnumber2": null,
"service_tag": "ST138NP",
"comments": null,
"label": "quidem",
"description": "Et inventore nesciunt aspernatur placeat laborum.",
"ip_addresses": [],
"purchase_date": "2025-11-02",
"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": 4904,
"name": "totam",
"description": "Excepturi dicta cumque expedita voluptates.",
"hardware": 0,
"software": 0,
"predefined": 0,
"color": "maroon",
"created_at": "2026-11-02 08:37:38",
"updated_at": "2026-11-02 08:37:38"
},
"model": {
"id": 4035,
"name": "voluptates",
"label": null,
"type_id": 4904,
"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-11-02T07:37:43.000000Z",
"updated_at": "2026-11-02T07:37:43.000000Z"
},
"user": {
"id": 15185,
"username": "efriesen",
"email": "[email protected]",
"name": "Tremaine O'Reilly",
"firstname": "Tremaine",
"lastname": "O'Reilly",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/08fa582d029dc42521aeba86cfe062b1?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/08fa582d029dc42521aeba86cfe062b1?s=130&d=mm&r=g",
"company_id": null,
"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": 8210,
"app_id": null,
"name": "Morar-Rippin",
"address": "91835 Nyah Ridge Apt. 832\nIvahmouth, NM 76731",
"city": "East Dan",
"state": "Missouri",
"description": "Minima molestiae quia architecto et illum dolores dignissimos. Cupiditate voluptatem excepturi placeat. Deleniti doloremque sed quibusdam sunt magnam.",
"notes": "At voluptas quis in possimus. Et et et error enim voluptas. Necessitatibus illum et ut. Modi et itaque id molestias consequatur quia.",
"emergency": "1",
"phone": "+1 (954) 290-1406",
"flag": "UK.png",
"created_at": "2026-11-02 08:37:41",
"updated_at": "2026-11-02 08:37:41"
},
"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": 3104,
"product_id": 0,
"model_id": 4037,
"parent_id": 0,
"type_id": 4906,
"user_id": 15192,
"order_id": 1568,
"location_id": 8214,
"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": "Russel-Sanford",
"serialnumber1": "SN072CD",
"serialnumber2": null,
"service_tag": "ST401GI",
"comments": null,
"label": "minus",
"description": "Illum odio perferendis illo ut.",
"ip_addresses": [],
"purchase_date": "2025-11-02",
"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": 4906,
"name": "deserunt",
"description": "Ut illo doloribus doloremque ea voluptatibus.",
"hardware": 1,
"software": 1,
"predefined": 0,
"color": "blue",
"created_at": "2026-11-02 08:37:43",
"updated_at": "2026-11-02 08:37:43"
},
"model": {
"id": 4037,
"name": "odit",
"label": null,
"type_id": 4906,
"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-11-02T07:37:48.000000Z",
"updated_at": "2026-11-02T07:37:48.000000Z"
},
"user": {
"id": 15192,
"username": "walter.monroe",
"email": "[email protected]",
"name": "Eva Weissnat",
"firstname": "Eva",
"lastname": "Weissnat",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/e400adc97a34dcaf0f502ad58c7aaf52?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/e400adc97a34dcaf0f502ad58c7aaf52?s=130&d=mm&r=g",
"company_id": null,
"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": 8214,
"app_id": null,
"name": "Rath Inc",
"address": "74919 Fisher Extension\nLake Cadeburgh, GA 70997",
"city": "Zackaryport",
"state": "Connecticut",
"description": "Sapiente voluptate deserunt eveniet aut est fuga sit. Consectetur odit et perferendis voluptatem. Molestiae provident et quas sed iusto aperiam.",
"notes": "Consectetur est rem suscipit inventore qui. Officiis ea odio id expedita. Quod fuga aut aliquid. Animi illum sed id mollitia quia. Accusantium minus placeat at nostrum tenetur placeat.",
"emergency": "0",
"phone": "+1 (772) 287-6992",
"flag": "Germany.png",
"created_at": "2026-11-02 08:37:45",
"updated_at": "2026-11-02 08:37:45"
},
"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": 3105,
"product_id": 0,
"model_id": 4039,
"parent_id": 0,
"type_id": 4908,
"user_id": 15199,
"order_id": 1569,
"location_id": 8218,
"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": "Rodriguez, Labadie and Lang",
"serialnumber1": "SN949AV",
"serialnumber2": null,
"service_tag": "ST811PP",
"comments": null,
"label": "dolores",
"description": "Dicta ullam nisi a voluptas.",
"ip_addresses": [],
"purchase_date": "2025-11-02",
"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": 4908,
"name": "eius",
"description": "Omnis dolores mollitia qui at voluptatem qui aut in.",
"hardware": 1,
"software": 1,
"predefined": 1,
"color": "maroon",
"created_at": "2026-11-02 08:37:48",
"updated_at": "2026-11-02 08:37:48"
},
"model": {
"id": 4039,
"name": "quas",
"label": null,
"type_id": 4908,
"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-11-02T07:37:53.000000Z",
"updated_at": "2026-11-02T07:37:53.000000Z"
},
"user": {
"id": 15199,
"username": "darlene.deckow",
"email": "[email protected]",
"name": "Maximillian Hills",
"firstname": "Maximillian",
"lastname": "Hills",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/946b4a63b7be58548ea2514bc36f8867?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/946b4a63b7be58548ea2514bc36f8867?s=130&d=mm&r=g",
"company_id": null,
"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": 8218,
"app_id": null,
"name": "Simonis LLC",
"address": "407 Jerde Drive Apt. 177\nSouth Adeliamouth, AK 45349-5460",
"city": "Lake Kaylinstad",
"state": "Delaware",
"description": "Quia quasi numquam sint quia. Et beatae omnis qui iure laudantium ratione quasi. Suscipit ut et quibusdam aut deleniti. Repudiandae quia cupiditate perspiciatis rerum.",
"notes": "Nostrum sit quisquam praesentium et. Illum dolor veniam voluptatum fugit repudiandae qui. Voluptatem accusantium quia veritatis cumque. Maxime corrupti similique dolorum.",
"emergency": "0",
"phone": "1-281-775-7869",
"flag": "UK.png",
"created_at": "2026-11-02 08:37:50",
"updated_at": "2026-11-02 08:37:50"
},
"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": 3106,
"product_id": 0,
"model_id": 4041,
"parent_id": 0,
"type_id": 4910,
"user_id": 15206,
"order_id": 1570,
"location_id": 8222,
"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": "Steuber, Schaefer and Auer",
"serialnumber1": "SN422WG",
"serialnumber2": null,
"service_tag": "ST723WG",
"comments": null,
"label": "sunt",
"description": "Debitis ratione sunt sequi voluptas earum error.",
"ip_addresses": [],
"purchase_date": "2025-11-02",
"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": 4910,
"name": "commodi",
"description": "Assumenda autem id officia magni.",
"hardware": 1,
"software": 0,
"predefined": 1,
"color": "fuchsia",
"created_at": "2026-11-02 08:37:53",
"updated_at": "2026-11-02 08:37:53"
},
"model": {
"id": 4041,
"name": "alias",
"label": null,
"type_id": 4910,
"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-11-02T07:37:58.000000Z",
"updated_at": "2026-11-02T07:37:58.000000Z"
},
"user": {
"id": 15206,
"username": "rmckenzie",
"email": "[email protected]",
"name": "Meagan Block",
"firstname": "Meagan",
"lastname": "Block",
"gender": "0",
"avatar": "//www.gravatar.com/avatar/b82a7b206b4a4e7eb9c508e2b53dcc45?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/b82a7b206b4a4e7eb9c508e2b53dcc45?s=130&d=mm&r=g",
"company_id": null,
"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": 8222,
"app_id": null,
"name": "Moore and Sons",
"address": "923 Quitzon Path Apt. 605\nBlairport, AK 62466-8784",
"city": "Watersfort",
"state": "North Carolina",
"description": "Sint in et voluptatibus maxime cum. Vitae voluptatem nesciunt quas voluptas possimus in facere ut. Dicta enim autem omnis officiis dolore quo et.",
"notes": "Sint et pariatur magnam commodi expedita. Odit non aperiam sed placeat maiores. Quae sequi officiis modi quo tenetur harum voluptas.",
"emergency": "0",
"phone": "1-865-324-3651",
"flag": "UK.png",
"created_at": "2026-11-02 08:37:55",
"updated_at": "2026-11-02 08:37:55"
},
"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\": [
11
],
\"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": [
11
],
"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' => [
11,
],
'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": 2291,
"name": "qui voluptates eum",
"status": "1",
"message": "All Good!",
"installed_version": "1.0",
"created_at": "2026-11-02 08:37:58",
"updated_at": "2026-11-02 08:37:58"
},
{
"id": 2292,
"name": "dolore nobis et",
"status": "1",
"message": "All Good!",
"installed_version": "1.0",
"created_at": "2026-11-02 08:37:58",
"updated_at": "2026-11-02 08:37:58"
}
],
"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": 2293,
"name": "magni fugiat molestias",
"status": "1",
"message": "All Good!",
"installed_version": "1.0",
"created_at": "2026-11-02 08:37:58",
"updated_at": "2026-11-02 08:37: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.
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": 2294,
"name": "ea et velit",
"status": "1",
"message": "All Good!",
"installed_version": "1.0",
"created_at": "2026-11-02 08:37:58",
"updated_at": "2026-11-02 08:37: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.
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": 118,
"type": "ipv4",
"subnet": "221.84.84.35",
"mask": 24,
"gateway": "147.23.145.201"
},
{
"id": 119,
"type": "ipv4",
"subnet": "222.168.4.243",
"mask": 24,
"gateway": "45.129.9.36"
}
],
"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/non/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/non/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/non/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": 120,
"type": "ipv4",
"subnet": "190.190.110.219",
"mask": 24,
"gateway": "242.18.60.79"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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/sunt/subnets/qui" \
--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/sunt/subnets/qui'
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/sunt/subnets/qui';
$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": 121,
"type": "ipv4",
"subnet": "190.93.160.184",
"mask": 24,
"gateway": "140.132.26.38"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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/voluptatibus/subnets/est" \
--header "Authorization: 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/voluptatibus/subnets/est'
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/voluptatibus/subnets/est';
$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": 249,
"name": "non-iso",
"iso_url": "http://www.green.biz/in-odit-ea-fuga-dolores-corporis-et-id.html",
"status": 4,
"status_label": "Error",
"created_at": "2026-11-02 08:38:00",
"updated_at": "2026-11-02 08:38:00"
},
{
"id": 250,
"name": "facilis-iso",
"iso_url": "http://www.rolfson.com/vitae-porro-illo-ut-harum.html",
"status": 2,
"status_label": "Started",
"created_at": "2026-11-02 08:38:00",
"updated_at": "2026-11-02 08:38:00"
}
],
"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": 251,
"name": "quam-iso",
"iso_url": "https://rolfson.com/excepturi-sapiente-nobis-molestiae-consequatur-nam-cum.html",
"status": 1,
"status_label": "Waiting",
"created_at": "2026-11-02 08:38:00",
"updated_at": "2026-11-02 08:38: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.
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": 252,
"name": "hic-iso",
"iso_url": "http://little.com/omnis-ut-necessitatibus-aut-quisquam-voluptas.html",
"status": 1,
"status_label": "Waiting",
"created_at": "2026-11-02 08:38:00",
"updated_at": "2026-11-02 08:38: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.
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": 253,
"name": "explicabo-iso",
"iso_url": "http://www.feest.org/corporis-in-corrupti-modi-laborum",
"status": 3,
"status_label": "Finished",
"created_at": "2026-11-02 08:38:00",
"updated_at": "2026-11-02 08:38: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 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": 501,
"template_id": 501,
"name": "expedita",
"server_id": 1313,
"tags": [
"rerum",
"iure",
"necessitatibus",
"accusamus"
],
"architecture": "x64",
"cache_folder": "dolorem",
"mirror": "http://kihn.biz/quidem-qui-est-optio-ipsam-voluptatem",
"edition": "maxime",
"iso_url": "http://www.sauer.com/",
"tftp_url": "http://mohr.com/consequuntur-libero-tenetur-aut-quo",
"license": "aut",
"gpxe": "Velit mollitia nemo quis id harum iste.",
"disk_layout": "Quia dolores repudiandae quae inventore.",
"packages": "Vel qui perspiciatis inventore veniam veritatis quia.",
"post_installation": "Nulla et alias libero cupiditate iste inventore.",
"first_boot": "Sit maiores temporibus possimus cumque molestiae exercitationem.",
"extras": "Perferendis veritatis ab numquam qui deserunt.",
"timezone": "America/Guyana",
"language": "sg",
"family": "",
"is_windows": false,
"is_rescue": false,
"servers": [
{
"id": 1313,
"app_id": 2332,
"name": "Dr. Maye Smith",
"module": "Remote Module",
"configuration": {
"app": 2332,
"rebootmethod": "pdu",
"nameserver_1": "228.123.52.59",
"nameserver_2": null,
"rescue_template": null,
"reinstall_template": null,
"bootloader": "ipxe1.0.0undionly.kkpxe"
},
"enabled": 0
},
{
"id": 1314,
"app_id": 2333,
"name": "Emerald Aufderhar PhD",
"module": "Remote Module",
"configuration": {
"app": 2333,
"rebootmethod": "ipmi_easy_uefi",
"nameserver_1": null,
"nameserver_2": null,
"rescue_template": null,
"reinstall_template": null,
"bootloader": "undionly.kpxe"
},
"enabled": 1
}
],
"provisioning_profiles": []
},
{
"id": 502,
"template_id": 502,
"name": "sed",
"server_id": 1315,
"tags": [
"veniam",
"nulla",
"voluptatem",
"quo",
"et",
"facere"
],
"architecture": "x86",
"cache_folder": "eos",
"mirror": "http://www.mohr.biz/eos-vero-consequatur-porro-perferendis-id-atque-sit",
"edition": "et",
"iso_url": "http://lebsack.com/laborum-officia-consequatur-consequatur",
"tftp_url": "http://pfannerstill.com/ut-harum-qui-enim-in",
"license": "voluptas",
"gpxe": "Delectus non est sint laboriosam laudantium sed.",
"disk_layout": "Ut quia et dicta at magnam eum.",
"packages": "Vero sequi unde eaque placeat.",
"post_installation": "Vel aut consequatur in ab a sed.",
"first_boot": "Incidunt neque nesciunt sapiente impedit aspernatur non.",
"extras": "Officia sit accusantium cupiditate.",
"timezone": "America/Resolute",
"language": "cy",
"family": "",
"is_windows": false,
"is_rescue": false,
"servers": [
{
"id": 1315,
"app_id": 2334,
"name": "Brayan Williamson II",
"module": "Remote Module",
"configuration": {
"app": 2334,
"rebootmethod": "ipmi_easy",
"nameserver_1": null,
"nameserver_2": "67.185.79.207",
"rescue_template": null,
"reinstall_template": null,
"bootloader": "undionly.kpxe"
},
"enabled": 1
},
{
"id": 1316,
"app_id": 2335,
"name": "Leila Cruickshank",
"module": "Remote Module",
"configuration": {
"app": 2335,
"rebootmethod": "pdu",
"nameserver_1": null,
"nameserver_2": null,
"rescue_template": null,
"reinstall_template": null,
"bootloader": "undionly.kpxe"
},
"enabled": 1
}
],
"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": 503,
"template_id": 503,
"name": "eligendi",
"server_id": 1317,
"tags": [
"nam",
"voluptas",
"beatae"
],
"architecture": "arm",
"cache_folder": "molestias",
"mirror": "https://www.ruecker.com/rem-porro-molestiae-deserunt-ut-iste",
"edition": "soluta",
"iso_url": "http://boehm.info/error-assumenda-inventore-soluta-dignissimos",
"tftp_url": "http://stroman.com/minima-debitis-nesciunt-magni-facilis-ut-est-et",
"license": "possimus",
"gpxe": "Id ipsum odit et id.",
"disk_layout": "Est libero ut labore sit excepturi qui.",
"packages": "Sed est aliquam dolorem occaecati facere voluptas.",
"post_installation": "Quasi quia id saepe voluptatem qui quos.",
"first_boot": "Hic voluptas nisi dolores quae.",
"extras": "Quo suscipit ab est consequatur.",
"timezone": "Europe/Saratov",
"language": "ce",
"family": "",
"is_windows": false,
"is_rescue": false,
"servers": [
{
"id": 1317,
"app_id": 2336,
"name": "Elisa Fadel",
"module": "Remote Module",
"configuration": {
"app": 2336,
"rebootmethod": "ipmi_easy_uefi",
"nameserver_1": null,
"nameserver_2": "242.214.181.50",
"rescue_template": null,
"reinstall_template": null,
"bootloader": "vmware.kpxe"
},
"enabled": 1
},
{
"id": 1318,
"app_id": 2337,
"name": "Mrs. Liana Keeling",
"module": "Remote Module",
"configuration": {
"app": 2337,
"rebootmethod": "ipmi_easy_uefi",
"nameserver_1": "47.40.146.186",
"nameserver_2": null,
"rescue_template": null,
"reinstall_template": null,
"bootloader": "undionly.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.
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": 504,
"template_id": 504,
"name": "ullam",
"server_id": 1319,
"tags": [
"illo",
"enim",
"minus"
],
"architecture": "x86",
"cache_folder": "eligendi",
"mirror": "https://armstrong.com/error-ut-eaque-corrupti-nam-consequatur-et.html",
"edition": "ad",
"iso_url": "http://damore.net/quam-est-possimus-consequuntur-voluptatibus.html",
"tftp_url": "http://www.dickens.com/",
"license": "eum",
"gpxe": "Ut voluptatum commodi voluptatem ut id inventore consequatur.",
"disk_layout": "Et asperiores eos sequi quisquam mollitia.",
"packages": "Sint omnis consequatur suscipit nostrum nobis est.",
"post_installation": "Sint nesciunt maiores reprehenderit quisquam aspernatur dignissimos magnam.",
"first_boot": "Ducimus praesentium nisi ad in ducimus in quis.",
"extras": "Ex et veniam hic saepe odio.",
"timezone": "Europe/Sarajevo",
"language": "ho",
"family": "",
"is_windows": false,
"is_rescue": false,
"servers": [
{
"id": 1319,
"app_id": 2338,
"name": "Moises Koepp",
"module": "Remote Module",
"configuration": {
"app": 2338,
"rebootmethod": "ipmi_easy_uefi",
"nameserver_1": "89.204.84.188",
"nameserver_2": null,
"rescue_template": null,
"reinstall_template": null,
"bootloader": null
},
"enabled": 1
},
{
"id": 1320,
"app_id": 2339,
"name": "Daija Johnson",
"module": "Remote Module",
"configuration": {
"app": 2339,
"rebootmethod": "ipmi_easy",
"nameserver_1": "218.250.16.48",
"nameserver_2": null,
"rescue_template": null,
"reinstall_template": null,
"bootloader": "vmware.kpxe"
},
"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": 505,
"template_id": 505,
"name": "voluptates",
"server_id": 1321,
"tags": [
"odio",
"enim",
"ut"
],
"architecture": "arm",
"cache_folder": "quo",
"mirror": "http://friesen.org/nisi-est-doloribus-assumenda-nisi-optio-cumque.html",
"edition": "temporibus",
"iso_url": "http://runolfsson.net/omnis-consequatur-quia-suscipit-eveniet-ullam-magnam-eveniet",
"tftp_url": "http://www.rempel.com/maiores-ipsum-beatae-reprehenderit-odio-sequi-nobis",
"license": "explicabo",
"gpxe": "Id harum recusandae nostrum blanditiis dignissimos quia aut.",
"disk_layout": "Aut magnam est rerum suscipit.",
"packages": "Ut commodi sed aliquid dolores quam.",
"post_installation": "Qui reiciendis vero velit nisi ab cumque dolores.",
"first_boot": "Est quia eos iusto impedit necessitatibus maiores quibusdam.",
"extras": "Atque laborum facere harum velit quisquam quaerat.",
"timezone": "America/Yakutat",
"language": "cr",
"family": "",
"is_windows": false,
"is_rescue": false,
"servers": [
{
"id": 1321,
"app_id": 2340,
"name": "Prof. Abel Fisher",
"module": "Remote Module",
"configuration": {
"app": 2340,
"rebootmethod": "manual",
"nameserver_1": "167.21.198.138",
"nameserver_2": "127.142.81.85",
"rescue_template": null,
"reinstall_template": null,
"bootloader": "vmware.kpxe"
},
"enabled": 0
},
{
"id": 1322,
"app_id": 2341,
"name": "Ms. Aubree Roberts",
"module": "Remote Module",
"configuration": {
"app": 2341,
"rebootmethod": "pdu",
"nameserver_1": "165.78.76.99",
"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.
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=16&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': '16',
'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' => '16',
'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": 210,
"server_id": 1323,
"name": "Everardo Kemmer V",
"description": "Dolores sit facere cupiditate maiores et necessitatibus et.",
"type": "firstboot",
"tag": "fugit aut",
"tags": [
"fugit",
"aut"
],
"data": "Rerum occaecati consequatur sit maiores sint velit."
},
{
"id": 211,
"server_id": 1324,
"name": "Astrid Collins II",
"description": "Dolor esse et voluptas impedit.",
"type": "postinstall",
"tag": "saepe dicta",
"tags": [
"saepe",
"dicta"
],
"data": "Dignissimos ipsam nihil qui quo impedit fugit."
}
],
"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": 212,
"server_id": 1325,
"name": "Lupe Dare DDS",
"description": "Aspernatur magni blanditiis ut.",
"type": "postinstall",
"tag": "veniam quam",
"tags": [
"veniam",
"quam"
],
"data": "Soluta qui iure sit et nulla aperiam quidem."
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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\": \"eius\",
\"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": "eius",
"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' => 'eius',
'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": 213,
"server_id": 1326,
"name": "Ernesto Ruecker Sr.",
"description": "Consequuntur qui quam nemo in molestias amet ut fugit.",
"type": "postinstall",
"tag": "ad ut",
"tags": [
"ad",
"ut"
],
"data": "Quibusdam voluptate dolorum autem aut itaque."
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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\": \"fugit\",
\"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": "fugit",
"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' => 'fugit',
'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": 214,
"server_id": 1327,
"name": "Mr. Tobin Hills",
"description": "Eveniet facilis nulla et a sed facere.",
"type": "firstboot",
"tag": "magni enim",
"tags": [
"magni",
"enim"
],
"data": "Eligendi excepturi perferendis omnis molestiae tenetur ut delectus."
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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\": [
3
],
\"ssh_keys\": [
7
]
}"
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": [
3
],
"ssh_keys": [
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/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' => [
3,
],
'ssh_keys' => [
7,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"id": 421,
"device_id": 3110,
"template_id": 506,
"server_id": 1328,
"message": "Amet eaque enim autem dolores molestiae praesentium quo necessitatibus.",
"dhcp": 1,
"configuration": [],
"log": "",
"created_at": "2026-11-02 08:38:01",
"updated_at": "2026-11-02 08:38: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.
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": 422,
"device_id": 3111,
"template_id": 507,
"server_id": 1331,
"message": "Voluptatum maiores doloribus dolor.",
"dhcp": 1,
"configuration": [],
"log": "",
"created_at": "2026-11-02 08:38:01",
"updated_at": "2026-11-02 08:38: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.
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": 423,
"device_id": 3112,
"template_id": 508,
"server_id": 1334,
"message": "Ut nemo saepe totam tempore consequatur repudiandae.",
"dhcp": 1,
"configuration": [],
"log": "",
"created_at": "2026-11-02 08:38:01",
"updated_at": "2026-11-02 08:38: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.
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": 1337,
"app_id": 2356,
"name": "Thalia Luettgen",
"module": "Remote Module",
"configuration": {
"app": 2356,
"rebootmethod": "ipmi_easy_uefi",
"nameserver_1": "80.68.234.188",
"nameserver_2": "142.85.212.15",
"rescue_template": null,
"reinstall_template": null,
"bootloader": "vmware.kpxe"
},
"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": 424,
"device_id": 3113,
"template_id": 509,
"server_id": 1338,
"message": "Doloribus perferendis in consectetur ullam inventore.",
"dhcp": 1,
"configuration": [],
"log": "",
"created_at": "2026-11-02 08:38:02",
"updated_at": "2026-11-02 08:38:02"
},
{
"id": 425,
"device_id": 3114,
"template_id": 510,
"server_id": 1341,
"message": "Libero incidunt sed voluptas et suscipit facere.",
"dhcp": 1,
"configuration": [],
"log": "",
"created_at": "2026-11-02 08:38:02",
"updated_at": "2026-11-02 08:38: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/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": 254,
"device_id": 3115,
"server_id": 1344,
"template": "Ms. Guadalupe Nitzsche",
"status": "",
"log": "",
"created_at": "2026-11-02 08:38:03",
"updated_at": "2026-11-02 08:38:03"
},
{
"id": 255,
"device_id": 3116,
"server_id": 1345,
"template": "Sanford Wehner",
"status": "",
"log": "",
"created_at": "2026-11-02 08:38:03",
"updated_at": "2026-11-02 08:38:03"
}
],
"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": 152,
"uuid": "eeb406f5-5db9-3f15-a450-c9793c386390",
"name": "Custom qui",
"description": "Dolorem sed iusto saepe ullam dicta inventore similique.",
"type": {
"value": "custom",
"label": "Custom script"
},
"version": "1.0",
"predefined": false,
"official": false,
"installation_template": "custom_possimus",
"settings": [],
"update_available": false,
"latest_version": null,
"created_at": "2026-11-02 08:38:03",
"updated_at": "2026-11-02 08:38:03"
},
{
"id": 153,
"uuid": "3cc7ae53-5076-38df-9b09-d4a7ac5a44c5",
"name": "Postinstall blanditiis",
"description": "Vitae deleniti ea suscipit quasi sed ut laudantium.",
"type": {
"value": "postinstall",
"label": "PostInstall (Linux bootstrap script)"
},
"version": "1.0",
"predefined": true,
"official": true,
"installation_template": "postinstall_ex",
"settings": [],
"update_available": false,
"latest_version": null,
"created_at": "2026-11-02 08:38:03",
"updated_at": "2026-11-02 08:38:03"
}
],
"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": 154,
"uuid": "fd3cfc41-da3f-3095-9c78-1d4a5f347074",
"name": "Autoinstall et",
"description": "Rerum quos fugiat repellat alias impedit sed.",
"type": {
"value": "autoinstall",
"label": "Autoinstall (Ubuntu cloud-init)"
},
"version": "1.1",
"predefined": true,
"official": true,
"installation_template": "autoinstall_alias",
"settings": [],
"update_available": false,
"latest_version": null,
"created_at": "2026-11-02 08:38:03",
"updated_at": "2026-11-02 08:38: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.
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": 155,
"uuid": "631acee9-3621-329a-a8fb-f363726f8803",
"name": "Autoinstall accusamus",
"description": "Eligendi quos delectus impedit impedit ut ut enim temporibus.",
"type": {
"value": "autoinstall",
"label": "Autoinstall (Ubuntu cloud-init)"
},
"version": "2.0",
"predefined": true,
"official": true,
"installation_template": "autoinstall_non",
"settings": [],
"update_available": false,
"latest_version": null,
"created_at": "2026-11-02 08:38:03",
"updated_at": "2026-11-02 08:38: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.
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": 274,
"app_id": 2366,
"name": "Cecelia McDermott",
"locations": [
{
"id": 8271,
"app_id": null,
"name": "Gutmann-Kuhic",
"address": "8207 Afton Court Apt. 122\nNorth Joshberg, NY 71440-5750",
"city": "Vandervortchester",
"state": "Connecticut",
"description": "Quasi quibusdam et nisi et asperiores laborum. Aut repellat dolore non dignissimos ea sapiente. Iste sed ea blanditiis exercitationem dignissimos occaecati sapiente. Aliquid tenetur ducimus eum est odit et nam.",
"notes": "Est saepe eaque ut nihil ut magni consequuntur minus. Occaecati sunt illo consectetur rerum. Inventore quia rerum voluptas veniam qui.",
"emergency": "1",
"phone": "+1 (270) 500-1524",
"flag": "Germany.png",
"created_at": "2026-11-02 08:38:04",
"updated_at": "2026-11-02 08:38:04"
},
{
"id": 8272,
"app_id": null,
"name": "Reichert LLC",
"address": "6494 Runte Prairie\nKonopelskiport, FL 77265",
"city": "New Odellshire",
"state": "Montana",
"description": "Eos et eum quia quaerat ex maxime odio voluptate. Qui ipsa sunt maiores assumenda dolor. Expedita incidunt minus quia totam eligendi. Nemo dolor sed ea aut rerum.",
"notes": "Sit cupiditate error optio voluptates magnam possimus. Voluptatem porro labore enim et voluptate. Culpa autem sit ab ipsa quod repellendus.",
"emergency": "1",
"phone": "1-458-259-7828",
"flag": "USA.png",
"created_at": "2026-11-02 08:38:04",
"updated_at": "2026-11-02 08:38:04"
}
],
"configuration": []
},
{
"id": 275,
"app_id": 2367,
"name": "Tommie Barrows",
"locations": [
{
"id": 8273,
"app_id": null,
"name": "Walsh PLC",
"address": "6947 Alan Fords\nBrakusburgh, RI 67445",
"city": "Earlmouth",
"state": "North Carolina",
"description": "Ipsum nemo rem sit dolor. Ipsam optio est provident. Mollitia odit optio omnis minima possimus autem. Mollitia porro cum qui aliquid tenetur debitis est.",
"notes": "Quaerat et omnis officia non doloribus. Quas cumque itaque rerum consequatur autem exercitationem. Sit ullam porro libero ex aut quae.",
"emergency": "1",
"phone": "+1.425.898.3630",
"flag": "UK.png",
"created_at": "2026-11-02 08:38:04",
"updated_at": "2026-11-02 08:38:04"
},
{
"id": 8274,
"app_id": null,
"name": "Schulist PLC",
"address": "18067 Spencer Courts\nNew Amya, SD 46744-5706",
"city": "Erickmouth",
"state": "North Dakota",
"description": "Dolor nam id eaque animi labore. Dolor provident totam blanditiis et qui consequatur. Harum delectus dolorem assumenda aspernatur omnis quaerat nesciunt laboriosam. Voluptas ullam dolorem numquam dolores accusantium sunt.",
"notes": "Dicta provident id earum a qui. Ab culpa laudantium error ea beatae dolor. Nisi dolore dignissimos vel.",
"emergency": "0",
"phone": "(901) 692-4912",
"flag": "Germany.png",
"created_at": "2026-11-02 08:38:04",
"updated_at": "2026-11-02 08:38:04"
}
],
"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": 276,
"app_id": 2368,
"name": "Donny Smith",
"locations": [
{
"id": 8275,
"app_id": null,
"name": "McDermott Group",
"address": "56802 Weissnat Squares Apt. 056\nAufderharton, AK 69454-4342",
"city": "North Fordview",
"state": "Delaware",
"description": "Minus assumenda nostrum quia dicta eaque. Quo officiis est ipsa. Laborum molestiae consequatur iure reiciendis enim occaecati. Tempore dolore error minima a perferendis.",
"notes": "Quasi illo labore qui doloribus. Eos labore eos cumque nihil voluptas illo architecto. Placeat autem doloremque quis.",
"emergency": "0",
"phone": "+1-458-898-8241",
"flag": "Germany.png",
"created_at": "2026-11-02 08:38:04",
"updated_at": "2026-11-02 08:38:04"
},
{
"id": 8276,
"app_id": null,
"name": "Wuckert-Miller",
"address": "146 Tomas Junctions\nWest Clarissa, IN 12056",
"city": "West Helga",
"state": "Washington",
"description": "Maiores nihil voluptate provident iste quia quisquam. Et distinctio aut rem id optio similique ab. Porro sequi iusto architecto a deleniti quia facere qui. Iure id molestias quia velit sunt.",
"notes": "Quia consectetur ea quia ex unde nemo. Ullam et quod rerum et ut tempore autem. Id temporibus rerum tempore qui rerum. Expedita est nihil culpa est.",
"emergency": "1",
"phone": "+1.423.515.5492",
"flag": "USA.png",
"created_at": "2026-11-02 08:38:04",
"updated_at": "2026-11-02 08:38:04"
}
],
"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\": [
7
],
\"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\": true
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/admin/ipmi/proxy/servers'
payload = {
"name": "Main IPMI Proxy",
"app_id": 12,
"location": [
7
],
"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": 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/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' => [
7,
],
'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' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"id": 277,
"app_id": 2369,
"name": "Angelica Stiedemann",
"locations": [
{
"id": 8277,
"app_id": null,
"name": "Mitchell, Hilpert and Stark",
"address": "2489 Maeve Avenue Suite 916\nSouth Tiannamouth, CT 18129-4710",
"city": "Bryonville",
"state": "New Mexico",
"description": "Qui ea molestias optio dolores atque ut. Consequuntur est voluptatem et est nihil. Quisquam exercitationem aut molestiae debitis quod accusamus. Minus dicta saepe ut voluptatem tenetur cupiditate maxime.",
"notes": "A temporibus itaque rerum vitae. Et autem quisquam illo tempore. Consectetur culpa qui est aliquid reiciendis doloremque ea distinctio.",
"emergency": "1",
"phone": "+1 (915) 822-8405",
"flag": "Germany.png",
"created_at": "2026-11-02 08:38:04",
"updated_at": "2026-11-02 08:38:04"
},
{
"id": 8278,
"app_id": null,
"name": "Dickinson PLC",
"address": "827 Kilback Land\nWest Demetrisberg, RI 60345",
"city": "Giovannafurt",
"state": "Illinois",
"description": "Eum rerum laboriosam sit incidunt est atque placeat. Voluptate similique quis minus qui quia. Officia ex at soluta provident. Corrupti repellendus alias eum dolorum consequuntur.",
"notes": "Maiores sunt voluptatem ullam excepturi. Quia saepe id et ea esse fuga exercitationem. Praesentium velit quas voluptas eum nam illum.",
"emergency": "1",
"phone": "+1 (678) 519-2423",
"flag": "UK.png",
"created_at": "2026-11-02 08:38:04",
"updated_at": "2026-11-02 08:38:04"
}
],
"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\": [
12
],
\"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": [
12
],
"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' => [
12,
],
'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": 278,
"app_id": 2370,
"name": "Isaac Gislason",
"locations": [
{
"id": 8279,
"app_id": null,
"name": "Jacobs-Vandervort",
"address": "9164 Leffler Gateway\nNew Bessie, PA 46660-3837",
"city": "Marlinshire",
"state": "Vermont",
"description": "Quibusdam sit odio quaerat ea dolor. Ullam est magnam ullam praesentium totam sit. Et ratione et maxime aut. Sed dolores deserunt quo consectetur blanditiis quaerat. Voluptas facilis minus non sit.",
"notes": "Nihil qui aliquid illum quo quos ut. Sequi fugit ut id sed eligendi.",
"emergency": "0",
"phone": "954.860.2091",
"flag": "Canada.png",
"created_at": "2026-11-02 08:38:04",
"updated_at": "2026-11-02 08:38:04"
},
{
"id": 8280,
"app_id": null,
"name": "Legros-Stoltenberg",
"address": "964 Andreanne Junctions Suite 134\nJerdemouth, WY 55235",
"city": "East Carmelaside",
"state": "Alabama",
"description": "Voluptates harum dignissimos iure earum fugit. Tempora temporibus provident asperiores voluptas. Sint cum ut nesciunt impedit quos. Quas exercitationem magni est. Non eius rerum aspernatur aperiam.",
"notes": "Culpa vel nisi quisquam perspiciatis voluptas. Et et impedit eum et enim ex. Id voluptatem facere qui. Nesciunt quaerat aperiam culpa.",
"emergency": "1",
"phone": "847.791.3226",
"flag": "UK.png",
"created_at": "2026-11-02 08:38:04",
"updated_at": "2026-11-02 08:38:04"
}
],
"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": 259,
"device_id": 3118,
"ipmi_proxy_id": 279,
"url": null,
"status": 1,
"message": "Aut delectus voluptas dolores quidem sed.",
"log": []
},
{
"id": 260,
"device_id": 3119,
"ipmi_proxy_id": 280,
"url": null,
"status": 1,
"message": "Repellat asperiores ab rerum in fuga.",
"log": []
}
],
"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": 261,
"device_id": 3120,
"ipmi_proxy_id": 281,
"url": null,
"status": 1,
"message": "Iure architecto sit ratione reiciendis optio voluptate molestias sunt.",
"log": []
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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.
Create IPMI Operator Accounts
requires authentication
Added in 1.29.0
Queues the creation of an IPMI Operator account on the given devices. Each device is handled by its
own task, and the generated account is saved in the IPMI Operator Username and Password fields.
Devices without IPMI access data, or with an Operator account already set, are skipped.
Example request:
curl --request POST \
"https://your-easydcim.com/api/v3/admin/ipmi/operator-accounts" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"device_ids\": [
7957
]
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/admin/ipmi/operator-accounts'
payload = {
"device_ids": [
7957
]
}
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/operator-accounts';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'device_ids' => [
7957,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"queued": [
7957
],
"skipped": [
{
"id": 7958,
"reason": "already_configured"
}
]
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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.
url opens the console: {client_area}/console/{session_id}#ticket={ticket}. It contains no password;
the ticket in the URL fragment is valid for 60 seconds and a single use. Request a new URL for every console window.
Session list and details return url as null.
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": 262,
"device_id": 3121,
"ipmi_proxy_id": 282,
"url": null,
"status": 1,
"message": "Aut illum et neque blanditiis totam non iure cum.",
"log": []
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 330,
"pool": "40.97.42.0",
"mask": 24,
"type": "ipv4",
"status": "available",
"ns1": null,
"ns2": null,
"gateway": null,
"is_master_pool": 0,
"description": "Quia rerum ut commodi ex et.",
"assignment": false,
"tenants": [],
"children": [],
"parent": null,
"vlan": null,
"created_at": "2026-11-02 08:38:06",
"updated_at": "2026-11-02 08:38:06"
},
{
"id": 331,
"pool": "225.95.233.0",
"mask": 24,
"type": "ipv4",
"status": "available",
"ns1": null,
"ns2": null,
"gateway": null,
"is_master_pool": 0,
"description": "Sunt et modi corporis quod.",
"assignment": false,
"tenants": [],
"children": [],
"parent": null,
"vlan": null,
"created_at": "2026-11-02 08:38:06",
"updated_at": "2026-11-02 08:38:06"
}
],
"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": 332,
"pool": "45.218.170.0",
"mask": 24,
"type": "ipv4",
"status": "available",
"ns1": null,
"ns2": null,
"gateway": null,
"is_master_pool": 0,
"description": "Quibusdam tempore quae deserunt voluptas officia ex ut.",
"assignment": false,
"excluded_ranges": [],
"tenants": [],
"children": [],
"parent": null,
"vlan": null,
"ip_addresses": {
"assigned_ips": [],
"available_ranges": [
{
"start": "45.218.170.1",
"end": "45.218.170.254"
}
]
},
"addressing": {
"network_address": "45.218.170.0",
"network_mask": "255.255.255.0",
"wildcard_mask": "0.0.0.255",
"broadcast_address": "45.218.170.255",
"first_available_ip": "45.218.170.1",
"utilization_percentage": 0,
"available_ips": 254,
"assigned_ips": 0,
"free_ips": 254
},
"created_at": "2026-11-02 08:38:06",
"updated_at": "2026-11-02 08:38: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.
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": 333,
"pool": "188.114.49.0",
"mask": 24,
"type": "ipv4",
"status": "available",
"ns1": null,
"ns2": null,
"gateway": null,
"is_master_pool": 0,
"description": "Dolorum repellendus et cum sint aspernatur consequuntur quis.",
"assignment": false,
"excluded_ranges": [],
"tenants": [],
"children": [],
"parent": null,
"vlan": null,
"ip_addresses": {
"assigned_ips": [],
"available_ranges": [
{
"start": "188.114.49.1",
"end": "188.114.49.254"
}
]
},
"addressing": {
"network_address": "188.114.49.0",
"network_mask": "255.255.255.0",
"wildcard_mask": "0.0.0.255",
"broadcast_address": "188.114.49.255",
"first_available_ip": "188.114.49.1",
"utilization_percentage": 0,
"available_ips": 254,
"assigned_ips": 0,
"free_ips": 254
},
"created_at": "2026-11-02 08:38:06",
"updated_at": "2026-11-02 08:38: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 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": 334,
"pool": "110.243.165.0",
"mask": 24,
"type": "ipv4",
"status": "available",
"ns1": null,
"ns2": null,
"gateway": null,
"is_master_pool": 0,
"description": "Odio nostrum impedit fuga dolorem quos.",
"assignment": false,
"excluded_ranges": [],
"tenants": [],
"children": [],
"parent": null,
"vlan": null,
"ip_addresses": {
"assigned_ips": [],
"available_ranges": [
{
"start": "110.243.165.1",
"end": "110.243.165.254"
}
]
},
"addressing": {
"network_address": "110.243.165.0",
"network_mask": "255.255.255.0",
"wildcard_mask": "0.0.0.255",
"broadcast_address": "110.243.165.255",
"first_available_ip": "110.243.165.1",
"utilization_percentage": 0,
"available_ips": 254,
"assigned_ips": 0,
"free_ips": 254
},
"created_at": "2026-11-02 08:38:06",
"updated_at": "2026-11-02 08:38: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.
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": 335,
"pool": "210.100.140.0",
"mask": 24,
"type": "ipv4",
"status": "available",
"ns1": null,
"ns2": null,
"gateway": null,
"is_master_pool": 0,
"description": "Est consequatur nesciunt consequuntur magni molestiae.",
"assignment": false,
"excluded_ranges": [],
"tenants": [],
"children": [],
"parent": null,
"vlan": null,
"ip_addresses": {
"assigned_ips": [],
"available_ranges": [
{
"start": "210.100.140.1",
"end": "210.100.140.254"
}
]
},
"addressing": {
"network_address": "210.100.140.0",
"network_mask": "255.255.255.0",
"wildcard_mask": "0.0.0.255",
"broadcast_address": "210.100.140.255",
"first_available_ip": "210.100.140.1",
"utilization_percentage": 0,
"available_ips": 254,
"assigned_ips": 0,
"free_ips": 254
},
"created_at": "2026-11-02 08:38:06",
"updated_at": "2026-11-02 08:38: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 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": 336,
"pool": "164.139.235.0",
"mask": 24,
"type": "ipv4",
"status": "available",
"ns1": null,
"ns2": null,
"gateway": null,
"is_master_pool": 0,
"description": "Provident minima a ut vitae et omnis quas repudiandae.",
"assignment": false,
"tenants": [],
"children": [],
"parent": null,
"vlan": null,
"created_at": "2026-11-02 08:38:06",
"updated_at": "2026-11-02 08:38:06"
},
{
"id": 337,
"pool": "104.96.27.0",
"mask": 24,
"type": "ipv4",
"status": "available",
"ns1": null,
"ns2": null,
"gateway": null,
"is_master_pool": 0,
"description": "Modi et pariatur cum dolores commodi ut placeat.",
"assignment": false,
"tenants": [],
"children": [],
"parent": null,
"vlan": null,
"created_at": "2026-11-02 08:38:06",
"updated_at": "2026-11-02 08:38:06"
}
],
"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": 338,
"pool": "229.189.98.0",
"mask": 24,
"type": "ipv4",
"status": "available",
"ns1": null,
"ns2": null,
"gateway": null,
"is_master_pool": 0,
"description": "Pariatur quisquam quam tempora nobis odio.",
"assignment": false,
"tenants": [],
"children": [],
"parent": null,
"vlan": null,
"created_at": "2026-11-02 08:38:06",
"updated_at": "2026-11-02 08:38:06"
},
{
"id": 339,
"pool": "191.128.69.0",
"mask": 24,
"type": "ipv4",
"status": "available",
"ns1": null,
"ns2": null,
"gateway": null,
"is_master_pool": 0,
"description": "Deserunt et praesentium tenetur temporibus consequatur.",
"assignment": false,
"tenants": [],
"children": [],
"parent": null,
"vlan": null,
"created_at": "2026-11-02 08:38:06",
"updated_at": "2026-11-02 08:38:06"
}
],
"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": 3122,
"label": "amet",
"model": "qui",
"product_id": 0,
"model_id": 4057,
"parent_id": 0,
"type_id": 4942,
"user_id": 15347,
"order_id": 1586,
"location_id": 8306,
"rack_id": 1529,
"blade_id": 0,
"os_installation": 0,
"colocation_id": 0,
"provisioning_id": 0,
"manufacturer": "Carroll Group",
"description": "Assumenda qui est aut perspiciatis consequuntur velit.",
"comments": null,
"status": "available",
"device_status": "running",
"service_status": "activated",
"function": null,
"serialnumber1": "SN636YT",
"serialnumber2": null,
"service_tag": "ST776DJ",
"location": "Farrell-Ortiz",
"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": 3123,
"label": "quod",
"model": "natus",
"product_id": 0,
"model_id": 4058,
"parent_id": 0,
"type_id": 4944,
"user_id": 15354,
"order_id": 1587,
"location_id": 8310,
"rack_id": 1530,
"blade_id": 0,
"os_installation": 0,
"colocation_id": 0,
"provisioning_id": 0,
"manufacturer": "Upton Group",
"description": "Aut dolore a totam nulla quod.",
"comments": null,
"status": "available",
"device_status": "running",
"service_status": "activated",
"function": null,
"serialnumber1": "SN873KO",
"serialnumber2": null,
"service_tag": "ST632PQ",
"location": "Ernser-Senger",
"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",
"gateway": "200.94.209.1",
"mask": 24,
"subnet_mask": "255.255.255.0",
"cidr": "200.94.209.0/24",
"subnet": {
"id": 12,
"pool": "200.94.209.0",
"mask": 24,
"gateway": "200.94.209.1",
"subnet_mask": "255.255.255.0",
"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": 165,
"device_id": null,
"vlan_vlan": 3591,
"vlan_name": "provident excepturi",
"description": "Voluptatem quia pariatur provident magni illum sapiente sed vitae.",
"vlan_type": "standard",
"vlan_status": "depreciated",
"device": null
},
{
"id": 166,
"device_id": null,
"vlan_vlan": 1041,
"vlan_name": "ut nam",
"description": "Ratione eos labore unde repudiandae molestias.",
"vlan_type": "provisioning",
"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": 167,
"device_id": null,
"vlan_vlan": 496,
"vlan_name": "rem blanditiis",
"description": "Error cumque excepturi voluptatum suscipit soluta.",
"vlan_type": "standard",
"vlan_status": "depreciated",
"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": 168,
"device_id": null,
"vlan_vlan": 2056,
"vlan_name": "corporis vel",
"description": "Voluptate tempore unde odio natus.",
"vlan_type": "standard",
"vlan_status": "active",
"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": 169,
"device_id": null,
"vlan_vlan": 4043,
"vlan_name": "rerum doloremque",
"description": "Consequatur praesentium et beatae.",
"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.
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.
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.
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": 166,
"device_id": 3126,
"user_id": 15383,
"server_id": 253,
"ip": "50.163.9.107",
"from": "nienow.org",
"name": "rutherford.net",
"ttl": "3600",
"created_at": "2026-11-02 08:38:08",
"updated_at": "2026-11-02 08:38:08"
},
{
"id": 167,
"device_id": 3127,
"user_id": 15391,
"server_id": 254,
"ip": "50.243.102.144",
"from": "ritchie.biz",
"name": "schoen.com",
"ttl": "3600",
"created_at": "2026-11-02 08:38:08",
"updated_at": "2026-11-02 08:38: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/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": 168,
"device_id": 3128,
"user_id": 15399,
"server_id": 255,
"ip": "247.168.172.42",
"from": "bayer.biz",
"name": "pfannerstill.net",
"ttl": "3600",
"created_at": "2026-11-02 08:38:08",
"updated_at": "2026-11-02 08:38:08"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|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": 169,
"device_id": 3129,
"user_id": 15407,
"server_id": 256,
"ip": "252.147.175.137",
"from": "jast.info",
"name": "heidenreich.com",
"ttl": "3600",
"created_at": "2026-11-02 08:38:09",
"updated_at": "2026-11-02 08:38: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 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": 83,
"device_id": 3130,
"server_id": 257,
"ip": "19.218.134.86",
"name": "satterfield.biz",
"created_at": "2026-11-02 08:38:09",
"updated_at": "2026-11-02 08:38:09"
},
{
"id": 84,
"device_id": 3131,
"server_id": 258,
"ip": "73.33.49.138",
"name": "lockman.com",
"created_at": "2026-11-02 08:38:10",
"updated_at": "2026-11-02 08:38:10"
}
],
"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": 85,
"device_id": 3132,
"server_id": 259,
"ip": "137.130.112.93",
"name": "damore.com",
"created_at": "2026-11-02 08:38:10",
"updated_at": "2026-11-02 08:38: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.
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.
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.
When the account has two-factor authentication configured, the response has two_factor_required: true
and the token is pending: it is valid for 10 minutes and works only for POST client/two-factor/validate,
POST client/two-factor/backup-code, GET client/user, GET client/system-settings, translations and
POST logout. Other calls return 403 with error_code: two_factor_pending. A verified code turns the same
token into a full session token with the requested lifetime. Staff accounts without 2FA are refused with
error_code: two_factor_enrollment_required while 2FA is enforced for staff.
A staff account whose password was set by someone else (installer, CLI or another administrator) is refused
with 403 and error_code: password_change_required until it sets a new password in the administration panel.
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": "2025-10-22 15:47:12",
"token": "112|TT67ipL9gve55ujQNiVpI4CtK4OOW5F6rkzCdPV15cdccbc0",
"two_factor_required": false,
"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 (403):
{
"success": false,
"status": "error",
"message": "Two-factor authentication is required for staff accounts. Configure it in the administration panel before logging in through the API.",
"error_code": "two_factor_enrollment_required"
}
Example response (403):
{
"success": false,
"status": "error",
"message": "Your password was set by someone else. Log in to the administration panel and set a new password before logging in through the API.",
"error_code": "password_change_required"
}
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 the authorization URL of an enabled Client Area provider. browser_binding is required: the
base64url SHA-256 (no padding) of a random secret the browser keeps until the callback. The returned state
is single use and valid for 10 minutes. A missing or malformed binding returns 422 with
data.reason: browser_check_failed.
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\",
\"browser_binding\": \"Xh7dQm1JtD0c0pM4m9k3o2yVb0dGqfQ8uX1vS9aZr4E\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/oauth/redirect'
payload = {
"provider": "Google",
"browser_binding": "Xh7dQm1JtD0c0pM4m9k3o2yVb0dGqfQ8uX1vS9aZr4E"
}
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',
'browser_binding' => 'Xh7dQm1JtD0c0pM4m9k3o2yVb0dGqfQ8uX1vS9aZr4E',
],
]
);
$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.",
"errors": null,
"data": {
"reason": "invalid_provider"
}
}
Example response (422):
{
"success": false,
"status": "error",
"message": "This sign-in could not be confirmed for this browser. Please sign in again.",
"errors": null,
"data": {
"reason": "browser_check_failed"
}
}
Example response (422):
{
"success": false,
"status": "error",
"message": "Incorrect OAuth provider configuration.",
"errors": null,
"data": {
"reason": "provider_unavailable"
}
}
Example response (500):
{
"success": false,
"status": "error",
"message": "Failed to start OAuth login. Please try again later.",
"errors": null,
"data": {
"reason": "authorization_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.
OAuth2 Exchange
Exchanges the authorization code for an API access token. state must come from oauth/redirect for the same
provider and may be used once; browser_secret must be the secret whose hash was sent as browser_binding.
The PKCE verifier stored at the redirect is sent to the provider. Any mismatch returns one generic error.
Client accounts get a full session token. Staff accounts follow the login 2FA policy: with 2FA configured the
token is pending (see POST login); without it, while 2FA is enforced for staff, the login is refused with
error_code: two_factor_enrollment_required.
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\",
\"browser_secret\": \"q3Jb6ZcF0yQyLw1v7t8pR2mN5kH4gD9sA0eU6iO3xYz\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/oauth/callback'
payload = {
"provider": "Google",
"code": "4\/0AfJohXKXYZ...",
"state": "abc123xyz",
"browser_secret": "q3Jb6ZcF0yQyLw1v7t8pR2mN5kH4gD9sA0eU6iO3xYz"
}
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',
'browser_secret' => 'q3Jb6ZcF0yQyLw1v7t8pR2mN5kH4gD9sA0eU6iO3xYz',
],
]
);
$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": "2025-10-22 15:47:12",
"token": "112|TT67ipL9gve55ujQNiVpI4CtK4OOW5F6rkzCdPV15cdccbc0",
"two_factor_required": false,
"created_at": "2025-10-21 15:47:12"
}
}
Example response (400):
{
"success": false,
"status": "error",
"message": "Your sign-in has expired or was already used. Please sign in again.",
"errors": null,
"data": {
"reason": "session_expired"
}
}
Example response (400):
{
"success": false,
"status": "error",
"message": "Unable to retrieve user email from the provider.",
"errors": null,
"data": {
"reason": "missing_email"
}
}
Example response (403):
{
"success": false,
"status": "error",
"message": "Your account is not active or has been banned.",
"errors": null,
"data": {
"reason": "account_inactive"
}
}
Example response (403):
{
"success": false,
"status": "error",
"message": "Two-factor authentication is required for staff accounts. Configure it in the administration panel before logging in through the API.",
"error_code": "two_factor_enrollment_required"
}
Example response (404):
{
"success": false,
"status": "error",
"message": "Invalid or unsupported authentication provider.",
"errors": null,
"data": {
"reason": "invalid_provider"
}
}
Example response (404):
{
"success": false,
"status": "error",
"message": "Authentication failed. Please try again.",
"errors": null,
"data": {
"reason": "user_not_found"
}
}
Example response (500):
{
"success": false,
"status": "error",
"message": "OAuth exchange failed. Please try again later.",
"errors": null,
"data": {
"reason": "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 access token is valid for 30 minutes, or 15 minutes (configurable) for a backend "Login As Client" link, and cannot be used on the administrator API. Only client accounts can be logged in this way; the backend Client Area branding link is the only exception and yields a token limited to the branding panel.
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": 14912,
"username": "walsh.lexi",
"firstname": "Darian",
"lastname": "Nicolas",
"name": "Darian Nicolas",
"email": "[email protected]",
"company_id": null,
"company": null,
"avatar": "//www.gravatar.com/avatar/0ee09336b00ac88ece1295ec865dc017?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/0ee09336b00ac88ece1295ec865dc017?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\",
\"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",
"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',
'locale' => 'en',
'timezone' => 133,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"id": 14913,
"username": "edgardo.johnson",
"firstname": "Etha",
"lastname": "Turner",
"name": "Etha Turner",
"email": "[email protected]",
"company_id": null,
"company": null,
"avatar": "//www.gravatar.com/avatar/a2e545689075e183ca1e1c4af24ab4f4?s=30&d=mm&r=g",
"large_avatar": "//www.gravatar.com/avatar/a2e545689075e183ca1e1c4af24ab4f4?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 the current (or impersonated) user. Returns 403 when that user is not a client account, or when the request uses a client session opened from a backend "Login As Client" link, because such a session cannot be extended.
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": 138,
"name": "facilis earum",
"ssh_key": "ssh-rsa NGVlMjQ4OWU3MGEzYzMyYzcxZjQ0ZjExZjYyMzIzOTEyYTRmMTFiY2ZjYzUwODQ1ZWE0MThkNzkzMWE5YjUzZg== user@host",
"default": false,
"fingerprint": "56:ee:13:36:0f:90:3d:d4:26:98:9c:77:63:6b:a7:f1",
"created_at": "2026-11-02 08:34:12"
},
{
"id": 139,
"name": "aut sint",
"ssh_key": "ssh-rsa ZjcwMjJkZjk1YjkwYmQ1YTY4ZjIyYTJiOTVhOTNhYzJiNDA5ODFkNTNhOTEwMjIxZjc3YzExMDk0NzFmMTA4OQ== user@host",
"default": false,
"fingerprint": "ca:82:55:96:c4:22:d7:be:d5:01:d3:2a:ca:a4:b3:96",
"created_at": "2026-11-02 08:34:12"
}
],
"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": 140,
"name": "aspernatur exercitationem",
"ssh_key": "ssh-rsa YjIxZGUzOThlMGQ5Zjg3MDQ0NDNhZTg0YTdmMmMwOTNiMGEyODkwZTMyOWI0YzE5YmYwMmEwYWU5OTNkYmM3Mg== user@host",
"default": false,
"fingerprint": "01:a3:da:a3:4d:5e:cb:7e:e2:5b:3a:43:35:f4:72:08",
"created_at": "2026-11-02 08:34: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.|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": 141,
"name": "quaerat odit",
"ssh_key": "ssh-rsa ZmY4MjlhN2RkYjJkMDU0MGM4YmJlNmEyMDFlMzE2NDIzOGRmN2U3ZGRhMzU5ODBiN2RiZmYzNzc0YTczZjBmMw== user@host",
"default": false,
"fingerprint": "6c:73:3e:83:c9:ba:ac:5d:b6:af:45:fa:4c:50:8a:de",
"created_at": "2026-11-02 08:34: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.|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": 142,
"name": "quo rerum",
"ssh_key": "ssh-rsa ZDRiNGZhMjc1OGRjY2QwYmVmNGYyZTRkMDFiZDBmODkzNzRkZDE1MWJiMjdkODY3ZGIxODYwOTUzM2FmMWZjMA== user@host",
"default": false,
"fingerprint": "6e:98:c4:c5:1d:c3:c7:c2:56:28:97:54:13:16:cb:14",
"created_at": "2026-11-02 08:34: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.|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/97" \
--header "Authorization: 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/97'
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/97';
$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": 100,
"related_id": 3053,
"related": {
"label": "sed",
"model": "aspernatur",
"location": "Collins-Marquardt",
"location_flag": "Canada.png",
"metadata": []
},
"type": "Server",
"status": "",
"created_at": "2026-11-02 08:34:17"
},
{
"id": 101,
"related_id": 3054,
"related": {
"label": "aliquid",
"model": "excepturi",
"location": "Rogahn Ltd",
"location_flag": "UK.png",
"metadata": []
},
"type": "Colocation",
"status": "suspended",
"created_at": "2026-11-02 08:34:22"
}
],
"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": 102,
"related_id": 3055,
"type": "Colocation",
"status": "",
"created_at": "2026-11-02 08:34:27",
"related": {
"label": "eos",
"model": "voluptas",
"location": "Morar, Ledner and Pacocha",
"location_flag": "Germany.png",
"rack": "Unknown",
"device_status": "running",
"os_installation": 0,
"uptime": {
"is_down": false,
"value": "Unknown"
},
"image": null,
"ip_addresses": [],
"metadata": [],
"metadataGroups": []
},
"access_level": {
"id": 146,
"name": "asperiores",
"type": "Server",
"default": false,
"value": "a:5:{s:13:\"base_features\";a:5:{i:0;s:11:\"description\";i:1;s:8:\"location\";i:2;s:8:\"position\";i:3;s:5:\"model\";i:4;s:5:\"label\";}s:18:\"traffic_statistics\";a:5:{i:0;s:17:\"widget_last_month\";i:1;s:20:\"widget_network_ports\";i:2;s:9:\"filtering\";i:3;s:17:\"left_sidebar_link\";i:4;s:23:\"widget_last_month_graph\";}s:5:\"power\";a:6:{i:0;s:9:\"filtering\";i:1;s:17:\"left_sidebar_link\";i:2;s:20:\"widget_average_usage\";i:3;s:23:\"widget_last_month_graph\";i:4;s:7:\"outlets\";i:5;s:17:\"widget_last_month\";}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:22:\"rdns_left_sidebar_link\";i:2;s:11:\"delete_rdns\";i:3;s:11:\"update_rdns\";}}"
}
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "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": 3056,
"label": "praesentium",
"type": "aliquid"
},
{
"id": 3057,
"label": "quia",
"type": "molestiae"
}
],
"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": 8821,
"port_number": 41,
"port_label": "aut",
"user_label": "soluta",
"outlet_state": "Outlet On",
"connected_item": null,
"connected_port": null,
"power_usage": 28,
"power_usage_units": "Amps",
"power_usage_value": 28,
"power_usage_unit": "amps",
"power_usage_label": "28 Amps"
},
{
"id": 8822,
"port_number": 18,
"port_label": "consectetur",
"user_label": "ipsum",
"outlet_state": "Outlet On",
"connected_item": null,
"connected_port": null,
"power_usage": 9,
"power_usage_units": "Amps",
"power_usage_value": 9,
"power_usage_unit": "amps",
"power_usage_label": "9 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": 8823,
"port_number": 3,
"port_label": "nesciunt",
"user_label": "et",
"outlet_state": "Outlet Off",
"connected_item": null,
"connected_port": null,
"power_usage": 84,
"power_usage_units": "Amps",
"power_usage_value": 84,
"power_usage_unit": "amps",
"power_usage_label": "84 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": 9894,
"name": null,
"port_number": 30,
"port_label": "aut",
"user_label": "tempora",
"description": "Iusto enim necessitatibus ad autem fuga esse.",
"if_type": "modem",
"adminstate": "down",
"opstate": "up",
"connected_item": null,
"connected_port": null,
"connection": "Unknown",
"speed": "100 bps"
},
{
"id": 9895,
"name": null,
"port_number": 5,
"port_label": "quas",
"user_label": "deleniti",
"description": "Pariatur nihil aut quis cumque voluptas.",
"if_type": "escon",
"adminstate": "up",
"opstate": "down",
"connected_item": null,
"connected_port": null,
"connection": "Unknown",
"speed": "10 kbps"
}
],
"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": 2755,
"item_id": 3063,
"name": "est",
"class": "Power Supply",
"type": "Thermal",
"unit": "Volts",
"index": "Thermal",
"reading": 35,
"last_polled": "-000001-11-29T22:36:00.000000Z",
"configuration": [],
"created_at": "2026-11-02 08:34:54",
"updated_at": "2026-11-02 08:34:54"
},
{
"id": 2756,
"item_id": 3064,
"name": "repellendus",
"class": "Power Supply",
"type": "Power",
"unit": "Volts",
"index": "Power",
"reading": 46,
"last_polled": "-000001-11-29T22:36:00.000000Z",
"configuration": [],
"created_at": "2026-11-02 08:34:56",
"updated_at": "2026-11-02 08:34:56"
}
],
"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": 2757,
"item_id": 3065,
"name": "ea",
"class": "Fans",
"type": "Power",
"unit": "Volts",
"index": "Power",
"reading": 917,
"last_polled": "-000001-11-29T22:36:00.000000Z",
"configuration": [],
"created_at": "2026-11-02 08:34:59",
"updated_at": "2026-11-02 08:34:59"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "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": 245,
"name": "sapiente-iso",
"iso_url": "http://www.roberts.com/vero-sequi-laudantium-nulla-qui-quam",
"status": 1,
"download": {
"status": "waiting",
"message": "Waiting for ISO image download to start..."
},
"created_at": "2026-11-02 08:37:58",
"updated_at": "2026-11-02 08:37:58"
},
{
"id": 246,
"name": "incidunt-iso",
"iso_url": "http://schiller.info/impedit-veniam-id-sit-modi-reprehenderit-eius-in.html",
"status": 1,
"download": {
"status": "waiting",
"message": "Waiting for ISO image download to start..."
},
"created_at": "2026-11-02 08:37:58",
"updated_at": "2026-11-02 08:37:58"
}
],
"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": 247,
"name": "nostrum-iso",
"iso_url": "http://www.balistreri.org/culpa-laudantium-similique-et-quos",
"status": 1,
"download": {
"status": "waiting",
"message": "Waiting for ISO image download to start..."
},
"created_at": "2026-11-02 08:37:58",
"updated_at": "2026-11-02 08:37: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.|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 ISO image owned by the authenticated client. Public and shared ISO images cannot be modified.
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": 248,
"name": "molestiae-iso",
"iso_url": "http://gleichner.com/",
"status": 1,
"download": {
"status": "waiting",
"message": "Waiting for ISO image download to start..."
},
"created_at": "2026-11-02 08:37:58",
"updated_at": "2026-11-02 08:37: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.|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 an ISO image owned by the authenticated client. Public and shared ISO images cannot be deleted.
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": 496,
"template_id": 496,
"name": "nihil",
"tags": [
"magnam",
"repellat",
"porro",
"dolores"
],
"architecture": "x86",
"cache_folder": "voluptatem",
"mirror": "https://armstrong.com/quos-ut-pariatur-culpa.html",
"edition": "molestiae",
"iso_url": "http://www.thiel.com/sit-autem-voluptatem-id-voluptatem-rerum-fuga-id-qui",
"tftp_url": "https://www.spinka.com/omnis-molestiae-eveniet-vitae-nostrum-doloribus-qui-laborum",
"license": "ea",
"gpxe": "Incidunt nihil saepe sed dolor doloremque non.",
"disk_layout": "Sed sunt ad non sapiente voluptas inventore.",
"packages": "Odio velit voluptas alias eligendi quis saepe.",
"post_installation": "Est quibusdam cumque aut et.",
"first_boot": "Qui molestias soluta sunt et.",
"extras": "Quia quia perferendis labore numquam dicta.",
"timezone": "Europe/Volgograd",
"language": "mn",
"family": "",
"is_windows": false,
"is_rescue": false
},
{
"id": 497,
"template_id": 497,
"name": "optio",
"tags": [
"distinctio",
"fuga",
"iusto",
"aut",
"et",
"facere"
],
"architecture": "arm",
"cache_folder": "minus",
"mirror": "http://kohler.net/sint-sit-officiis-iusto-aperiam-sint-unde-culpa",
"edition": "quisquam",
"iso_url": "http://hegmann.com/repudiandae-odio-ex-eius",
"tftp_url": "http://cummerata.com/recusandae-fuga-architecto-eum-et-dignissimos-ut-consequatur-odio",
"license": "ut",
"gpxe": "Aut rem eveniet impedit est occaecati excepturi sed.",
"disk_layout": "Dolorem laudantium sunt voluptatem sed et.",
"packages": "Recusandae est qui quis voluptas ut.",
"post_installation": "Inventore facere consequuntur quis mollitia corrupti error.",
"first_boot": "Nulla dolorum excepturi exercitationem earum sed corrupti.",
"extras": "Ipsum dolores dolor ut.",
"timezone": "Europe/Chisinau",
"language": "rm",
"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": 208,
"name": "Bette Harvey",
"description": "Sit numquam sapiente quis omnis labore tenetur quisquam.",
"type": "firstboot",
"tag": "quis itaque",
"tags": [
"quis",
"itaque"
],
"data": "Eum atque expedita ea voluptatum."
},
{
"id": 209,
"name": "Aubrey Dicki III",
"description": "Repudiandae voluptatem et nobis unde maxime laboriosam.",
"type": "postinstall",
"tag": "provident ut",
"tags": [
"provident",
"ut"
],
"data": "Odio quidem laboriosam expedita fugiat aut."
}
],
"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\": [
3
],
\"ssh_keys\": [
17
]
}"
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": [
3
],
"ssh_keys": [
17
]
}
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' => [
3,
],
'ssh_keys' => [
17,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"id": 418,
"device_id": 3107,
"template_id": 498,
"message": "Quam assumenda cumque qui iure architecto saepe.",
"log": "",
"created_at": "2026-11-02 08:37:59",
"updated_at": "2026-11-02 08:37:59"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "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": 419,
"device_id": 3108,
"template_id": 499,
"message": "Fugiat qui amet tempore minima eaque ipsa.",
"log": "",
"created_at": "2026-11-02 08:37:59",
"updated_at": "2026-11-02 08:37:59"
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "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": 420,
"device_id": 3109,
"template_id": 500,
"message": "Enim sequi consequatur placeat veritatis veniam vero.",
"log": "",
"created_at": "2026-11-02 08:38:00",
"updated_at": "2026-11-02 08:38: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.
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.
url opens the console: {client_area}/console/{session_id}#ticket={ticket}. It contains no password;
the ticket in the URL fragment is valid for 60 seconds and a single use. Request a new URL for every console window.
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": 258,
"device_id": 3117,
"url": null,
"status": 1,
"message": "Hic amet ut blanditiis ea amet."
}
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "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.
Redeem a console ticket
Exchanges the one-time ticket from the console URL fragment for the connection data of its session.
The ticket is consumed by the first call; a used, expired, unknown or malformed ticket, or a session
that is no longer active, returns the same 410 error. Never send the ticket in the URL.
console_token authenticates the information, activity and close console endpoints.
Example request:
curl --request POST \
"https://your-easydcim.com/api/v3/client/ipmi/console/ticket/redeem" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ticket\": \"mT3x0Qe2cY7r1o9V8bJk4Hn6Lp5Ws2Za1Xc3Vb7Nm0Q\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/client/ipmi/console/ticket/redeem'
payload = {
"ticket": "mT3x0Qe2cY7r1o9V8bJk4Hn6Lp5Ws2Za1Xc3Vb7Nm0Q"
}
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/ticket/redeem';
$response = $client->post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'ticket' => 'mT3x0Qe2cY7r1o9V8bJk4Hn6Lp5Ws2Za1Xc3Vb7Nm0Q',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"session_id": 12,
"websocket_path": "/websockify/6085?token=1784360e52abb6d874b92747ea9df6fabde33a20",
"password": "Pq7xK2mZ",
"console_token": "0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c"
}
}
Example response (410):
{
"success": false,
"status": "error",
"message": "Invalid or expired console ticket.",
"errors": 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.
Get console connection data again
Returns the connection data of an active console session to a console page that already redeemed
its ticket, for example after a page reload or to reconnect. Authenticated by console_token only.
An unknown, closed, inactive or expired session, a wrong token or malformed input returns the same 410 error.
Example request:
curl --request POST \
"https://your-easydcim.com/api/v3/client/ipmi/console/credentials" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"session_id\": 12,
\"console_token\": \"0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/client/ipmi/console/credentials'
payload = {
"session_id": 12,
"console_token": "0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c"
}
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/credentials';
$response = $client->post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'session_id' => 12,
'console_token' => '0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"websocket_path": "/websockify/6085?token=1784360e52abb6d874b92747ea9df6fabde33a20",
"password": "Pq7xK2mZ"
}
}
Example response (410):
{
"success": false,
"status": "error",
"message": "Invalid or expired console session.",
"errors": 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.
Show IPMI console session information
Retrieves session-related data for an active IPMI proxy session.
Login helpers expose only the IPMI Operator account; without one, no credentials are returned
and disable_login_buttons is true.
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 "{
\"session_id\": 12,
\"console_token\": \"0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/client/ipmi/console/information'
payload = {
"session_id": 12,
"console_token": "0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c"
}
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' => [
'session_id' => 12,
'console_token' => '0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"status": "success",
"message": "success",
"data": {
"ipmi_username": "operator_username",
"ipmi_password": "operator_password",
"disable_login_buttons": false
}
}
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 "{
\"session_id\": 12,
\"console_token\": \"0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/client/ipmi/console/activity'
payload = {
"session_id": 12,
"console_token": "0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c"
}
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' => [
'session_id' => 12,
'console_token' => '0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c',
],
]
);
$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 "{
\"session_id\": 12,
\"console_token\": \"0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c\"
}"
import requests
import json
url = 'https://your-easydcim.com/api/v3/client/ipmi/console/close'
payload = {
"session_id": 12,
"console_token": "0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c"
}
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' => [
'session_id' => 12,
'console_token' => '0f5c0a2d4d0e6b8b5f3c1f1f2a9e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c',
],
]
);
$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. A pending login token (two_factor_required: true
from POST login) becomes a full session token with the lifetime requested at login.
Available to client and staff accounts. After 5 invalid codes the pending login token is revoked (401,
error_code: two_factor_too_many_failures). After 10 invalid codes or backup codes within 15 minutes the
account's second factor is locked (429, error_code: two_factor_locked, Retry-After) for 15 minutes,
doubling with each further lock in 24 hours; a new login does not lift the lock.
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 (401):
{
"success": false,
"status": "error",
"message": "Too many invalid codes. Please log in again.",
"error_code": "two_factor_too_many_failures"
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
Example response (404, Not Found):
{
"success": false,
"status": "error",
"message": "Requested resource not found."
}
Example response (429):
{
"success": false,
"status": "error",
"message": "Too many invalid two-factor codes. Please try again later.",
"error_code": "two_factor_locked"
}
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.
A pending login token becomes a full session token, as with validate. Available to client and staff accounts.
Invalid backup codes count towards the same limits as validate.
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):
{
"success": false,
"status": "error",
"message": "Too many invalid codes. Please log in again.",
"error_code": "two_factor_too_many_failures"
}
Example response (401, Unauthorized):
{
"success": false,
"status": "error",
"message": "Missing bearer token.|Invalid bearer token|Token not provided."
}
Example response (403, Forbidden):
{
"success": false,
"status": "error",
"message": "Your account is inactive or banned.|Unauthorized admin access only.|You do not have the appropriate rights for this action."
}
Example response (404, Not Found):
{
"success": false,
"status": "error",
"message": "Requested resource not found."
}
Example response (429):
{
"success": false,
"status": "error",
"message": "Too many invalid two-factor codes. Please try again later.",
"error_code": "two_factor_locked"
}
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",
"gateway": "200.94.209.1",
"mask": 24,
"subnet_mask": "255.255.255.0",
"cidr": "200.94.209.0/24",
"subnet": {
"id": 12,
"pool": "200.94.209.0",
"mask": 24,
"gateway": "200.94.209.1",
"subnet_mask": "255.255.255.0",
"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": 328,
"subnet": "227.59.125.0/24",
"pool": "227.59.125.0",
"mask": 24,
"gateway": null,
"type": "ipv4"
},
{
"id": 329,
"subnet": "112.203.26.0/24",
"pool": "112.203.26.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": 164,
"device_id": 3124,
"user_id": 15367,
"server_id": 251,
"ip": "129.84.34.1",
"from": "reichel.biz",
"name": "towne.com",
"ttl": "3600",
"created_at": "2026-11-02 08:38:07",
"updated_at": "2026-11-02 08:38:07"
},
{
"id": 165,
"device_id": 3125,
"user_id": 15375,
"server_id": 252,
"ip": "24.39.3.209",
"from": "marks.info",
"name": "bode.biz",
"ttl": "3600",
"created_at": "2026-11-02 08:38:07",
"updated_at": "2026-11-02 08:38:07"
}
],
"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.