list-attribute-attribution-sets
dci list-attribute-attribution-sets [flags]
Returns the customer's attributions (Attribution Center sets), sorted by name, one page at a
time. Each set has its latest rule version in rule; rule.state is etl-ready for a
published attribution and ui-draft for a draft. activeRuleId is the newest published
version, or null when the set was never published. Deleted attributions are not listed.
To get an attribution's cost over time or by value, run a Cloud Analytics report with
dataSource: attribution and the dimension attribution_tier_1 whose id is
attributionSetId with - replaced by _. Only published attributions with data have cost.
Paging: send limit; when the response has nextCursor, send it back as after for the
next page. No nextCursor means the last page.
Authenticate with Authorization: Bearer <token>. Omit X-Tenant-Id when the credential
resolves to one customer. When the credential can act on several customers, send
X-Tenant-Id: <tenant-id> to select one.
Flags
| Flag | Type | Default | Example | Description |
|---|---|---|---|---|
--limit | integer | 100 | Items per page, from 1 to 200. Defaults to 100. | |
--after | string | The nextCursor of the previous page. Omit it for the first page. |
Every command also accepts the CLI-wide flags for output shaping — see Output formats and Table output options.
Output
OK - One page of attributions.
By default dci renders the result as a table. Use --output json to get the full structure described below — see Output formats.
| Field | Type | Description |
|---|---|---|
sets | array of object | |
sets[].attributionSetId | string | The attribution's ID. In Cloud Analytics reports, use it with - replaced by _ as the id of the attribution_tier_1, attribution_tier_2 and attribution_tier_3 dimensions. |
sets[].name | string | |
sets[].description | string | |
sets[].ruleId | string | ID of the latest rule version. |
sets[].version | integer | Number of the latest rule version. |
sets[].updatedAt | string (date-time) | When the latest rule version was saved. |
sets[].rule | object | One rule version of an attribution: how its cost is split into values. Older versions can miss fields; only attributionSetId is always present. |
sets[].rule.attributionSetId | string | |
sets[].rule.state | string | One of: "ui-draft", "etl-ready", "deleted", "discarded". |
sets[].rule.dateRange | object | The days the rules apply to, as a half-open range [startDate, endDate). |
sets[].rule.dateRange.startDate | string (date) | |
sets[].rule.dateRange.endDate | string (date) | Exclusive. Null or absent means open-ended. |
sets[].rule.scope | array of object | Filters that limit the cost the attribution works on; all must match. |
sets[].rule.billingFiltersByBucket | array of object | The rules per bucket (a service, usage account or provider): billing conditions, sensor conditions and what happens to the remaining cost. |
sets[].activeRuleId | string | ID of the newest published (etl-ready) rule version; null when there is none. |
nextCursor | string | Send as after to get the next page. Absent on the last page. |
Raw JSON schema
{
"type": "object",
"required": [
"sets"
],
"properties": {
"sets": {
"type": "array",
"items": {
"type": "object",
"required": [
"attributionSetId",
"name",
"description",
"ruleId",
"rule"
],
"properties": {
"attributionSetId": {
"type": "string",
"description": "The attribution's ID. In Cloud Analytics reports, use it with `-` replaced by `_` as the\nid of the `attribution_tier_1`, `attribution_tier_2` and `attribution_tier_3` dimensions."
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"ruleId": {
"type": "string",
"description": "ID of the latest rule version."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Number of the latest rule version."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "When the latest rule version was saved."
},
"rule": {
"type": "object",
"description": "One rule version of an attribution: how its cost is split into values. Older versions can\nmiss fields; only `attributionSetId` is always present.",
"required": [
"attributionSetId"
],
"properties": {
"attributionSetId": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"ui-draft",
"etl-ready",
"deleted",
"discarded"
],
"x-enumDescriptions": {
"ui-draft": "A draft that is not applied to cost.",
"etl-ready": "Published; applied to cost.",
"deleted": "The attribution was deleted.",
"discarded": "A discarded draft."
}
},
"dateRange": {
"type": "object",
"description": "The days the rules apply to, as a half-open range [startDate, endDate).",
"required": [
"startDate"
],
"properties": {
"startDate": {
"type": "string",
"format": "date"
},
"endDate": {
"type": "string",
"format": "date",
"nullable": true,
"description": "Exclusive. Null or absent means open-ended."
}
}
},
"scope": {
"type": "array",
"description": "Filters that limit the cost the attribution works on; all must match.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"billingFiltersByBucket": {
"type": "array",
"description": "The rules per bucket (a service, usage account or provider): billing conditions, sensor\nconditions and what happens to the remaining cost.",
"items": {
"type": "object",
"additionalProperties": true
}
}
}
},
"activeRuleId": {
"type": "string",
"nullable": true,
"description": "ID of the newest published (`etl-ready`) rule version; null when there is none."
}
}
}
},
"nextCursor": {
"type": "string",
"description": "Send as `after` to get the next page. Absent on the last page."
}
}
}
Errors
On failure, dci prints a single error message — with a hint when one is available — and exits with a typed code your scripts can branch on. See Errors and exit codes for the full contract.
HTTP status to exit code mapping
| HTTP status | Exit code | Error code | Meaning |
|---|---|---|---|
| 400 | 30 | VALIDATION_ERROR | The arguments or request body were rejected. Review the command's flags and payload. |
| 401 | 10 | AUTHENTICATION_FAILED | Not signed in, or the API token is invalid. Run dci login or check DCI_API_KEY. |
| 403 | 11 | PERMISSION_DENIED | The DoiT user or the active customer context does not have access. |
| 404 | 20 | RESOURCE_NOT_FOUND | The requested resource does not exist. Check the identifier argument. |
| 409 | 21 | RESOURCE_CONFLICT | The operation conflicts with the resource's current state. |
| 500, 502, 503 | 40 | API_SERVER_ERROR | The API failed to process the request. Retryable; contact DoiT support if it persists. |
Related
- count-attribute-attribution-sets — Count attributions
- get-attribute-attribution-set — Get one attribution
- get-attribute-workload-details — Get one workload's identity
- get-attribute-workloads-cost-data-status — Check whether workload cost data exists
- get-attribute-workloads-signals — Get workloads that need attention
- list-attribute-attribution-set-versions — List the rule versions of one attribution
- list-attribute-workload-non-network-resource-types — List one workload's non-network resource types
- list-attribute-workloads-cloud-providers — List the cloud providers that billed workload resources
- list-attribute-workloads-filter-values — List the values of a workload filter field
- list-attribute-workloads-resource-tag-keys — List resource tag keys
- list-attribute-workloads-resource-tag-values — List the values of one resource tag key
- query-attribute-workload-resources-over-time — Get one workload's resource cost over time
- query-attribute-workload-resources-stats — Get one workload's cost totals
- query-attribute-workload-resources-table — List one workload's cloud resources
- query-attribute-workloads-over-time — Get Kubernetes workload cost over time
- query-attribute-workloads-stats — Get Kubernetes workload cost totals
- query-attribute-workloads-table — List Kubernetes workload costs by dimension
- API reference: GET /attribute/v1/attribution-center/sets
Aliases: listattributeattributionsets