openapi: 3.2.0 info: title: Druva MSP Quota API version: 1.0.0 x-logo: url: '' description: Lists the APIs to get and manage quota configurations and warning thresholds. servers: - url: https://apis.druva.com/ security: [] tags: - name: Quota description: Lists the APIs to get and manage quota configurations and warning thresholds. paths: /msp/quota/v1/customers/configurations: get: tags: - Quota parameters: - name: Authorization description: Specify the Bearer access token schema: type: string in: header required: true - name: customerIds description: "Specify the customer global IDs you want to list, separated by commas. Get the unique ID of the customer using the 'List all customers' API.\n Example: bde7f8c2-d063-4a4a-9a8f-c2ea5aff42f3-198,bde7f8c2-d063-4a4a-9a8f-c2ea5aff42f3-199\n- customerIds and pageToken are mutually exclusive options." schema: type: string in: query - name: pageSize description: 'Specify the number of records you wish to receive in a single API response. The default is 50. The allowed range is 1 to 100. - pageSize and pageToken are mutually exclusive options.' schema: type: integer format: int32 default: 50 minimum: 1 maximum: 100 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''. - Keep this field blank in the first request. - pageToken cannot be combined with pageSize or customerIds.' schema: type: string in: query responses: '200': content: application/json: schema: $ref: '#/components/schemas/QuotaListQuotaConfigResponse' description: Ok '400': description: Bad Request - Invalid pagination, filters, or arguments '401': description: The request did not include a valid access token. Provide a valid token to proceed. '403': description: Forbidden - Insufficient permissions or customer access '404': description: Not Found - Resource not found (for example, customer or product license) '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: ListQuotaConfigRequestForDoc summary: List quota configurations description: 'Returns a paginated list of quota configurations for the MSP. - Use customerIds (comma-separated), pageSize, and pageToken for pagination. - pageToken cannot be combined with pageSize or customerIds. - Default page size is 50 when pageToken is not used. pageSize must be between 1 and 100.' /msp/quota/v1/customers/{customerId}/products/{productId}/configurations: put: tags: - Quota 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 unique ID of the customer using the 'List all customers' API. schema: type: string in: path required: true - name: productId description: 'Specify the product ID. - 1 - Enterprise Workloads - 2 - SaaS Apps and Endpoints' schema: type: integer format: int32 enum: - 1 - 2 in: path required: true requestBody: description: Specify the quota configuration entries for the customer and product. required: true content: application/json: schema: $ref: '#/components/schemas/QuotaSaveQuotaConfigRequestBody' responses: '200': description: Ok - Configuration saved '400': description: Bad Request - Invalid configuration or arguments '401': description: The request did not include a valid access token. Provide a valid token to proceed. '403': description: Forbidden - Insufficient permissions or customer not accessible '404': description: Not Found - Customer, license, or configuration 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: SaveQuotaConfigRequestForDoc summary: Set quota configurations description: 'Creates or replaces quota configurations for a customer and product. - productId in the path: 1 = Enterprise Workloads, 2 = SaaS Apps and Endpoints. - Each config entry defines productModuleId, consumptionParameter, quota, unit, and optional increment settings. - This operation replaces the existing configuration for the specified customer and product.' /msp/quota/v1/warningThreshold: get: tags: - Quota 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/QuotaGetWarningThresholdResponse' description: Ok '401': description: The request did not include a valid access token. Provide a valid token to proceed. '403': description: Forbidden - Insufficient permissions '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: GetWarningThresholdRequestForDoc summary: Get warning threshold description: 'Returns the MSP-level quota warning threshold percentage, if set. - The value ranges from 50 to 99. - thresholdPercentage is null if a warning threshold is not configured.' put: tags: - Quota parameters: - name: Authorization description: Specify the Bearer access token schema: type: string in: header required: true requestBody: description: Specify the warning threshold percentage, or send null to clear a previously set value. required: true content: application/json: schema: $ref: '#/components/schemas/QuotaSetWarningThresholdRequest' responses: '200': description: Ok - Threshold updated '400': description: Bad Request - Invalid threshold or state '401': description: The request did not include a valid access token. Provide a valid token to proceed. '403': description: Forbidden - Insufficient permissions '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: SetWarningThresholdRequestForDoc summary: Set warning threshold description: 'Sets, updates, or clears the MSP-level quota warning threshold. - thresholdPercentage must be between 50 and 99. - Send null for thresholdPercentage to clear a previously set value. - Existing warning-severity alerts may expire when the threshold is lowered or removed.' components: schemas: QuotaConfigEntry: description: A single quota configuration entry in a save request. type: object required: - productModuleId - consumptionParameter - quota - unit properties: productModuleId: type: integer format: int32 description: 'The ID of the product module. - 1 - Enterprise Workloads - 2 - Microsoft 365 - 3 - Endpoints - 4 - Google Workspace This field will be updated in the future for addition of new product modules as and when applicable.' enum: - 1 - 2 - 3 - 4 x-go-name: ProductModuleID consumptionParameter: type: string description: 'Consumption parameter identifier for the module. Must be valid for the specified productModuleId and unit. Enterprise Workloads: Archive Data Cloud Storage, Archive Early Deletion Data, Backend Cloud Storage, Backend Source + Change Storage, Frontend Source Storage, LTR Data Cloud Storage, LTR Early Deletion Data, Total Active Devices or Backup sets, Warm Tier Cloud Storage. Microsoft 365: Total Active Users, Total Active Preserved Users, Frontend Source Storage, Backend Source + Change Storage, Billable Preserved Users, Total Shared Mailbox, Billable Shared Mailboxes. Endpoints and Google Workspace: Total Active Users, Total Active Preserved Users, Frontend Source Storage, Backend Source + Change Storage, Billable Preserved Users.' x-go-name: ConsumptionParameter quota: type: number format: double description: 'Quota value. For TB: 0.01 to less than 1000000. For Count: 1 to 999999 (whole number).' x-go-name: Quota unit: type: string description: Unit of the quota value. enum: - TB - Count x-go-name: Unit incrementSettings: description: Optional automatic increment policy. $ref: '#/components/schemas/QuotaIncrementSettings' QuotaListQuotaConfigResponse: description: Paginated quota configurations. type: object properties: quotaConfigList: type: array description: Quota configurations grouped by customer. items: $ref: '#/components/schemas/QuotaConfigurationList' x-go-name: QuotaConfigList nextPageToken: type: string description: The token to access the next page of results. This parameter will be empty for the last page of results. x-go-name: NextPageToken QuotaSaveQuotaConfigRequestBody: description: Request body for setting quota configurations. Path parameters carry customer and product; the body is the config array. type: object required: - config properties: config: type: array description: Quota configuration entries to create or replace for the customer and product. items: $ref: '#/components/schemas/QuotaConfigEntry' x-go-name: Config APIError: description: APIError defines an application error result format type: object properties: code: type: string message: type: string QuotaGetWarningThresholdResponse: description: Response for getting the warning threshold. type: object properties: thresholdPercentage: type: - integer - 'null' format: int32 description: Warning threshold percentage (50–99) when set; null if not configured. x-go-name: ThresholdPercentage QuotaIncrementSettings: description: 'Optional increment policy. Frequency: 1=Monthly, 2=Quarterly, 3=Half-yearly, 4=Yearly.' type: object required: - incrementBy - frequency - incrementTill properties: incrementBy: type: number format: double description: Amount to add each period. Uses the same range rules as quota for the entry unit. x-go-name: IncrementBy frequency: type: integer format: int32 description: 'Increment cadence. - 1 - Monthly - 2 - Quarterly - 3 - Half-yearly - 4 - Yearly' enum: - 1 - 2 - 3 - 4 x-go-name: Frequency incrementTill: type: string format: date-time description: End of the increment window (RFC3339). x-go-name: IncrementTill skipNextIncrement: type: boolean description: If true, the next scheduled increment is skipped. x-go-name: SkipNextIncrement QuotaIncrementSettingsResponse: description: Increment settings in the list response. type: object properties: incrementBy: type: number format: double description: 'Amount added each period. Must be a whole number if unit is Count with allowed range 1 <= value <= 999999. If unit is TB, allowed range : 0.01 <= value < 1000000.' x-go-name: IncrementBy frequency: type: integer format: int32 description: Increment cadence. 1=Monthly, 2=Quarterly, 3=Half-yearly, 4=Yearly. x-go-name: Frequency incrementTill: type: string format: date-time description: End of the increment window (RFC3339). x-go-name: IncrementTill nextIncrementOn: type: string format: date-time description: Date of the next scheduled increment (RFC3339). x-go-name: NextIncrementOn skipNextIncrement: type: boolean description: If true, the next scheduled increment is skipped. x-go-name: SkipNextIncrement QuotaSetWarningThresholdRequest: description: Body for setting the warning threshold. Send null for thresholdPercentage to clear a previously set value. type: object properties: thresholdPercentage: type: - integer - 'null' format: int32 minimum: 50 maximum: 99 description: Warning threshold percentage (50–99). Send null to clear a previously set value. x-go-name: ThresholdPercentage QuotaConfigurationList: description: Quota configurations for a single customer. type: object properties: customerGlobalId: type: string description: Unique ID of the customer. x-go-name: CustomerGlobalID quotaConfig: type: array description: Quota configuration entries for the customer. items: $ref: '#/components/schemas/QuotaConfigurationResponse' x-go-name: QuotaConfig QuotaConfigurationResponse: description: A quota configuration entry in the list response. type: object properties: productId: type: integer format: int32 description: The ID of the product. 1 - Enterprise Workloads, 2 - SaaS Apps and Endpoints. x-go-name: ProductID productModuleId: type: integer format: int32 description: The ID of the product module. 1 - Enterprise Workloads, 2 - Microsoft 365, 3 - Endpoints, 4 - Google Workspace. x-go-name: ProductModuleID consumptionParameter: type: string description: 'Consumption parameter identifier for the module. Refer this page for supported parameters: ' x-go-name: ConsumptionParameter quotaLimit: type: number format: double description: 'Configured quota limit. Must be a whole number if unit is Count with allowed range 1 <= value <= 999999. If unit is TB, allowed range : 0.01 <= value < 1000000.' x-go-name: QuotaLimit unit: type: string description: Unit of the quota value. TB or Count. x-go-name: Unit incrementSettings: $ref: '#/components/schemas/QuotaIncrementSettingsResponse' securitySchemes: OAuth2: flows: clientCredentials: scopes: {} tokenUrl: https://apis.druva.com/msp/auth/v1/token type: oauth2 Bearer: type: apiKey name: Authorization in: header