)]}'
{
  "commit": "79f09fbcdad6d9af6eac23976010c29f3efc4389",
  "tree": "2922e1a7e7c4eade173c688d165f970d6f158f31",
  "parents": [
    "ee1a0011200fc961ee6565037e36158e18390179"
  ],
  "author": {
    "name": "Pearl Dsilva",
    "email": "pearl1594@gmail.com",
    "time": "Tue Aug 05 23:41:56 2025 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Aug 06 09:11:56 2025 +0530"
  },
  "message": "Add support for excluding a list of parameters from an API response (#163)\n\nThis PR address #https://github.com/apache/cloudstack-cloudmonkey/issues/149, it adds an exclude parameter to remove fields from the response\n\nFor example, without the exclude parameter, the listAccounts response looks like:\n\n```\n$ ./cmk -p pd-env list accounts name\u003dadmin\n{\n  \"account\": [\n    {\n      \"accounttype\": 1,\n      \"apikeyaccess\": \"INHERIT\",\n      \"backupavailable\": \"Unlimited\",\n      \"backuplimit\": \"Unlimited\",\n      \"backupstorageavailable\": \"Unlimited\",\n      \"backupstoragelimit\": \"Unlimited\",\n      \"backupstoragetotal\": 0,\n      \"backuptotal\": 0,\n      \"bucketavailable\": \"Unlimited\",\n      \"bucketlimit\": \"Unlimited\",\n      \"buckettotal\": 0,\n      \"cpuavailable\": \"Unlimited\",\n      \"cpulimit\": \"Unlimited\",\n      \"cputotal\": 4,\n      \"domain\": \"ROOT\",\n      \"domainid\": \"db0704ab-5827-11f0-804a-1e0052000469\",\n      \"domainpath\": \"ROOT\",\n      \"groups\": [],\n      \"id\": \"24e85a59-5828-11f0-804a-1e0052000469\",\n      \"ipavailable\": \"Unlimited\",\n      \"iplimit\": \"Unlimited\",\n      \"iptotal\": 1,\n      \"isdefault\": true,\n      \"memoryavailable\": \"Unlimited\",\n      \"memorylimit\": \"Unlimited\",\n      \"memorytotal\": 4096,\n      \"name\": \"admin\",\n      \"networkavailable\": \"Unlimited\",\n      \"networklimit\": \"Unlimited\",\n      \"networktotal\": 1,\n      \"objectstorageavailable\": \"Unlimited\",\n      \"objectstoragelimit\": \"Unlimited\",\n      \"objectstoragetotal\": 0,\n      \"primarystorageavailable\": \"Unlimited\",\n      \"primarystoragelimit\": \"Unlimited\",\n      \"primarystoragetotal\": 16,\n      \"projectavailable\": \"Unlimited\",\n      \"projectlimit\": \"Unlimited\",\n      \"projecttotal\": 0,\n      \"receivedbytes\": 1346690740,\n      \"roleid\": \"fff4ee8f-5827-11f0-804a-1e0052000469\",\n      \"rolename\": \"Root Admin\",\n      \"roletype\": \"Admin\",\n      \"secondarystorageavailable\": \"Unlimited\",\n      \"secondarystoragelimit\": \"Unlimited\",\n      \"secondarystoragetotal\": 0,\n      \"sentbytes\": 35867842,\n      \"snapshotavailable\": \"Unlimited\",\n      \"snapshotlimit\": \"Unlimited\",\n      \"snapshottotal\": 0,\n      \"state\": \"enabled\",\n      \"templateavailable\": \"Unlimited\",\n      \"templatelimit\": \"Unlimited\",\n      \"templatetotal\": 0,\n      \"user\": [\n        {\n          \"account\": \"admin\",\n          \"accountid\": \"24e85a59-5828-11f0-804a-1e0052000469\",\n          \"accounttype\": 1,\n          \"apikey\": \"LIN6rqXuaJwMPfGYFh13qDwYz5VNNz1J2J6qIOWcd3oLQOq0WtD4CwRundBL6rzXToa3lQOC_vKjI3nkHtiD8Q\",\n          \"created\": \"2025-07-03T16:09:48+0000\",\n          \"domain\": \"ROOT\",\n          \"domainid\": \"db0704ab-5827-11f0-804a-1e0052000469\",\n          \"firstname\": \"admin\",\n          \"id\": \"24e902f0-5828-11f0-804a-1e0052000469\",\n          \"is2faenabled\": false,\n          \"is2famandated\": false,\n          \"iscallerchilddomain\": false,\n          \"isdefault\": true,\n          \"lastname\": \"cloud\",\n          \"roleid\": \"fff4ee8f-5827-11f0-804a-1e0052000469\",\n          \"rolename\": \"Root Admin\",\n          \"roletype\": \"Admin\",\n          \"state\": \"enabled\",\n          \"username\": \"admin\",\n          \"usersource\": \"native\"\n        },\n        {\n          \"account\": \"admin\",\n          \"accountid\": \"24e85a59-5828-11f0-804a-1e0052000469\",\n          \"accounttype\": 1,\n          \"apikey\": \"U7qz8y6CjK1ECQsOuRLT7XaIfaWF3QuB4VJBHvDOBfQjyzsVvhWgDhMkHveJzu1Bb7oFnYKG4CZAfdHLpnim6w\",\n          \"created\": \"2025-07-09T17:26:05+0000\",\n          \"domain\": \"ROOT\",\n          \"domainid\": \"db0704ab-5827-11f0-804a-1e0052000469\",\n          \"email\": \"kubeadmin\",\n          \"firstname\": \"admin\",\n          \"id\": \"8ea65043-7df2-4906-8953-641a7e25a5cf\",\n          \"is2faenabled\": false,\n          \"is2famandated\": false,\n          \"iscallerchilddomain\": false,\n          \"isdefault\": false,\n          \"lastname\": \"kubeadmin\",\n          \"roleid\": \"fff4ee8f-5827-11f0-804a-1e0052000469\",\n          \"rolename\": \"Root Admin\",\n          \"roletype\": \"Admin\",\n          \"state\": \"enabled\",\n          \"username\": \"admin-kubeadmin\",\n          \"usersource\": \"native\"\n        }\n      ],\n      \"vmavailable\": \"Unlimited\",\n      \"vmlimit\": \"Unlimited\",\n      \"vmrunning\": 2,\n      \"vmstopped\": 0,\n      \"vmtotal\": 2,\n      \"volumeavailable\": \"Unlimited\",\n      \"volumelimit\": \"Unlimited\",\n      \"volumetotal\": 2,\n      \"vpcavailable\": \"Unlimited\",\n      \"vpclimit\": \"Unlimited\",\n      \"vpctotal\": 0\n    }\n  ],\n  \"count\": 1\n}\n\n```\n\nWith this patch, if user wants to remove `user` field from the response, they could do so using the exclude param:\n```\n$ ./cmk -p pd-env list accounts name\u003dadmin exclude\u003duser\n{\n  \"account\": [\n    {\n      \"accounttype\": 1,\n      \"apikeyaccess\": \"INHERIT\",\n      \"backupavailable\": \"Unlimited\",\n      \"backuplimit\": \"Unlimited\",\n      \"backupstorageavailable\": \"Unlimited\",\n      \"backupstoragelimit\": \"Unlimited\",\n      \"backupstoragetotal\": 0,\n      \"backuptotal\": 0,\n      \"bucketavailable\": \"Unlimited\",\n      \"bucketlimit\": \"Unlimited\",\n      \"buckettotal\": 0,\n      \"cpuavailable\": \"Unlimited\",\n      \"cpulimit\": \"Unlimited\",\n      \"cputotal\": 4,\n      \"domain\": \"ROOT\",\n      \"domainid\": \"db0704ab-5827-11f0-804a-1e0052000469\",\n      \"domainpath\": \"ROOT\",\n      \"groups\": [],\n      \"id\": \"24e85a59-5828-11f0-804a-1e0052000469\",\n      \"ipavailable\": \"Unlimited\",\n      \"iplimit\": \"Unlimited\",\n      \"iptotal\": 1,\n      \"isdefault\": true,\n      \"memoryavailable\": \"Unlimited\",\n      \"memorylimit\": \"Unlimited\",\n      \"memorytotal\": 4096,\n      \"name\": \"admin\",\n      \"networkavailable\": \"Unlimited\",\n      \"networklimit\": \"Unlimited\",\n      \"networktotal\": 1,\n      \"objectstorageavailable\": \"Unlimited\",\n      \"objectstoragelimit\": \"Unlimited\",\n      \"objectstoragetotal\": 0,\n      \"primarystorageavailable\": \"Unlimited\",\n      \"primarystoragelimit\": \"Unlimited\",\n      \"primarystoragetotal\": 16,\n      \"projectavailable\": \"Unlimited\",\n      \"projectlimit\": \"Unlimited\",\n      \"projecttotal\": 0,\n      \"receivedbytes\": 1346706148,\n      \"roleid\": \"fff4ee8f-5827-11f0-804a-1e0052000469\",\n      \"rolename\": \"Root Admin\",\n      \"roletype\": \"Admin\",\n      \"secondarystorageavailable\": \"Unlimited\",\n      \"secondarystoragelimit\": \"Unlimited\",\n      \"secondarystoragetotal\": 0,\n      \"sentbytes\": 35872906,\n      \"snapshotavailable\": \"Unlimited\",\n      \"snapshotlimit\": \"Unlimited\",\n      \"snapshottotal\": 0,\n      \"state\": \"enabled\",\n      \"templateavailable\": \"Unlimited\",\n      \"templatelimit\": \"Unlimited\",\n      \"templatetotal\": 0,\n      \"vmavailable\": \"Unlimited\",\n      \"vmlimit\": \"Unlimited\",\n      \"vmrunning\": 2,\n      \"vmstopped\": 0,\n      \"vmtotal\": 2,\n      \"volumeavailable\": \"Unlimited\",\n      \"volumelimit\": \"Unlimited\",\n      \"volumetotal\": 2,\n      \"vpcavailable\": \"Unlimited\",\n      \"vpclimit\": \"Unlimited\",\n      \"vpctotal\": 0\n    }\n  ],\n  \"count\": 1\n}\n\n```",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "be1ba2155fcd6b236aac756688a9e6f5bc031495",
      "old_mode": 33188,
      "old_path": "cli/completer.go",
      "new_id": "53de5fbf39e9c3386ee55b57f555d3270713a62e",
      "new_mode": 33188,
      "new_path": "cli/completer.go"
    },
    {
      "type": "modify",
      "old_id": "058c6fbe36bc369eba7e3226364d0ef6c3fea844",
      "old_mode": 33188,
      "old_path": "cmd/api.go",
      "new_id": "872a328ca27510ec1d02ec8b7a5cdc73715fc743",
      "new_mode": 33188,
      "new_path": "cmd/api.go"
    },
    {
      "type": "modify",
      "old_id": "08004cf6c3729e29e212195d2ac16b83bb6870d9",
      "old_mode": 33188,
      "old_path": "cmd/output.go",
      "new_id": "17606e6520f64ea2a600789469170f71abb1bb49",
      "new_mode": 33188,
      "new_path": "cmd/output.go"
    },
    {
      "type": "modify",
      "old_id": "096582d58dde26b7fb48611c2c4f0b7dfbba5cd2",
      "old_mode": 33188,
      "old_path": "config/cache.go",
      "new_id": "13596dd35340fb3a2e80ef9fa36c75d330a44725",
      "new_mode": 33188,
      "new_path": "config/cache.go"
    }
  ]
}
