winterhazel commented on PR #10505:
URL: https://github.com/apache/cloudstack/pull/10505#issuecomment-3980811404
Looks good.
I tested by fuzzing a little with the API's parameters (`account`,
`accountid`, `accountstatetoshow`, `domainid`, `keyword`, `listall`,
`projectid`) for root admin, domain admin, and user accounts. In the tests, I
validated that the API returned the expected response while performing correct
permission checking.
In the latest commit, I added one change in `ParamProcessWorker.java` which
we forgot to include in commit 7d70e32378f0d5141d54fa3c95df that facilitates
the permissioning logic of this API. I will open a separate PR for it this week.
### Environment configuration
My environment had two domains: `ROOT` and `d1`.
```sql
MariaDB [cloud]> select uuid,name,path,parent from domain;
+--------------------------------------+------+------+--------+
| uuid | name | path | parent |
+--------------------------------------+------+------+--------+
| de3f3dfb-f84b-11f0-8ace-32e0826870ba | ROOT | / | NULL |
| dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d | d1 | /d1/ | 1 |
+--------------------------------------+------+------+--------+
```
Each domain had a domain admin (`dr` for `ROOT` and `d1` for `d1`) and a
user account (`ur` for `ROOT` and `u1` for `d1`). `ROOT` also had a project and
the root admin.
```sql
MariaDB [cloud]> select uuid,account_name,domain_id,role_id from account;
+--------------------------------------+--------------------------+-----------+---------+
| uuid | account_name |
domain_id | role_id |
+--------------------------------------+--------------------------+-----------+---------+
| f684aae8-f84b-11f0-8ace-32e0826870ba | system |
1 | 1 |
| f684da1a-f84b-11f0-8ace-32e0826870ba | admin |
1 | 1 |
| 17dfdcce-fd02-46d0-85ae-7de91fda634c | baremetal-system-account |
1 | 4 |
| aaba75a0-a575-41be-80e1-dbea14c10e51 | dr |
1 | 3 |
| feaffae2-7ba4-45dc-b46f-20ae86192685 | d1 |
2 | 3 |
| 2f49212d-d6d5-437b-800d-a7bb4a8def4b | u1 |
2 | 4 |
| b029e8b8-e539-4d1a-906d-3d4f2fb36b82 | ur |
1 | 4 |
| b14100c6-d9f6-450e-87a2-0833bb45e5f8 | PrjAcct-aa-1 |
1 | NULL |
+--------------------------------------+--------------------------+-----------+---------+
```
### Test 1 (user accounts)
- No parameters: returns only the user account's own summary.
```sh
(u1) 🐱 > quota summary
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `account`: allows listing their own summary, but not the summary of other
accounts.
```sh
(u1) 🐱 > quota summary account=u1
domainid=dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(u1) 🐱 > quota summary account=d1
domainid=dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d
🙈 Error: (HTTP 531, error code 4365) Caller does not have permission to
operate with provided resource.
```
- `accountid`: allows listing their own summary, but not the summary of
other accounts.
```sh
(u1) 🐱 > quota summary accountid=2f49212d-d6d5-437b-800d-a7bb4a8def4b
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(u1) 🐱 > quota summary accountid=aaba75a0-a575-41be-80e1-dbea14c10e51
🙈 Error: (HTTP 531, error code 4365) Caller does not have permission to
operate with provided resource.
```
- `accountstatetoshow`: the filtering is performed correctly, but only lists
their own summary.
```sh
(u1) 🐱 > quota summary accountstatetoshow=ACTIVE
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(u1) 🐱 > quota summary accountstatetoshow=REMOVED
(u1) 🐱 > quota summary accountstatetoshow=ALL
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `domainid`: only lists their own summary.
```sh
(u1) 🐱 > quota summary domainid=dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(u1) 🐱 > quota summary domainid=de3f3dfb-f84b-11f0-8ace-32e0826870ba
🙈 Error: (HTTP 531, error code 4365) Account Account
[{"accountName":"u1","id":6,"uuid":"2f49212d-d6d5-437b-800d-a7bb4a8def4b"}]
does not have permission to operate within domain
id=de3f3dfb-f84b-11f0-8ace-32e0826870ba
```
- `keyword`: allows filtering accounts that include this keyword in their
name, but only returns the calling account anyways.
```sh
(u1) 🐱 > quota summary keyword=u
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(u1) 🐱 > quota summary keyword=a
(u1) 🐱 > quota summary keyword=admin
(u1) 🐱 > quota summary keyword=admin listall=true
```
- `listall`: is ignored.
```sh
(u1) 🐱 > quota summary listall=true
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(u1) 🐱 > quota summary domainid=dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d
listall=true
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `projectid`: user accounts are able to obtain the summary of projects
which they belong to.
```sh
(u1) 🐱 > quota summary projectid=c1ce41c4-7b01-4386-8264-479db5ace0bc
🙈 Error: (HTTP 432, error code 9999) The API [quotaSummary] does not
exist or is not available for this account/user in project
[c1ce41c4-7b01-4386-8264-479db5ace0bc].
(u1) 🐱 > set profile ur
Loaded server profile: ur
Url: http://192.168.32.10:8080/client/api
Username: ur
Domain: /
API Key:
Total APIs: 364
(ur) 🐱 > quota summary projectid=c1ce41c4-7b01-4386-8264-479db5ace0bc
{
"count": 1,
"summary": [
{
"account": "PrjAcct-aa-1",
"accountid": "b14100c6-d9f6-450e-87a2-0833bb45e5f8",
"accountremoved": false,
"balance": 10,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"projectid": "c1ce41c4-7b01-4386-8264-479db5ace0bc",
"projectname": "aa",
"projectremoved": false,
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
### Test 2 (domain admins)
- No parameters: returns only their own summary.
```sh
(d1) 🐱 > quota summary
{
"count": 1,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `account`: allows listing the summary of accounts which belong to their
domain.
```sh
(d1) 🐱 > quota summary account=u1
domainid=dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary account=d1
domainid=dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d
{
"count": 1,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary account=admin
domainid=de3f3dfb-f84b-11f0-8ace-32e0826870ba
🙈 Error: (HTTP 531, error code 4365) Caller does not have permission to
operate with provided resource.
```
- `accountid`: allows listing the summary of accounts belonging to their
domain.
```sh
(d1) 🐱 > quota summary accountid=2f49212d-d6d5-437b-800d-a7bb4a8def4b
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary accountid=feaffae2-7ba4-45dc-b46f-20ae86192685
{
"count": 1,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary accountid=f684da1a-f84b-11f0-8ace-32e0826870ba
🙈 Error: (HTTP 531, error code 4365) Caller does not have permission to
operate with provided resource.
```
- `accountstatetoshow`: filtering is performed correctly.
```sh
(d1) 🐱 > quota summary accountstatetoshow=ALL
{
"count": 1,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary accountstatetoshow=ACTIVE
{
"count": 1,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary accountstatetoshow=REMOVED
(d1) 🐱 > quota summary accountstatetoshow=REMOVED listall=true
(d1) 🐱 > quota summary accountstatetoshow=ACTIVE listall=true
{
"count": 2,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `domainid`: allows listing the summary of all accounts belonging to their
domain.
```sh
(d1) 🐱 > quota summary domainid=dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d
{
"count": 2,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary domainid=de3f3dfb-f84b-11f0-8ace-32e0826870ba
🙈 Error: (HTTP 531, error code 4365) Account Account
[{"accountName":"d1","id":5,"uuid":"feaffae2-7ba4-45dc-b46f-20ae86192685"}]
does not have permission to operate within domain
id=de3f3dfb-f84b-11f0-8ace-32e0826870ba
```
- `keyword`: allows filtering the summary of accounts that include this
keyword in their account name, but only returns accounts that belong to their
domain.
```sh
(d1) 🐱 > quota summary listall=true keyword=d
{
"count": 1,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary listall=true keyword=1
{
"count": 2,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary listall=true keyword=admin
```
- `listall`: allows listing the summary of all accounts belonging to their
domain.
```sh
(d1) 🐱 > quota summary listall=true
{
"count": 2,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary listall=false
{
"count": 1,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(d1) 🐱 > quota summary domainid=de3f3dfb-f84b-11f0-8ace-32e0826870ba
listall=true
🙈 Error: (HTTP 531, error code 4365) Account Account
[{"accountName":"d1","id":5,"uuid":"feaffae2-7ba4-45dc-b46f-20ae86192685"}]
does not have permission to operate within domain
id=de3f3dfb-f84b-11f0-8ace-32e0826870ba
```
- `projectid`: allows listing the summary of projects belonging to their
domain.
```sh
(d1) 🐱 > quota summary projectid=c1ce41c4-7b01-4386-8264-479db5ace0bc
🙈 Error: (HTTP 531, error code 4365) Account Account
[{"accountName":"d1","id":5,"uuid":"feaffae2-7ba4-45dc-b46f-20ae86192685"}]
does not have permission to operate within domain
id=de3f3dfb-f84b-11f0-8ace-32e0826870ba
(dr) 🐱 > quota summary projectid=c1ce41c4-7b01-4386-8264-479db5ace0bc
{
"count": 1,
"summary": [
{
"account": "PrjAcct-aa-1",
"accountid": "b14100c6-d9f6-450e-87a2-0833bb45e5f8",
"accountremoved": false,
"balance": 10,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"projectid": "c1ce41c4-7b01-4386-8264-479db5ace0bc",
"projectname": "aa",
"projectremoved": false,
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
### Test 3 (root admins)
- No parameters: returns only their own summary.
```sh
(admin) 🐱 > quota summary
{
"count": 1,
"summary": [
{
"account": "admin",
"accountid": "f684da1a-f84b-11f0-8ace-32e0826870ba",
"accountremoved": false,
"balance": 91.03,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `account`: allows listing the summary of all accounts.
```sh
(admin) 🐱 > quota summary account=dr
domainid=de3f3dfb-f84b-11f0-8ace-32e0826870ba
{
"count": 1,
"summary": [
{
"account": "dr",
"accountid": "aaba75a0-a575-41be-80e1-dbea14c10e51",
"accountremoved": false,
"balance": 20,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(admin) 🐱 > quota summary account=u1
domainid=dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d
{
"count": 1,
"summary": [
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `accountid`: allows listing the summary of all accounts.
```sh
(admin) 🐱 > quota summary accountid=f684da1a-f84b-11f0-8ace-32e0826870ba
{
"count": 1,
"summary": [
{
"account": "admin",
"accountid": "f684da1a-f84b-11f0-8ace-32e0826870ba",
"accountremoved": false,
"balance": 91.03,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(admin) 🐱 > quota summary accountid=b029e8b8-e539-4d1a-906d-3d4f2fb36b82
{
"count": 1,
"summary": [
{
"account": "ur",
"accountid": "b029e8b8-e539-4d1a-906d-3d4f2fb36b82",
"accountremoved": false,
"balance": 10,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(admin) 🐱 > quota summary accountid=feaffae2-7ba4-45dc-b46f-20ae86192685
{
"count": 1,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `accountstatetoshow`: filtering is performed correctly.
```sh
(admin) 🐱 > quota summary listall=true accountstatetoshow=ENABLED
{
"count": 6,
"summary": [
{
"account": "admin",
"accountid": "f684da1a-f84b-11f0-8ace-32e0826870ba",
"accountremoved": false,
"balance": 91.03,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "dr",
"accountid": "aaba75a0-a575-41be-80e1-dbea14c10e51",
"accountremoved": false,
"balance": 20,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "PrjAcct-aa-1",
"accountid": "b14100c6-d9f6-450e-87a2-0833bb45e5f8",
"accountremoved": false,
"balance": 10,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"projectid": "c1ce41c4-7b01-4386-8264-479db5ace0bc",
"projectname": "aa",
"projectremoved": false,
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "ur",
"accountid": "b029e8b8-e539-4d1a-906d-3d4f2fb36b82",
"accountremoved": false,
"balance": 10,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(admin) 🐱 > quota summary listall=true accountstatetoshow=REMOVED
```
- `domainid`: allows listing the summary of all domains.
```sh
(admin) 🐱 > quota summary domainid=de3f3dfb-f84b-11f0-8ace-32e0826870ba
{
"count": 4,
"summary": [
{
"account": "admin",
"accountid": "f684da1a-f84b-11f0-8ace-32e0826870ba",
"accountremoved": false,
"balance": 91.03,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "dr",
"accountid": "aaba75a0-a575-41be-80e1-dbea14c10e51",
"accountremoved": false,
"balance": 20,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "PrjAcct-aa-1",
"accountid": "b14100c6-d9f6-450e-87a2-0833bb45e5f8",
"accountremoved": false,
"balance": 10,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"projectid": "c1ce41c4-7b01-4386-8264-479db5ace0bc",
"projectname": "aa",
"projectremoved": false,
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "ur",
"accountid": "b029e8b8-e539-4d1a-906d-3d4f2fb36b82",
"accountremoved": false,
"balance": 10,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
(admin) 🐱 > quota summary domainid=dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d
{
"count": 2,
"summary": [
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `keyword`: allows filtering accounts that include this keyword in their
name.
```sh
(admin) 🐱 > quota summary listall=true keyword=d
{
"count": 3,
"summary": [
{
"account": "admin",
"accountid": "f684da1a-f84b-11f0-8ace-32e0826870ba",
"accountremoved": false,
"balance": 91.03,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "dr",
"accountid": "aaba75a0-a575-41be-80e1-dbea14c10e51",
"accountremoved": false,
"balance": 20,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `listall`: allows listing the summary of all accounts in the environment.
```sh
(admin) 🐱 > quota summary listall=true
{
"count": 6,
"summary": [
{
"account": "admin",
"accountid": "f684da1a-f84b-11f0-8ace-32e0826870ba",
"accountremoved": false,
"balance": 91.03,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "d1",
"accountid": "feaffae2-7ba4-45dc-b46f-20ae86192685",
"accountremoved": false,
"balance": 21,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "dr",
"accountid": "aaba75a0-a575-41be-80e1-dbea14c10e51",
"accountremoved": false,
"balance": 20,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "PrjAcct-aa-1",
"accountid": "b14100c6-d9f6-450e-87a2-0833bb45e5f8",
"accountremoved": false,
"balance": 10,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"projectid": "c1ce41c4-7b01-4386-8264-479db5ace0bc",
"projectname": "aa",
"projectremoved": false,
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "u1",
"accountid": "2f49212d-d6d5-437b-800d-a7bb4a8def4b",
"accountremoved": false,
"balance": 11,
"currency": "$",
"domain": "/d1/",
"domainid": "dc5064ad-d4a8-4bb3-ae18-a52e4810ac3d",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
},
{
"account": "ur",
"accountid": "b029e8b8-e539-4d1a-906d-3d4f2fb36b82",
"accountremoved": false,
"balance": 10,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
- `projectid`: allows listing the summary of all projects in the environment.
```sh
(admin) 🐱 > quota summary projectid=c1ce41c4-7b01-4386-8264-479db5ace0bc
{
"count": 1,
"summary": [
{
"account": "PrjAcct-aa-1",
"accountid": "b14100c6-d9f6-450e-87a2-0833bb45e5f8",
"accountremoved": false,
"balance": 10,
"currency": "$",
"domain": "/",
"domainid": "de3f3dfb-f84b-11f0-8ace-32e0826870ba",
"domainremoved": false,
"enddate": "2026-03-02T12:00:00-0300",
"projectid": "c1ce41c4-7b01-4386-8264-479db5ace0bc",
"projectname": "aa",
"projectremoved": false,
"quota": 0,
"quotaenabled": true,
"startdate": "2026-03-01T12:00:00-0300",
"state": "ENABLED"
}
]
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]