Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.1.0",
"info": {
"title": "Datto RMM API",
"description": "Datto RMM (Remote Monitoring and Management) REST API",
"license": {
"name": "\u00a9Datto, Inc. - All rights reserved. ",
"url": "http://www.datto.com/"
},
"version": "2.0.0 (Build 235_0add0e4d537431f30405d568ccb46b6d7af1f183)"
},
"servers": [
{
"url": "https://syrah-api.centrastage.net/api",
"description": "Generated server url"
}
],
"tags": [
{
"name": "/v2/site",
"description": "Operations on sites"
},
{
"name": "/v3/device",
"description": "Operations on devices (v3 API)"
},
{
"name": "/v2/audit",
"description": "Operations on audit data"
},
{
"name": "/v2/system",
"description": "RMM API System operations"
},
{
"name": "/v2/job",
"description": "Operations on jobs"
},
{
"name": "/v2/device",
"description": "Operations on devices"
},
{
"name": "/v3/account",
"description": "Operations on accounts (v3 API)"
},
{
"name": "/v2/account",
"description": "Operations on accounts"
},
{
"name": "/v2/activity-logs",
"description": "Fetching RMM Activity Logs"
},
{
"name": "/v2/filter",
"description": "Operations on filters"
},
{
"name": "/v2/alert",
"description": "Operations on alerts"
},
{
"name": "/v3/site",
"description": "Operations on sites (v3 API)"
},
{
"name": "/v2/user",
"description": "Operations on users"
}
],
"paths": {
"/v2/site": {
"put": {
"tags": [
"/v2/site"
],
"summary": "Creates a new site in the authenticated user's account.",
"operationId": "create",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSiteRequest"
}
}
},
"required": true
},
"responses": {
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 500,
"error": "Internal Server Error",
"path": "/v2/site"
}
}
}
},
"409": {
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 409,
"error": "Conflict",
"path": "/v2/site"
}
}
}
},
"400": {
"description": "Request is invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 400,
"error": "Bad Request",
"path": "/v2/site"
}
}
}
},
"401": {
"description": "Request can not be authorized.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 401,
"error": "Unauthorized",
"path": "/v2/site"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "Site data",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"uid": {
"type": "string",
"description": "Unique alphanumeric UID of this site"
},
"accountUid": {
"type": "string",
"description": "Unique alphanumeric UID of the account to which this site belongs"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"notes": {
"type": "string"
},
"onDemand": {
"type": "boolean"
},
"splashtopAutoInstall": {
"type": "boolean"
},
"proxySettings": {
"$ref": "#/components/schemas/ProxySettings"
},
"devicesStatus": {
"$ref": "#/components/schemas/DevicesStatus"
},
"autotaskCompanyName": {
"type": "string"
},
"autotaskCompanyId": {
"type": "string"
},
"portalUrl": {
"type": "string"
}
}
}
}
}
}
}
}
},
"/v2/site/{siteUid}/variable": {
"put": {
"tags": [
"/v2/site"
],
"summary": "Creates a site variable in the site identified by the given site Uid.",
"operationId": "createSiteVariable",
"parameters": [
{
"name": "siteUid",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Variable Creation Request"
}
}
},
"required": true
},
"responses": {
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 500,
"error": "Internal Server Error",
"path": "/v2/site/{siteUid}/variable"
}
}
}
},
"409": {
"description": "Request aborted due to concurrent write access to this record.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 409,
"error": "Conflict",
"path": "/v2/site/{siteUid}/variable"
}
}
}
},
"403": {
"description": "Authenticated user doesn't have access to this resource.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 403,
"error": "Forbidden",
"path": "/v2/site/{siteUid}/variable"
}
}
}
},
"400": {
"description": "Request parameters are invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 400,
"error": "Bad Request",
"path": "/v2/site/{siteUid}/variable"
}
}
}
},
"404": {
"description": "Variable was not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 404,
"error": "Not Found",
"path": "/v2/site/{siteUid}/variable"
}
}
}
},
"401": {
"description": "Request can not be authorized.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 401,
"error": "Unauthorized",
"path": "/v2/site/{siteUid}/variable"
}
}
}
},
"200": {
"description": "OK"
}
}
}
},
"/v2/device/{deviceUid}/site/{siteUid}": {
"put": {
"tags": [
"/v2/device"
],
"summary": "Moves a device from one site to another site.",
"operationId": "moveDevice",
"parameters": [
{
"name": "deviceUid",
"in": "path",
"description": "The UID of the device to move to a different site",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "siteUid",
"in": "path",
"description": "The UID of the target site",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 500,
"error": "Internal Server Error",
"path": "/v2/device/{deviceUid}/site/{siteUid}"
}
}
}
},
"409": {
"description": "Request aborted due to concurrent write access to this record.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 409,
"error": "Conflict",
"path": "/v2/device/{deviceUid}/site/{siteUid}"
}
}
}
},
"404": {
"description": "Device and/or site not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 404,
"error": "Not Found",
"path": "/v2/device/{deviceUid}/site/{siteUid}"
}
}
}
},
"403": {
"description": "Authenticated user doesn't have access to this resource.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 403,
"error": "Forbidden",
"path": "/v2/device/{deviceUid}/site/{siteUid}"
}
}
}
},
"401": {
"description": "Request can not be authorized.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 401,
"error": "Unauthorized",
"path": "/v2/device/{deviceUid}/site/{siteUid}"
}
}
}
},
"200": {
"description": "OK"
}
}
}
},
"/v2/device/{deviceUid}/quickjob": {
"put": {
"tags": [
"/v2/device"
],
"summary": "Creates a quick job on the device identified by the given device Uid.",
"operationId": "createQuickJob",
"parameters": [
{
"name": "deviceUid",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateQuickJobRequest"
}
}
},
"required": true
},
"responses": {
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 500,
"error": "Internal Server Error",
"path": "/v2/device/{deviceUid}/quickjob"
}
}
}
},
"409": {
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 409,
"error": "Conflict",
"path": "/v2/device/{deviceUid}/quickjob"
}
}
}
},
"404": {
"description": "Device was not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 404,
"error": "Not Found",
"path": "/v2/device/{deviceUid}/quickjob"
}
}
}
},
"403": {
"description": "Authenticated user doesn't have access to this resource.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 403,
"error": "Forbidden",
"path": "/v2/device/{deviceUid}/quickjob"
}
}
}
},
"400": {
"description": "Request data is invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 400,
"error": "Bad Request",
"path": "/v2/device/{deviceUid}/quickjob"
}
}
}
},
"401": {
"description": "Request cannot be authorized.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 401,
"error": "Unauthorized",
"path": "/v2/device/{deviceUid}/quickjob"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "Create Quick Job Response",
"properties": {
"jobComponents": {
"type": "array",
"items": {
"$ref": "#/components/schemas/JobComponent"
}
},
"job": {
"$ref": "#/components/schemas/Job"
}
}
}
}
}
}
}
}
},
"/v2/account/variable": {
"put": {
"tags": [
"/v2/account"
],
"summary": "Creates an account variable",
"operationId": "createAccountVariable",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Variable Creation Request"
}
}
},
"required": true
},
"responses": {
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 500,
"error": "Internal Server Error",
"path": "/v2/account/variable"
}
}
}
},
"409": {
"description": "Request aborted due to concurrent write access to this record.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 409,
"error": "Conflict",
"path": "/v2/account/variable"
}
}
}
},
"403": {
"description": "Authenticated user doesn't have access to this resource.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 403,
"error": "Forbidden",
"path": "/v2/account/variable"
}
}
}
},
"400": {
"description": "Request parameters are invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 400,
"error": "Bad Request",
"path": "/v2/account/variable"
}
}
}
},
"404": {
"description": "Variable was not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 404,
"error": "Not Found",
"path": "/v2/account/variable"
}
}
}
},
"401": {
"description": "Request can not be authorized.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 401,
"error": "Unauthorized",
"path": "/v2/account/variable"
}
}
}
},
"200": {
"description": "OK"
}
}
}
},
"/v3/device/{deviceUid}/udf": {
"post": {
"tags": [
"/v3/device"
],
"summary": "Sets the user defined fields of a device identified by the given device Uid.",
"description": "V3 enforces strict type validation: each UDF must match its configured type (STRING/BOOLEAN/NUMBER/DATE). Type mismatches are rejected. Set value to null to delete a UDF.",
"operationId": "setUdfFields",
"parameters": [
{
"name": "deviceUid",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetUserDefinedFieldsRequest"
}
}
},
"required": true
},
"responses": {
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 500,
"error": "Internal Server Error",
"path": "/v3/device/{deviceUid}/udf"
}
}
}
},
"409": {
"description": "Request aborted due to concurrent write access to this record.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 409,
"error": "Conflict",
"path": "/v3/device/{deviceUid}/udf"
}
}
}
},
"404": {
"description": "Device was not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 404,
"error": "Not Found",
"path": "/v3/device/{deviceUid}/udf"
}
}
}
},
"403": {
"description": "Authenticated user doesn't have access to this resource.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 403,
"error": "Forbidden",
"path": "/v3/device/{deviceUid}/udf"
}
}
}
},
"400": {
"description": "Request is invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 400,
"error": "Bad Request",
"path": "/v3/device/{deviceUid}/udf"
}
}
}
},
"401": {
"description": "Request can not be authorized.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 401,
"error": "Unauthorized",
"path": "/v3/device/{deviceUid}/udf"
}
}
}
},
"200": {
"description": "OK"
}
},
"deprecated": true
}
},
"/v2/user/resetApiKeys": {
"post": {
"tags": [
"/v2/user"
],
"summary": "Resets the authenticated user's API access and secret keys.",
"operationId": "resetApiKeys",
"responses": {
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 500,
"error": "Internal Server Error",
"path": "/v2/user/resetApiKeys"
}
}
}
},
"409": {
"description": "Request aborted due to concurrent write access to this record.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 409,
"error": "Conflict",
"path": "/v2/user/resetApiKeys"
}
}
}
},
"401": {
"description": "Request can not be authorized.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 401,
"error": "Unauthorized",
"path": "/v2/user/resetApiKeys"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "Authentication user keys",
"properties": {
"apiAccessKey": {
"type": "string"
},
"apiSecretKey": {
"type": "string"
},
"userName": {
"type": "string"
}
}
}
}
}
}
}
}
},
"/v2/site/{siteUid}": {
"get": {
"tags": [
"/v2/site"
],
"summary": "Fetches data of the site (including total number of devices) identified by the given site Uid.",
"operationId": "getSite",
"parameters": [
{
"name": "siteUid",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 500,
"error": "Internal Server Error",
"path": "/v2/site/{siteUid}"
}
}
}
},
"409": {
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 409,
"error": "Conflict",
"path": "/v2/site/{siteUid}"
}
}
}
},
"404": {
"description": "Site was not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 404,
"error": "Not Found",
"path": "/v2/site/{siteUid}"
}
}
}
},
"403": {
"description": "Authenticated user doesn't have access to this resource.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 403,
"error": "Forbidden",
"path": "/v2/site/{siteUid}"
}
}
}
},
"401": {
"description": "Request can not be authorized.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"example": {
"timestamp": 1781181715656,
"status": 401,
"error": "Unauthorized",
"path": "/v2/site/{siteUid}"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "Site data",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"uid": {
"type": "string",
"description": "Unique alphanumeric UID of this site"
},
"accountUid": {
"type": "string",
"description": "Unique alphanumeric UID of the account to which this site belongs"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"notes": {
"type": "string"
},
"onDemand": {
"type": "boolean"
},
"splashtopAutoInstall": {
"type": "boolean"
},
"proxySettings": {
"$ref": "#/components/schemas/ProxySettings"
},
"devicesStatus": {
# --- truncated at 32 KB (371 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kaseya/refs/heads/main/openapi/kaseya-datto-rmm-openapi-original.json