openapi: 3.2.0 info: title: DoiT Allocations API description: Programmatic access to DoiT Platform version: v1 servers: - url: https://api.doit.com security: - api_key: [] - tenantId: [] api_key: [] tags: - name: Allocations description: Define how costs are distributed across your organization. paths: /analytics/v1/allocations: get: tags: - Allocations summary: List allocations description: 'Returns a list of allocations that your account has access to. Allocations are listed in reverse chronological order by default.' operationId: listAllocations parameters: - $ref: '#/components/parameters/maxResults' - $ref: '#/components/parameters/pageToken' - name: filter in: query description: 'An expression for filtering the results. Valid fields: **type**, **owner**, **name**, **folderId**.' example: type:custom schema: type: string - name: sortBy in: query description: A field by which the results will be sorted. schema: type: string enum: - id - name - owner - description - type - createTime - updateTime - $ref: '#/components/parameters/sortOrder' responses: '200': description: OK - The request succeeded. content: application/json: schema: type: object properties: pageToken: type: string description: Page token, returned by a previous call, to request the next page of results. rowCount: type: integer description: Total number of allocations in the result set. allocations: type: array items: $ref: '#/components/schemas/AllocationListItem' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' post: tags: - Allocations summary: Create an allocation description: Creates a new allocation. operationId: createAllocation requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateAllocationRequest' responses: '200': description: OK - The request succeeded. content: application/json: schema: $ref: '#/components/schemas/Allocation' links: getAllocation: operationId: getAllocation parameters: id: $response.body#/id updateAllocation: operationId: updateAllocation parameters: id: $response.body#/id deleteAllocation: operationId: deleteAllocation parameters: id: $response.body#/id '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' x-codegen-request-body-name: Body /analytics/v1/allocations/{id}: get: tags: - Allocations summary: Retrieve an allocation description: Returns an allocation by the specified Id. operationId: getAllocation parameters: - name: id in: path description: Allocation ID required: true schema: type: string responses: '200': description: OK - Allocation returned. content: application/json: schema: $ref: '#/components/schemas/Allocation' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' delete: tags: - Allocations summary: Delete an allocation description: Deletes the allocation specified by the Id. operationId: deleteAllocation parameters: - name: id in: path description: Allocation ID required: true schema: type: string responses: '200': description: OK - Allocation deleted. content: application/json: schema: type: object additionalProperties: false example: {} '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '409': description: Conflict - The allocation cannot be deleted because it is used by other resources. content: application/json: schema: type: array items: $ref: '#/components/schemas/AllocationDeleteValidation' patch: tags: - Allocations summary: Update an allocation description: Updates the allocation specified by the Id. operationId: updateAllocation parameters: - name: id in: path description: Allocation ID required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateAllocationRequest' responses: '200': description: OK - Allocation updated. content: application/json: schema: $ref: '#/components/schemas/Allocation' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' x-codegen-request-body-name: Body components: responses: '400': description: Bad Request - The server cannot process the request, often due to a malformed request. content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized - Invalid API key. content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found - The requested resource does not exist. content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden - The client is not authorized to perform the request. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: AllocationDimensionsTypes: description: Dimension filter type for allocation rule components. See `DimensionsTypes` for per-value meanings. Allocation components do not support `allocation`, `attribution`, or `attribution_group` types. type: string enum: - datetime - fixed - optional - label - tag - project_label - system_label - allocation_rule - gke - gke_label x-enumDescriptions: fixed: Standard built-in billing dimensions. label: Customer-defined resource labels; key is the label key. tag: AWS cost allocation tags; key is the tag key. project_label: Google Cloud project-level labels. system_label: DoiT- or provider-generated system labels. optional: Console grouping for label/tag keys; use a concrete subtype in filters. datetime: Time dimensions for date-based filtering. allocation_rule: Reference another allocation rule by ID. gke: Google Kubernetes Engine cost-allocation dimensions. gke_label: GKE workload labels. ResourceReference: type: object description: Reference to another resource, used when listing blockers or usages. properties: id: type: string description: Resource identifier name: type: string description: Resource name owner: type: string description: Resource owner (only present if requester doesn't have access) CreateAllocationRequest: required: - name - description type: object description: Request body for creating an allocation. properties: name: type: string description: Allocation name. description: type: string description: Allocation description. anomalyDetection: type: boolean description: Whether anomaly detection is enabled for this allocation. Only applicable to single allocations. rule: $ref: '#/components/schemas/AllocationRule' rules: type: array items: $ref: '#/components/schemas/GroupAllocationRule' unallocatedCosts: type: - string - 'null' description: Custom label for values that do not fit into allocation (required for group type allocation). folderId: type: string description: Identifier of the folder that contains the allocation. Set to "root" if the allocation is at the top level (not in a folder). default: root example: root GroupAllocationRule: required: - action type: - object - 'null' description: Allocation rule for a group type allocation. Components can reference other existing allocation rules by using the "allocation_rule" dimension type. properties: name: type: string description: Name of the allocation rule. description: type: string description: Description of the allocation rule. action: type: string description: Action to perform with this rule. enum: - create - update - select id: type: string description: ID of existing allocation (required for 'update' or 'select' action). components: type: array description: List of allocation filter components (required for 'create' or 'update' action). Can include components of type "allocation_rule" to reference existing allocation rules. items: $ref: '#/components/schemas/AllocationComponent' formula: type: string description: Formula for combining components (A is the first component, B is the second one, etc.) example: A AND B Error: type: object description: Standard error response structure. properties: error: type: string description: Detailed error message. AllocationComponent: required: - key - type - values - mode type: object description: 'A filter component used inside allocation rules. When the type is "allocation_rule", the component references existing allocation rules (nested allocation rules). A maximum nesting depth of 3 levels is supported, and circular references are not allowed.' properties: key: type: string description: 'Key of an existing dimension. Examples: "billing_account_id", "country". When type is "allocation_rule", the key must be set to "allocation_rule". Use `GET /analytics/v1/dimensions` to retrieve all available dimensions.' type: $ref: '#/components/schemas/AllocationDimensionsTypes' values: type: array description: Values to filter on. When type is "allocation_rule", the values are IDs of existing allocation rules. items: type: string inverse: type: boolean description: If true, all selected values will be excluded. default: false inverse_selection: type: boolean description: If true, all selected values will be excluded. default: false deprecated: true includeNull: type: boolean description: Include null values. default: false caseInsensitive: type: boolean description: If true, string matching is case-insensitive. Effective only for starts_with, ends_with, and contains modes; rejected otherwise. default: false mode: type: string description: Filter mode to apply. When type is "allocation_rule", only "is" and "contains" modes are supported. enum: - is - starts_with - ends_with - contains - regexp Allocation: type: object description: Allocation object, including rules and metadata. properties: id: type: string description: Allocation ID. name: type: string description: Allocation name. description: type: string description: Allocation description. type: type: string description: Type of allocation (preset or custom). allocationType: type: string description: Composition type of allocation. enum: - single - group createTime: type: integer description: The time when the allocation was created (in UNIX timestamp). format: int64 updateTime: type: integer description: Last time the allocation was modified (in UNIX timestamp). format: int64 anomalyDetection: type: boolean description: Whether anomaly detection is enabled for this allocation. Only applicable to single allocations. rule: $ref: '#/components/schemas/AllocationRule' rules: type: array items: $ref: '#/components/schemas/GroupAllocationRule' unallocatedCosts: type: - string - 'null' description: Custom label for values that do not fit into allocation (required for group type allocation). folderId: type: string description: Identifier of the folder that contains the allocation. Set to "root" if the allocation is at the top level (not in a folder). default: root example: root AllocationDeleteValidation: type: object description: Details about why an allocation cannot be deleted. properties: id: type: string description: Allocation ID. type: type: string description: Type of allocation. enum: - single - group error: type: string description: Error message explaining why deletion failed. resources: type: object description: Map of resources using this allocation, keyed by resource type. additionalProperties: type: array items: $ref: '#/components/schemas/ResourceReference' AllocationRule: required: - components - formula type: - object - 'null' description: Single allocation rule. Components can reference other existing allocation rules by using the "allocation_rule" dimension type. properties: components: type: array description: List of allocation filter components. items: $ref: '#/components/schemas/AllocationComponent' formula: type: string description: Formula for combining components (A is the first component, B is the second one, etc.). example: A AND B AllocationListItem: type: object description: Summary information for an allocation. properties: id: type: string description: Allocation ID. name: type: string description: Allocation name. owner: type: string description: Allocation owner. description: type: string description: Allocation description. type: type: string description: Type of allocation (preset or custom). allocationType: type: string description: Composition type of allocation (single or group). enum: - single - group createTime: type: integer description: The time when the allocation was created (in UNIX timestamp). format: int64 updateTime: type: integer description: Last time the allocation was modified (in UNIX timestamp). format: int64 urlUI: type: string description: URL to view the allocation in the DoiT console. folderId: type: string description: Identifier of the folder that contains the allocation. Set to "root" if the allocation is at the top level (not in a folder). default: root example: root anomalyDetection: type: boolean description: Whether anomaly detection is enabled for this allocation. Only applicable to single allocations. UpdateAllocationRequest: type: object description: Request body for updating an allocation. properties: name: type: - string - 'null' description: Allocation name description: type: - string - 'null' description: Allocation description anomalyDetection: type: boolean description: Whether anomaly detection is enabled for this allocation. Only applicable to single allocations. rule: $ref: '#/components/schemas/AllocationRule' rules: type: array items: $ref: '#/components/schemas/GroupAllocationRule' unallocatedCosts: type: - string - 'null' description: Custom label for values that do not fit into allocation (required for group type allocation). folderId: type: string description: Identifier of the folder that contains the allocation. Set to "root" if the allocation is at the top level (not in a folder). default: root example: root parameters: pageToken: name: pageToken in: query description: Page token, returned by a previous call, to request the next page of results schema: type: string maxResults: name: maxResults in: query description: The maximum number of results to return in a single page. Use the page tokens to iterate through the entire collection. schema: type: integer format: int64 default: 50 sortOrder: name: sortOrder in: query description: Sort order can be ascending or descending. schema: type: string enum: - asc - desc securitySchemes: api_key: type: apiKey name: Authorization description: Use the "Bearer " format or sign in for autofill in: header tenantId: type: apiKey name: X-Tenant-Id description: 'Tenant (customer) ID that sets the request''s customer context. Required when the credential can access more than one tenant; omit when the credential is scoped to exactly one tenant (the server resolves that tenant automatically). If omitted for a multi-tenant credential, the request fails with `400` and code `tenant_id_required`. If the value conflicts with the credential''s tenant scope, the request fails with `400` and code `tenant_id_mismatch`. Use this header over the legacy `customerContext` query parameter, which only applies to legacy API keys and is ignored by personal and service-account API tokens. ' in: header oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://console.doit.com/sign-in/oauth tokenUrl: https://console.doit.com/api/auth/token scopes: dci: Access All Data x-samples-languages: - curl - go - node - python x-cli-config: security: oauth2 params: client_id: cli