Read monthly resource storage subscription
/api/v1/storage/Authentication · x-api-key
Disabled by default. Only Admin can enroll an account. Free periods are preserved; prices use a fixed 30-day GB-month and bills use Asia/Shanghai calendar months.
Scope: usage:read
Billing and effects: Free subscription or billing read. Storage accrual is billed separately.
Recovery: Read the current resource before retrying a mutation; do not assume this operation supports Idempotency-Key.
Follow this operation’s workflow → · All permission rulesRequest
No request parameters.
Responses
Read the HTTP status and body together. A receipt confirms acceptance; poll the returned Task or product view for terminal execution and media delivery. Example IDs and credit amounts are illustrative, not a price quote.
HTTP 401 · Request rejected; correct the key before retrying
Complete JSON example (optional fields may be omitted).
{ "success": false, "error": { "code": "INVALID_API_KEY", "message": "Invalid API key" }}200 OK
application/json
Required, optional and null
Required fields apply within their object and selected option. An optional object may be absent; when present, its required fields must be included. Required and nullable are independent: null is allowed only where listed.
-
Response 200 ·
availableRequiredbooleanWhether deployment configuration enables long-term storage with a positive published rate; does not mean this account is enrolled.
-
Response 200 ·
billableBytesRequiredstringSum of bytes in currently open storage-usage intervals, as a decimal integer string.
-
Response 200 ·
billingTimezoneRequiredstringTime zone defining the natural monthly billing period.
-
Response 200 ·
billingUnitRequiredstringcredit-unit / decimal GB / 30 days: 10,000 units per credit and decimal gigabytes, with byte-time prorating.
-
Response 200 ·
chargesRequiredarray<object>Up to 24 most recent storage charge periods, ordered by period start descending; use the charges endpoint for pagination.
1 field
-
Response 200 ·
charges[]Each itemobject8 fields
-
Response 200 ·
charges[].amountUnitsRequiredstringBilled amount as a decimal integer string in credit accounting units (10,000 units = 1 credit). Preserve integer precision.
-
Response 200 ·
charges[].breakdownRequiredobjectMonthly storage usage keyed by provider code. Each value is byte-milliseconds, not credits; amountUnits is the billed amount. See Storage billing.
1 field
-
Response 200 ·
charges[].breakdown.*Each valuestringAccumulated byte-milliseconds for this provider, represented as a decimal integer string.
Pattern: ^[0-9]+$.
-
-
Response 200 ·
charges[].byteMillisecondsRequiredstringAccumulated bytes multiplied by stored milliseconds, encoded as a decimal integer string to preserve precision.
-
Response 200 ·
charges[].fromRequiredstringStart of this billing or usage period as an ISO 8601 timestamp.
Format: date-time.
-
Response 200 ·
charges[].idRequiredstringIdentifier of this resource. Keep identifiers for Tasks, product resources and child assets separately; use the ID required by the destination endpoint.
-
Response 200 ·
charges[].rateUnitsPerGbMonthRequiredstringAccepted price in credit accounting units per GB-month (10,000 units = 1 credit). Read the subscription billing unit and period rules.
-
Response 200 ·
charges[].statusRequiredstringState of the object containing this field. Use its listed values; operation acceptance, Task completion and media delivery are separate states.
-
Response 200 ·
charges[].untilRequiredstringStart of this billing or usage period as an ISO 8601 timestamp.
Format: date-time.
-
-
-
Response 200 ·
currentPeriodRequiredobjectCurrent natural billing month boundaries and usage accrued through this read; until is the period end, not the accrual measurement time.
4 fields
-
Response 200 ·
currentPeriod.accruedUnitsRequiredstringAccrued amount for the current period in credit accounting units (10,000 units = 1 credit); this period is not yet the final bill.
-
Response 200 ·
currentPeriod.byteMillisecondsRequiredstringAccumulated bytes multiplied by stored milliseconds, encoded as a decimal integer string to preserve precision.
-
Response 200 ·
currentPeriod.fromRequiredstringStart of this billing or usage period as an ISO 8601 timestamp.
Format: date-time.
-
Response 200 ·
currentPeriod.untilRequiredstringStart of this billing or usage period as an ISO 8601 timestamp.
Format: date-time.
-
-
Response 200 ·
enabledRequiredbooleanTrue only when coverage-version-2 long-term storage is ACTIVE for this account.
-
Response 200 ·
enrollmentCompleteRequiredbooleanWhether enrollment of eligible existing assets into unified coverage has completed.
-
Response 200 ·
graceUntilRequiredstring | nullStart of this billing or usage period as an ISO 8601 timestamp.
Use a complete option below; the value must satisfy at least one option.
2 options
-
Response 200 ·
Option 1 — stringOptionstringStart of this billing or usage period as an ISO 8601 timestamp.
Format: date-time.
-
Response 200 ·
Option 2 — nullOptionnull
-
-
Response 200 ·
legacySubscriptionActiveRequiredbooleanTrue when an older coverage-version subscription is still ACTIVE instead of unified long-term coverage.
-
Response 200 ·
pendingAssetsRequirednumberCount of retained assets still in ARCHIVING state.
-
Response 200 ·
rateUnitsPerGbMonthRequiredstringAccepted price in credit accounting units per GB-month (10,000 units = 1 credit). Read the subscription billing unit and period rules.
-
Response 200 ·
revisionRequirednumberStorage policy revision used as expectedRevision for concurrent configuration updates; zero before a subscription exists.
-
Response 200 ·
statusRequiredstringState of the object containing this field. Use its listed values; operation acceptance, Task completion and media delivery are separate states.
-
Response 200 ·
totalBytesRequiredstringSum of byte sizes of READY retained assets, as a decimal integer string; not all these bytes are currently billable.
-
Response 200 ·
usageRequiredarray<object>Retained asset usage grouped by providerCode and asset status.
1 field
-
Response 200 ·
usage[]Each itemobject4 fields
-
Response 200 ·
usage[].bytesRequiredstringByte count as a decimal integer string. Preserve integer precision.
-
Response 200 ·
usage[].countRequirednumberNumber of retained asset records in this provider/status group.
-
Response 200 ·
usage[].providerCodeRequiredstringProvider/product code owning this group of retained assets.
-
Response 200 ·
usage[].statusRequiredstringState of the object containing this field. Use its listed values; operation acceptance, Task completion and media delivery are separate states.
-
-
-
Response 200 ·
userIdRequiredstringAccount owner whose long-term storage policy and usage are being read.
401 Unauthorized
application/json
Required, optional and null
Required fields apply within their object and selected option. An optional object may be absent; when present, its required fields must be included. Required and nullable are independent: null is allowed only where listed.
-
Response 401 ·
errorRequiredobjectStructured failure information. Branch on code, show message, and interpret details only for that code. The request ID is returned in the X-Request-Id header.
3 fields
-
Response 401 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 401 ·
error.messageRequiredstringHuman readable error message
-
Response 401 ·
error.detailsOptionalobjectOptional error-specific context. Read code first; details keys depend on that code. Unknown keys must not break error handling. See /resources/errors/.
1 field
-
Response 401 ·
error.details[key]Each valueany JSON valueKey pattern: ^(.*)$.
-
-
-
Response 401 ·
successRequiredfalseAlways false for error responses
403 Forbidden
application/json
Required, optional and null
Required fields apply within their object and selected option. An optional object may be absent; when present, its required fields must be included. Required and nullable are independent: null is allowed only where listed.
-
Response 403 ·
errorRequiredobjectStructured failure information. Branch on code, show message, and interpret details only for that code. The request ID is returned in the X-Request-Id header.
3 fields
-
Response 403 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 403 ·
error.messageRequiredstringHuman readable error message
-
Response 403 ·
error.detailsOptionalobjectOptional error-specific context. Read code first; details keys depend on that code. Unknown keys must not break error handling. See /resources/errors/.
1 field
-
Response 403 ·
error.details[key]Each valueany JSON valueKey pattern: ^(.*)$.
-
-
-
Response 403 ·
successRequiredfalseAlways false for error responses
429 Too Many Requests
Request allowance or task admission capacity exceeded. Follow Retry-After when present; otherwise wait for active tasks and use bounded backoff. Limits do not guarantee throughput. For SSE, this is the HTTP connection response, not an event.
application/json
Required, optional and null
Required fields apply within their object and selected option. An optional object may be absent; when present, its required fields must be included. Required and nullable are independent: null is allowed only where listed.
-
Response 429 ·
errorRequiredobjectStructured failure information. Branch on code, show message, and interpret details only for that code. The request ID is returned in the X-Request-Id header.
3 fields
-
Response 429 ·
error.codeRequiredstringRATE_LIMITED for request and task admission rejections.
-
Response 429 ·
error.messageRequiredstringHuman-readable explanation. Wording may change; use the machine-readable code for programmatic decisions.
-
Response 429 ·
error.detailsOptionalobjectOptional error-specific context. Read code first; details keys depend on that code. Unknown keys must not break error handling. See /resources/errors/.
9 fields
-
Response 429 ·
error.details.currentOptionalintegerCurrent count for the rate-limit window identified by policy and scope.
Minimum: 0.
-
Response 429 ·
error.details.inFlightOptionalintegerCurrent accepted tasks counted against the relevant account or API-key admission limit.
Minimum: 0.
-
Response 429 ·
error.details.limitOptionalintegerMaximum count allowed by this response context. A limit is not a throughput guarantee.
Minimum: 0.
-
Response 429 ·
error.details.policyOptional"operation" | "query"Allowance bucket: query for resource reads, operation for task-producing or operation requests. See the rate-limit response headers.
-
Response 429 ·
error.details.retryAfterSecOptionalintegerSuggested delay in seconds before another request. Honor the Retry-After header when present; use bounded backoff.
Minimum: 1.
-
Response 429 ·
error.details.scopeOptional"user" | "api-key" | "ip" | "apiKey"Entity whose allowance was exceeded, such as the user, API key or IP address.
-
Response 429 ·
error.details.tierOptional"FREE" | "PREMIUM" | "ENTERPRISE"Account allowance tier used for this admission or rate-limit decision.
-
Response 429 ·
error.details.typeOptional"rps" | "daily" | "monthly"Admission limit that rejected the request: rps (continuously refilled requests-per-second bucket), daily or monthly UTC request budget. Interpret with policy, scope and retryAfterSec.
-
Response 429 ·
error.details[key]Each valueany JSON valueKey pattern: ^(.*)$.
-
-
-
Response 429 ·
successRequiredfalseWhether this response reports a successful action; false accompanies the structured error object.
Default: false.
500 Internal Server Error
application/json
Required, optional and null
Required fields apply within their object and selected option. An optional object may be absent; when present, its required fields must be included. Required and nullable are independent: null is allowed only where listed.
-
Response 500 ·
errorRequiredobjectStructured failure information. Branch on code, show message, and interpret details only for that code. The request ID is returned in the X-Request-Id header.
3 fields
-
Response 500 ·
error.codeRequiredstringApplication-specific error code (see error catalog)
-
Response 500 ·
error.messageRequiredstringHuman readable error message
-
Response 500 ·
error.detailsOptionalobjectOptional error-specific context. Read code first; details keys depend on that code. Unknown keys must not break error handling. See /resources/errors/.
1 field
-
Response 500 ·
error.details[key]Each valueany JSON valueKey pattern: ^(.*)$.
-
-
-
Response 500 ·
successRequiredfalseAlways false for error responses