Druva MSP API

The Managed Service Provider API. Customer and tenant provisioning, suspension and patching, per-customer API token generation, asynchronous task tracking, quota configuration and consumption metering, customer events, and the chargeback, telemetry and service-monitoring report family used to bill managed customers.

Operations 103

GET /msp/v2/admins List all administrators #
GET /msp/v3/servicePlans List all service plans #
GET /msp/v3/servicePlans/{servicePlanID} Get service plan #
GET /msp/v3/customers List all customers #
POST /msp/v3/customers Create a new customer #
GET /msp/v3/customers/{customerID} Get customer details #
PUT /msp/v3/customers/{customerID} Update customer details #
GET /msp/v3/customers/{customerID}/events List all customer level events #
POST /msp/v2/customers/{customerID}/token Generate API access token for a customer #
POST /msp/v3/customers/{customerID}/tenants Create a new tenant #
GET /msp/v2/events List all MSP level events #
GET /msp/v3/tenants Get tenants list #
POST /msp/v2/customers/{customerID}/tenants/{tenantID}/suspend Suspend a customer tenant #
POST /msp/v2/customers/{customerID}/tenants/{tenantID}/unsuspend Unsuspend a customer tenant #
GET /msp/v3/customers/{customerID}/tenants/{tenantID} Get tenant details #
PATCH /msp/v3/customers/{customerID}/tenants/{tenantID} Patch an existing tenant #
GET /msp/v2/storage-regions Get Storage Region details #
GET /msp/v2/tasks/{taskID} Get task details #
POST /msp/reporting/v2/reports/mspCommitAndBalance Get MSP Commit and Balance Report #
POST /msp/reporting/v2/reports/mspservicemonitoringDataProtectionViolationsReport View Data Protection Violations Report #
POST /msp/reporting/v2/reports/mspservicemonitoringDataProtectionCustomerCoverageReport View Data Protection Customer Coverage Report #
POST /msp/reporting/v2/reports/mspGlobalUsage Get Global Usage Report #
POST /msp/reporting/v2/reports/consumptionItemized Get Itemized Tenant Consumption Report v2.0 #
POST /msp/reporting/v2/reports/quotaItemized Get Itemized Tenant Quota Report v2.0 #
POST /msp/reporting/v3/reports/mspGlobalUsage Get Global Usage Report v2.0 #
POST /msp/reporting/v3/reports/consumptionItemized Get Itemized Tenant Consumption Report v2.0 #
POST /msp/reporting/v3/reports/quotaItemized Get Itemized Tenant Quota Report v2.0 #
POST /msp/reporting/v2/reports/mspChargebackLicenseStateReport Get Customer and License Daily Report #
POST /msp/reporting/v2/reports/mspChargebackLicenseStateMonthlyReport Get Customer and License Monthly Report #
POST /msp/reporting/v2/reports/mspChargebackTenantConsumptionReport Get MSP Chargeback Tenant Consumption Report #
POST /msp/reporting/v2/reports/mspChargebackTenantConsumptionMonthlyReport Get MSP Chargeback Tenant Consumption Monthly Report #
POST /msp/reporting/v2/reports/mspServiceMonitoringQuotaManagement View Quota Management Report #
POST /msp/reporting/v2/reports/mspServiceMonitoringQuotaViolations View Quota Violations Report #
POST /msp/reporting/v1/reports/mspEWAlertHistory View Alert History Report #
POST /msp/reporting/v1/reports/mspEWBackupActivity View Backup Activity Report #
POST /msp/reporting/v1/reports/mspEWResourceStatus View Resource Status Report #
POST /msp/reporting/v1/reports/mspEWStorageConsumptionbyBackupSets View Storage Consumption by BackupSets Report #
POST /msp/reporting/v1/reports/mspEWDisasterRecoveryReplicationActivity View Disaster Recovery Replication Activity Report #
POST /msp/reporting/v1/reports/mspEWDisasterRecoveryFailbackActivity View Disaster Recovery Failback Activity Report #
POST /msp/reporting/v1/reports/mspEWDisasterRecoveryFailoverActivity View Disaster Recovery Failover Activity Report #
POST /msp/reporting/v1/reports/mspEPAlert View Alert Report #
POST /msp/reporting/v1/reports/mspEPUsers View Users Report #
POST /msp/reporting/v1/reports/mspEPLicenseUsage View License Usage Report #
POST /msp/reporting/v1/reports/mspEPUserProvisioning View User Provisioning Report #
POST /msp/reporting/v1/reports/mspEPUserRollout View User Rollout Report #
POST /msp/reporting/v1/reports/mspEPLastBackupStatus View Last Backup Status Report data #
POST /msp/reporting/v1/reports/mspEPStorageStatistics View storage statistics of MSP customers #
POST /msp/reporting/v1/reports/mspEPStorageAlert View storage alerts of MSP customers #
POST /msp/reporting/v1/reports/mspEPCloudCacheStatistics View cloud cache statistics of MSP customers #
POST /msp/reporting/v1/reports/mspDGRollbackActions View Rollback Actions Report #
POST /msp/reporting/v1/reports/mspDGDataProtectionRisk View Data Protection Risk Report #
POST /msp/reporting/v1/reports/mspEPRestoreActivity View Restore Activity Report #
POST /msp/reporting/v1/reports/mspEPPreservedUsersDataSources View Preserved Users Datasources Report #
POST /msp/reporting/v1/reports/mspEWRestoreActivity View Restore Activity Report #
POST /msp/reporting/v1/reports/mspGroupsRestoreActivity View Groups Restore Activity Report #
POST /msp/reporting/v1/reports/mspTeamsRestoreActivity View Teams Restore Activity Report #
POST /msp/reporting/v1/reports/mspPublicFolderRestoreActivity View Public Folder Restore Activity Report #
POST /msp/reporting/v1/reports/mspSharePointRestoreActivity View SharePoint Online Restore Activity Report #
POST /msp/reporting/v1/reports/mspM365UserRestoreActivity View User Restore Activity Report #
POST /msp/reporting/v1/reports/mspSharePointBackupActivity View SharePoint Online Backup Activity Report #
POST /msp/reporting/v1/reports/mspTeamsBackupActivity View Teams Backup Activity Report #
POST /msp/reporting/v1/reports/mspM365GroupsDiscovery View Groups Discovery Report #
POST /msp/reporting/v1/reports/mspM365TeamsDiscovery View Teams Discovery Report #
POST /msp/reporting/v1/reports/mspM365PreservedUsersDatasources View Preserved Users Datasources Report #
POST /msp/reporting/v1/reports/mspM365SharePointSiteDiscovery View SharePoint Site Discovery Report #
POST /msp/reporting/v1/reports/mspM365UserProvisioning View User Provisioning Report #
POST /msp/reporting/v1/reports/mspGroupsBackupActivity View Groups Backup Activity Report #
POST /msp/reporting/v1/reports/mspM365UserLastBackupStatus View User Last Backup Status Report #
POST /msp/reporting/v1/reports/mspPublicFolderBackupActivity View Public Folder Backup Activity Report #
POST /msp/reporting/v1/reports/mspM365UserCountAndStatus View Users Count & Status Report #
POST /msp/reporting/v1/reports/mspM365UserWorkload View User Workload Report #
POST /msp/reporting/v1/reports/mspM365StorageConsumption View Storage Consumption Report #
POST /msp/reporting/v1/reports/mspM365LicenseUsage View License Usage Report #
POST /msp/reporting/v1/reports/mspM365Alerts View Alert Report #
POST /msp/reporting/v1/reports/mspGoogleUserRestoreActivity View User Restore Activity Report #
POST /msp/reporting/v1/reports/mspGoogleSharedDriveRestoreActivity View Google Shared Drive Restore Activity Report #
POST /msp/reporting/v1/reports/mspGooglePreservedUsersDatasources View Preserved Users Datasources Report #
POST /msp/reporting/v1/reports/mspGoogleStorageConsumption View Storage Consumption Report #
POST /msp/reporting/v1/reports/mspGoogleSharedDriveBackupActivity View Google Shared Drive Backup Activity Report #
POST /msp/reporting/v1/reports/mspGoogleUserProvisioning View User Provisioning Report #
POST /msp/reporting/v1/reports/mspGoogleUserLastBackupStatus View User Last Backup Status Report #
POST /msp/reporting/v1/reports/mspGoogleUserCountAndStatus View Users Count & Status Report #
POST /msp/reporting/v1/reports/mspGoogleUserWorkload View User Workload Report #
POST /msp/reporting/v1/reports/mspGoogleLicenseUsage View License Usage Report #
POST /msp/reporting/v1/reports/mspGoogleAlerts View Alert Report #
POST /msp/reporting/v2/reports/mspSfdcBackupActivity View Backup Activity Report #
POST /msp/reporting/v2/reports/mspSfdcDataRestoreActivity View Data Restore Activity Report #
POST /msp/reporting/v2/reports/mspSfdcArchivalActivity View Archival Activity Report #
POST /msp/reporting/v2/reports/mspSfdcArchivalRestoreActivity View Archival Restore Activity Report #
POST /msp/reporting/v2/reports/mspSfdcSandboxSeedingActivity View Sandbox Seeding Activity Report #
GET /msp/dataProtection/v1/customers/{customer_global_id}/rules List rules for a customer #
GET /msp/dataProtection/v1/customers/{customer_global_id}/workloads/{workload_id}/entities List entities for a customer's workload #
GET /msp/dataProtection/v1/customers/{customer_global_id}/workloads/{workload_id}/resources Search resources for a customer's workload #
GET /msp/dataProtection/v1/rules List data protection rules #
POST /msp/dataProtection/v1/rules Create a data protection rule #
GET /msp/dataProtection/v1/rules/{rule_id} Get rule details #
GET /msp/dataProtection/v1/rules/{rule_id}/customers List customers mapped to a rule #
GET /msp/dataProtection/v1/rules/{rule_id}/exclusions List exclusions for a rule #
GET /msp/dataProtection/v1/workloads List available workloads #
GET /msp/quota/v1/customers/configurations List quota configurations #
PUT /msp/quota/v1/customers/{customerId}/products/{productId}/configurations Set quota configurations #
GET /msp/quota/v1/warningThreshold Get warning threshold #
PUT /msp/quota/v1/warningThreshold Set warning threshold #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/msp"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

druva-msp-openapi.json Raw ↑
{"openapi":"3.0.2","info":{"title":"Druva MSP","version":"1.0.0","x-logo":{"url":""}},"servers":[{"url":"https://apis.druva.com/"}],"paths":{"/msp/v2/admins":{"get":{"tags":["Admins"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"schema":{"type":"string"},"name":"pageToken","in":"query","description":"- The token to access the next page of results. Use the token value received in the previous response's parameter 'nextPageToken'.\n - Keep this field blank in the first request."},{"name":"pageSize","description":"Specify the number of records you want to receive in the API response. Example-30","schema":{"format":"int64","default":10,"maximum":500,"type":"integer"},"in":"query"},{"name":"id","description":"Specify the admin IDs you want to list, separated by commas. Example - 1,2","schema":{"type":"array","items":{"format":"int64","type":"integer"}},"style":"form","explode":false,"in":"query"},{"name":"email","description":"Specify the email addresses of the admins you wish to list, separated by commas. \n Example- email@example.com, email1@example.com","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"in":"query"},{"name":"role","description":"Specify the role IDs of admins you wish to list, separated by commas. Example- 2, 4 \n - 2 - MSP Admin\n - 3 - Tenant Admin\n - 4 - Read Only Admin\n","schema":{"type":"array","items":{"format":"int64","enum":[2,3,4],"type":"integer"}},"style":"form","explode":false,"in":"query"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAdminsV2Response"}}},"description":"Ok"},"400":{"description":"Bad Request"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request could not be processed due to an internal error. Try again later. If the error persists, contact Druva Support."}},"security":[{"Bearer":[]}],"operationId":"ListAdminsV2","summary":"List all administrators","description":"Returns the list of admins with their details."}},"/msp/v3/servicePlans":{"get":{"tags":["Service Plans"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"pageSize","description":"Specify the number of records you wish to receive in API response. Example - 30.","schema":{"type":"string"},"in":"query"},{"name":"pageToken","description":"- The token to access the next page of results. Use the token value received in the previous response's parameter 'nextPageToken'.\n- Keep this field blank in the first request.\n","schema":{"type":"string"},"in":"query"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServicePlansV3Response"},"examples":{"ListServicePlanV3 Sample 1":{"value":"{\n  \"servicePlans\": [\n    {\n      \"id\": 1,\n      \"name\": \"Default service plan\",\n      \"status\": 1,\n      \"products\": [\n        {\n          \"edition\": \"elite\",\n          \"productID\": 1,\n          \"features\": [\n            {\n              \"name\": \"string\",\n              \"isEnabled\": true,\n              \"attrs\": [\n                {\n                  \"name\": \"string\",\n                  \"value\": {}\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n\t{\n      \"id\": 2,\n      \"name\": \"Sample service plan\",\n      \"status\": 1,\n      \"products\": [\n        {\n          \"edition\": \"elite\",\n          \"productID\": 1,\n          \"features\": [\n            {\n              \"name\": \"string\",\n              \"isEnabled\": true,\n              \"attrs\": [\n                {\n                  \"name\": \"string\",\n                  \"value\": {}\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  ],\n  \"nextPageToken\": \"eyJwYWdlU2l6ZSI6IDEwMH0=\"\n}"}}}},"description":"Ok"},"400":{"description":"Bad Request"},"401":{"description":"The request did not include a valid access token. Provide a valid token to proceed."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request could not be processed due to an internal error. Try again later. If the error persists, contact Druva Support."}},"security":[{"Bearer":[]}],"operationId":"ListServicePlansV3","summary":"List all service plans","description":"Returns the list of service plans configured along with the details."}},"/msp/v3/servicePlans/{servicePlanID}":{"get":{"tags":["Service Plans"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"servicePlanID","description":"Specify the unique ID of a service plan. Get the ID of a service plan using the 'List all service plans' API.","schema":{"format":"int64","type":"integer"},"in":"path","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServicePlanV3"}}},"description":"Ok"},"400":{"description":"Bad Request"},"401":{"description":"The request did not include a valid access token. Provide a valid token to proceed."},"404":{"description":"The requested resource was not found."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request could not be processed due to an internal error. Try again later. If the error persists, contact Druva Support."}},"security":[{"Bearer":[]}],"operationId":"GetServicePlanV3","summary":"Get service plan","description":"Returns information about a particular service plan using provided service plan ID."}},"/msp/v3/customers":{"get":{"tags":["Customers"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"pageSize","description":"Specify the number of records you wish to receive in API response. Example - 30. \n Note: Maximum allowed page size is 100. \n pageSize and pageToken are mutually exclusive options.","schema":{"type":"string"},"in":"query"},{"name":"pageToken","description":"- The token to access the next page of results. Use the token value received in the previous response's parameter 'nextPageToken'. \n- Keep this field blank in the first request.\n","schema":{"type":"string"},"in":"query"},{"name":"includeFeatures","description":"Specify whether customer features should be included in the response. \n includeFeatures and pageToken are mutually exclusive options.","schema":{"type":"boolean"},"in":"query"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCustomersV3Response"},"examples":{"ListCustomers Sample1":{"value":"{\n  \"customers\": [\n    {\n      \"id\": \"bde7f8c2-d063-4a4a-9a8f-c2ea5aff42f3-198\",\n      \"accountName\": \"Druva\",\n      \"address\": \"213 Derrick Street Boston, MA 02130 USA\",\n      \"phone\": \"12345678910\",\n      \"customerName\": \"Druva\",\n      \"features\": [\n        {\n          \"name\": \"Security Posture and Observability\"\n        }\n      ],\n      \"tenantAdmins\": [\n        1,\n        2,\n        3\n      ],\n      \"status\": 1,\n      \"createdOn\": \"2022-10-25T00:00:00Z\",\n      \"activeSince\": \"2022-10-25T00:00:00Z\",\n      \"attributes\": [\n        {\n          \"name\": \"licenseManagementAllowed\",\n          \"value\": \"1\"\n        },\n        {\n          \"name\": \"dataAccessAllowed\",\n          \"value\": \"1\"\n        }\n      ],\n      \"cloud\": 0\n    },\n\t{\n      \"id\": \"bde7f8c2-d063-4a4a-9a8f-c2ea5aff42f3-199\",\n      \"accountName\": \"Druvas\",\n      \"address\": \"214 Derrick Street Boston, MA 02130 USA\",\n      \"phone\": \"12345678911\",\n      \"customerName\": \"Druva-Customer\",\n      \"features\": [\n        {\n          \"name\": \"Security Posture and Observability\"\n        }\n      ],\n      \"tenantAdmins\": [\n        1,\n        3\n      ],\n      \"status\": 1,\n      \"createdOn\": \"2022-10-21T00:00:00Z\",\n      \"activeSince\": \"2022-10-21T00:00:00Z\",\n      \"attributes\": [\n        {\n          \"name\": \"licenseManagementAllowed\",\n          \"value\": \"0\"\n        },\n        {\n          \"name\": \"dataAccessAllowed\",\n          \"value\": \"0\"\n        }\n      ],\n      \"cloud\": 2\n    }\n  ],\n  \"nextPageToken\": \"eyJwYWdlU2l6ZSI6IDEwMH0=\"\n}"}}}},"description":"Ok"},"400":{"description":"Bad Request"},"401":{"description":"The request did not include a valid access token. Provide a valid token to proceed."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request could not be processed due to an internal error. Try again later. If the error persists, contact Druva Support."}},"security":[{"Bearer":[]}],"operationId":"GetCustomersV3","summary":"List all customers","description":"Returns the list of all customers."},"post":{"requestBody":{"description":"Specify the details for a new customer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomerV3Request"}}}},"tags":["Customers"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreatedResponse"}}},"description":"Ok"},"400":{"description":"Bad Request"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request was not processed due to an internal error in MSP Portal Service."}},"security":[{"Bearer":[]}],"operationId":"CreateCustomerV3","summary":"Create a new customer","description":"- The API supports the creation of Druva Provisioned customers.\n- If no attributes are specified, an MSC Provisioned managed customer is created by default.\n- The only supported attributes are licenseManagedAllowed and dataAccessAllowed. Providing any other attributes will result in an error.\n- For dataAccessAllowed, the only supported value is 1 (Managed).\n- This is an asynchronous operation. Upon initiation, a taskID is generated and can be retrieved from the success response. Use this taskID with the 'Get Task Details' API to track the progress of the operation.\n"}},"/msp/v3/customers/{customerID}":{"get":{"tags":["Customers"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"customerID","description":"Specify the unique ID of the customer you wish to update. Get the ID of the customer using the 'List all customers' API.","schema":{"type":"string"},"in":"path","required":true},{"name":"includeFeatures","description":"Specify whether customer features should be included in the response.","schema":{"type":"boolean"},"in":"query"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCustomerV3Response"},"examples":{"GetCustomer Sample1":{"value":"{\n  \"id\": \"bde7f8c2-d063-4a4a-9a8f-c2ea5aff42f3-198\",\n  \"accountName\": \"Druva\",\n  \"address\": \"213 Derrick Street Boston, MA 02130 USA\",\n  \"phone\": \"12345678910\",\n  \"customerName\": \"Druva\",\n  \"features\": [\n    {\n      \"name\": \"Security Posture and Observability\"\n    }\n  ],\n  \"tenantAdmins\": [\n    1,\n    2,\n    3\n  ],\n  \"status\": 1,\n  \"createdOn\": \"2022-10-25T00:00:00Z\",\n  \"activeSince\": \"2022-10-25T00:00:00Z\",\n  \"attributes\": [\n    {\n      \"name\": \"licenseManagementAllowed\",\n      \"value\": \"1\"\n    },\n    {\n      \"name\": \"dataAccessAllowed\",\n      \"value\": \"1\"\n    }\n  ],\n  \"cloud\": 0\n}"}}}},"description":"Ok"},"400":{"description":"Bad Request"},"401":{"description":"The request did not include a valid access token. Provide a valid token to proceed."},"404":{"description":"The requested resource was not found."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request could not be processed due to an internal error. Try again later. If the error persists, contact Druva Support."}},"security":[{"Bearer":[]}],"operationId":"GetCustomerV3","summary":"Get customer details","description":"Returns information about a customer using Customer ID."},"put":{"tags":["Customers"],"parameters":[{"description":"Authorization header should contain the Bearer access token.","name":"Authorization","in":"header","required":true,"schema":{"type":"string"}},{"description":"Specify the unique ID of the customer you wish to update. Get the unique ID of the customer using the 'List all customers' API.","name":"customerID","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Specify the details to update the customer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomerV3Request"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreatedResponse"}}},"description":"Ok"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"The requested resource was not found."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request was not processed due to an internal error in MSP Portal Service."}},"operationId":"UpdateCustomerV3ForDoc","summary":"Update customer details","description":"Update existing customer details.\n- The only supported attributes are licenseManagedAllowed and dataAccessAllowed. Providing any other attributes will result in an error.\n- For dataAccessAllowed, the existing value cannot be changed.\n- Refer this page for supported attributes: https://developer.druva.com/docs/msp-product-and-attribute-values.\n- After you initiate the operation, it is queued and a task ID is generated. You can get the task ID from the success response. Use this task ID in the 'Get Task Details' API to track the operation's progress.\n- You must provide existing information in all the fields that do not require an update."}},"/msp/v3/customers/{customerID}/events":{"get":{"tags":["Events"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"customerID","description":"Specify the unique ID of the customer. Get the ID of the customer using the 'List all customers' API.","schema":{"type":"string"},"in":"path","required":true},{"name":"pageSize","description":"Specify the number of records you wish to receive in a single API response.\n The maximum allowed value is 500.\n Example - 30.","schema":{"type":"integer","default":500,"maximum":500},"in":"query"},{"name":"pageToken","description":"The token to access the next page of results. Use the token value received in the previous response's parameter 'nextPageToken'.\n Keep this field blank in the first request.\n","schema":{"type":"string"},"in":"query"},{"name":"category","description":"Specify the category of events to be included in response.\n","schema":{"type":"string","enum":["EVENT","AUDIT","ALERT"]},"in":"query"},{"name":"type","description":"Specify the type of events to be included in response.\n For all valid values of event types, please refer to : <a href=\"https://developer.druva.com/docs/events-api-for-msps#supported-druva-workloads\">Supported Druva Workloads</a>. New type of events will be added in the list with time.","schema":{"type":"string"},"in":"query"},{"name":"syslogSeverity","description":"Specify the syslogSeverity of events to be included in response.\n Specify the severity code as follows:\n\nFor Emergency use 0\n\nFor Alert (action must be taken immediately) use 1\n\nFor Critical (critical conditions) use 2\n\nFor Error (error conditions) use 3\n\nFor Warning (warning conditions) use 4\n\nFor Notice (normal but significant condition) use 5\n\nFor Informational (informational messages) use 6\n\nFor Debug (debug-level messages) use 7","schema":{"type":"integer"},"in":"query"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCustomerEventsResponse"}}},"description":"Ok"},"400":{"description":"Bad Request"},"401":{"description":"The request did not include a valid access token. Provide a valid token to proceed."},"404":{"description":"The requested resource was not found."},"429":{"description":"Too many requests"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request could not be processed due to an internal error. Try again later. If the error persists, contact Druva Support."}},"security":[{"Bearer":[]}],"operationId":"GetCustomerEvents","summary":"List all customer level events","description":"Returns the list of all events generated at a customer level.\n- Recommended polling frequency per customer - **only once in 30 minutes**."}},"/msp/v2/customers/{customerID}/token":{"post":{"requestBody":{"description":"Generate API Access Token for a customer.","content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/GenerateTokenRequest"}}}},"tags":["Customers"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"customerID","description":"Specify the unique ID of the customer for whom you wish to generate the API access token. Get the ID of the customer using the 'List all customers' API.","schema":{"type":"string"},"in":"path","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTokenResponse"}}},"description":"Ok"},"400":{"description":"Bad Request"},"404":{"description":"The requested resource was not found."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request was not processed due to an internal error in MSP Portal Service."}},"security":[{"Bearer":[]}],"operationId":"Generate API access token","summary":"Generate API access token for a customer","description":"Use this API to generate an API access token that is unique to the customer. Use this token for accessing Druva APIs relevant to the specific customer.\n"}},"/msp/v3/customers/{customerID}/tenants":{"post":{"requestBody":{"description":"Specify the details for a new tenant.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTenantV3Request"}}}},"tags":["Tenants"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"customerID","description":"Specify the unique ID of the customer for whom you wish to create a new tenant. Get the ID of the customer using the 'List all customers' API.","schema":{"type":"string"},"in":"path","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreatedResponse"}}},"description":"Ok"},"400":{"description":"Bad Request"},"422":{"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request was not processed due to an internal error in MSP Portal Service."}},"security":[{"Bearer":[]}],"operationId":"CreateTenantV3","summary":"Create a new tenant","description":"- Creates a new tenant for a customer.\n- After you initiate the operation, it is queued and a task ID is generated. You can get the task ID from the success response. Use this task ID in the 'Get Task Details' API to track the operation's progress.\n- Note\n    - This API does not support the creation of a Sandbox tenant.\n    - Enterprise Workloads license is valid for eight years, while a SaaS Apps and Endpoints license is valid for three years.\n    - Storage Regions once added, cannot be removed.\n    - For SaaS Apps & Endpoint and Enterprise Workloads with Business Edition, any one storage region is supported.\n   - The AWS and Azure storage regions must be in the same geographic location for ‘Business’ edition.\n  -  At least one AWS storage region is required for Enterprise Workloads.\n  - All features enabled in the associated Service plan will be enabled compulsorily for the tenant. Need to send those feature attributes in the API.\n  - Feature Endpoints, D365 and Okta do not support business edition.\n  - Premium Security is only supported for Enterprise Workloads.\n   - If 'Premium Security' needs to be enabled for a tenant, Security Posture & Observability and Enterprise Workloads Accelerated Ransomware Recovery features both should be enabled for that tenant. \n   - For valid products and their values, see - https://developer.druva.com/docs/msp-product-and-attribute-values\n  - View all supported storage regions here - https://help.druva.com/en/articles/15162912-aws-region-availability-matrix\n."}},"/msp/v2/events":{"get":{"tags":["Events"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"pageSize","description":"Specify the number of records you wish to receive in a single API response.\n The maximum allowed value is 500.\n Example - 30.","schema":{"type":"integer","default":500,"maximum":500},"in":"query"},{"name":"pageToken","description":"Specify the token to access the next page of results. Keep this field blank in the first request. Use the token value received in the previous response's parameter 'nextPageToken'","schema":{"type":"string"},"in":"query"},{"name":"category","description":"Specify the category of events to be included in response.\n","schema":{"type":"string","enum":["EVENT","AUDIT","ALERT"]},"in":"query"},{"name":"type","description":"Specify the type of events to be included in response.\n For all valid values of event types, please refer to : <a href=\"https://developer.druva.com/docs/supported-msp-events\">Supported MSP Events</a>. \n New type of events will be added in the list with time.","schema":{"type":"string"},"in":"query"},{"name":"syslogSeverity","description":"Specify the syslogSeverity of events to be included in response.\n Specify the severity code as follows:\n\nFor Emergency use 0\n\nFor Alert (action must be taken immediately) use 1\n\nFor Critical (critical conditions) use 2\n\nFor Error (error conditions) use 3\n\nFor Warning (warning conditions) use 4\n\nFor Notice (normal but significant condition) use 5\n\nFor Informational (informational messages) use 6\n\nFor Debug (debug-level messages) use 7","schema":{"type":"integer","enum":[0,1,2,3,4,5,6,7]},"in":"query"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMSPEventsResponse"}}},"description":"Ok"},"400":{"description":"Bad Request"},"401":{"description":"The request did not include a valid access token. Provide a valid token to proceed."},"429":{"description":"Too many requests"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request could not be processed due to an internal error. Try again later. If the error persists, contact Druva Support."},"503":{"description":"Service is not available"}},"security":[{"Bearer":[]}],"operationId":"GetMSPEvents","summary":"List all MSP level events","description":"Returns the list of events generated at MSP level. For the list of valid event types, see [Supported MSP events](/docs/supported-msp-events)."}},"/msp/v3/tenants":{"get":{"tags":["Tenants"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"pageToken","description":"Specify the token to access the next page of results. Keep this field blank in the first request. Use the token value received in the previous response's parameter 'nextPageToken'.","schema":{"type":"string"},"in":"query"},{"name":"customerIds","description":"Specify the unique customer id for which you want to retrieve the tenant information.","schema":{"type":"string"},"in":"query"},{"name":"pageSize","description":"Specify the number of records you wish to receive in API response. Example - 30. Maximum allowed 'pageSize' value is 100.","schema":{"type":"string"},"in":"query"},{"name":"includeFeatures","description":"Specify whether you wish to receive the features list in the API response. Example - true. Default 'includeFeatures' value is false.","schema":{"type":"boolean"},"in":"query"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTenantsV3Response"},"examples":{"ListTenant Sample 1":{"value":"{\n  \"tenants\": [\n    {\n      \"id\": \"e293b4c7-a984-4813-8fba-526d5b0edc80\",\n      \"customerID\": \"78ccbc1c-0ca0-4077-ad94-a74479c299b8\",\n      \"productID\": 2,\n      \"licenseExpiryDate\": \"2022-10-25T00:00:00Z\",\n      \"quota\": 1.5,\n      \"quotaEndDate\": \"2022-10-25T00:00:00Z\",\n      \"quotaStartDate\": \"2022-10-25T00:00:00Z\",\n      \"servicePlanID\": 1,\n \"edition\": \"enterprise\",\n     \"storageRegions\": [\n        {\n              \"name\": \"us-east-1\",\n              \"storageProvider\": 1\n            }\n      \n],\n      \"features\": [\n        {\n          \"name\": \"M365\",\n          \"attrs\": [\n            {\n              \"name\": \"userCount\",\n              \"value\": 100\n            }\n          ]\n        }\n      ],\n      \"tenantType\": 2,\n      \"status\": 1,\n      \"createdOn\": \"2022-10-25T00:00:00Z\",\n      \"activeSince\": \"2022-10-25T00:00:00Z\",\n      \"deleteDate\": \"2022-10-25T00:00:00Z\"\n    },\n\t{\n      \"id\": \"e433b4c7-a984-4813-8fba-526d5b0edc81\",\n      \"customerID\": \"91ccbc1c-0ca0-4077-ad94-a74479c299b8\",\n      \"productID\": 2,\n      \"licenseExpiryDate\": \"2022-10-25T00:00:00Z\",\n      \"quota\": 1.5,\n      \"quotaEndDate\": \"2022-10-25T00:00:00Z\",\n      \"quotaStartDate\": \"2022-10-25T00:00:00Z\",\n      \"servicePlanID\": 1,\n  \n      \"edition\": \"enterprise\",\n     \"storageRegions\": [\n        {\n              \"name\": \"us-east-1\",\n              \"storageProvider\": 1\n            }\n      ],\n      \"features\": [\n        {\n          \"name\": \"M365\",\n          \"attrs\": [\n            {\n              \"name\": \"userCount\",\n              \"value\": 100\n            }\n          ]\n        }\n      ],\n      \"tenantType\": 2,\n      \"status\": 1,\n      \"createdOn\": \"2022-10-25T00:00:00Z\",\n      \"activeSince\": \"2022-10-25T00:00:00Z\",\n      \"deleteDate\": \"2022-10-25T00:00:00Z\"\n    }\n  ],\n  \"nextPageToken\": \"eyJwYWdlU2l6ZSI6IDEwMH0=\"\n}"}}}},"description":"Ok"},"400":{"description":"Bad Request"},"401":{"description":"The request did not include a valid access token. Provide a valid token to proceed."},"404":{"description":"The requested resource was not found."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request could not be processed due to an internal error. Try again later. If the error persists, contact Druva Support."}},"security":[{"Bearer":[]}],"operationId":"GetTenantsV3","summary":"Get tenants list","description":"Returns list of tenants."}},"/msp/v2/customers/{customerID}/tenants/{tenantID}/suspend":{"post":{"tags":["Tenants"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"customerID","description":"Specify the ID of a customer whose tenant you wish to suspend . Get the ID of a customer using the 'List all customers' API.","schema":{"type":"string"},"in":"path","required":true},{"name":"tenantID","description":"Specify the ID of a tenant which you wish to suspend . Get the ID of a tenant using the 'List all tenants' API.","schema":{"type":"string"},"in":"path","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreatedResponse"}}},"description":"Ok"},"400":{"description":"Bad Request"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request was not processed due to an internal error in MSP Portal Service."}},"security":[{"Bearer":[]}],"operationId":"SuspendTenant","summary":"Suspend a customer tenant","description":"Suspend a customer's tenant.\n- Note\n    - After the tenant or product is suspended, you cannot access the tenant's console.\n    - After you initiate the operation, it is queued and a task ID is generated. You can get the task ID from the success response. Use this task ID in the 'Get Task Details' API to track the operation's progress.\n"}},"/msp/v2/customers/{customerID}/tenants/{tenantID}/unsuspend":{"post":{"tags":["Tenants"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"customerID","description":"Specify the ID of a customer whose tenant you wish to un-suspend . Get the ID of a customer using the 'List all customers' API.","schema":{"type":"string"},"in":"path","required":true},{"name":"tenantID","description":"Specify the ID of a tenant which you wish to un-suspend . Get the ID of a tenant using the 'List all tenants' API.","schema":{"type":"string"},"in":"path","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreatedResponse"}}},"description":"Ok"},"400":{"description":"Bad Request"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request was not processed due to an internal error in MSP Portal Service."}},"security":[{"Bearer":[]}],"operationId":"UnsuspendTenant","summary":"Unsuspend a customer tenant","description":"- Unsuspends specified customer's tenant.\n- After you initiate the operation, it is queued and a task ID is generated. You can get the task ID from the success response. Use this task ID in the 'Get Task Details' API to track the operation's progress.\n"}},"/msp/v3/customers/{customerID}/tenants/{tenantID}":{"get":{"tags":["Tenants"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"customerID","description":"Specify the unique ID of a customer in MSP. Get the ID of a customer using the 'List all customers' API.","schema":{"type":"string"},"in":"path","required":true},{"name":"tenantID","description":"Specify the unique ID of a tenant in MSP. Get the ID of a tenant using the 'List all tenants' API.","schema":{"type":"string"},"in":"path","required":true},{"name":"includeFeatures","description":"Specify whether you wish to receive the features list in the API response. Example - true. Default 'includeFeatures' value is false.","schema":{"type":"boolean"},"in":"query"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTenantV3Response"}}},"description":"Ok"},"400":{"description":"Bad Request"},"401":{"description":"The request did not include a valid access token. Provide a valid token to proceed."},"404":{"description":"The requested resource was not found."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}},"description":"The request could not be processed due to an internal error. Try again later. If the error persists, contact Druva Support."}},"security":[{"Bearer":[]}],"operationId":"GetTenantV3","summary":"Get tenant details","description":"Returns information about a particular customer's tenant."},"patch":{"requestBody":{"description":"Specify the details for a new customer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchTenantRequest"}}}},"tags":["Tenants"],"parameters":[{"name":"Authorization","description":"Specify the Bearer access token","schema":{"type":"string"},"in":"header","required":true},{"name":"customerID","description":"Specify the ID of a customer for which you wish to update tenant. Get the ID of a customer using the 'List all customers' API.","schema":{"type":"string"},"in":"path","required":true},{"name":"tenantID","description":"Specify the ID of a tenant for which you wish to update. Get the ID of a tenant using the 'List all tenants' API.","schema":{"type":"st

# --- truncated at 32 KB (545 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/druva/refs/heads/main/openapi/druva-msp-openapi.json