feat(bitdefender): doc-verify assignPolicy/push + add full-API build-out tracker

- assign_policy: add inheritFromAbove option; mark VERIFIED via official docs
  (policyId/targetIds/forcePolicyInheritance/inheritFromAbove; not applied to
  ENFORCED-policy targets).
- setPushEventSettings: documented serviceType (splunk/cef/jsonRPC), TLS 1.2+
  receiver requirement, subscribeToEventTypes event-flag map; webhook receiver
  pattern noted.
- api-reference.md: cite GravityZone Support Center as authoritative source.
- add references/BUILDOUT.md — master checklist to implement every API method
  module-by-module; seeded with current done/todo/dead state.
- memory: reference_gravityzone_support (+ index).

selftest 42/42.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-21 10:14:23 -07:00
parent 5dc5f5f82d
commit 4cf34f5221
6 changed files with 130 additions and 7 deletions

View File

@@ -0,0 +1,87 @@
# Bitdefender skill — full API build-out tracker
Goal: implement EVERY GravityZone Public API method the docs expose (and the
tenant license allows), one module at a time. Source of truth for method/param
shapes: the GravityZone Support Center
(https://www.bitdefender.com/business/support/en/77209-125277-public-api.html).
Legend: `[x]` wrapped + tested · `[ ]` todo · `[~]` partial/unverified ·
`[DEAD]` in key scope but license/feature OFF on this tenant.
Per-module workflow: fetch module doc -> list methods + params -> add to
`gz_client.py` + `gz.py` (gate state-changing behind `--confirm`) -> test
(reads live; writes gated-only, never executed on prod during build) -> update
`api-reference.md` + tick here.
---
## general / authentication
- [x] getApiKeyDetails
## licensing
- [x] getLicenseInfo
- [ ] (enumerate: getMonthlyUsage? / others)
## companies
- [x] getCompanyDetails
- [ ] getCompaniesList / getCompanyDetailsByUser
- [ ] createCompany / updateCompany / deleteCompany / suspend / activate (enumerate; gated)
## network
- [x] getNetworkInventoryItems · getEndpointsList · getManagedEndpointDetails
- [x] getScanTasksList · createScanTask · moveEndpoints
- [x] createCustomGroup · deleteCustomGroup · moveCustomGroup · deleteEndpoint
- [x] assignPolicy
- [ ] createReconfigureClientTask (gated)
- [ ] createUninstallTask (gated)
- [ ] setEndpointLabel
- [ ] (enumerate remaining: getEndpointsCounts, getManagedEndpointDetails opts, etc.)
## packages
- [x] getPackagesList · createPackage · getInstallationLinks · deletePackage
- [ ] getPackageDetails (param: packageId)
- [ ] (enumerate remaining)
## policies
- [x] getPoliciesList · getPolicyDetails (FULL config)
- [x] assignPolicy (lives in /network)
- [ ] (confirm no other policy methods exist)
## reports
- [x] getReportsList
- [ ] createReport (param: name, type, targetIds, ...) (gated-ish)
- [ ] getDownloadLinks · deleteReport (enumerate)
## quarantine
- [x] getQuarantineItemsList (computers)
- [ ] createRemoveQuarantineItemTask (gated)
- [ ] createRestoreQuarantineItemTask (gated)
- [ ] exchange quarantine variants (enumerate)
## incidents / EDR
- [x] getBlocklistItems · addToBlocklist · removeFromBlocklist
- [x] createIsolateEndpointTask · createRestoreEndpointFromIsolationTask
- [DEAD] getIncidentsList (Method not found on this tenant)
- [ ] custom rules / changeIncidentStatus / updateIncidentNote (enumerate; likely EDR-license gated)
## push (event service)
- [x] getPushEventSettings · getPushEventStats · setPushEventSettings
- [ ] sendTestPushEvent (enumerate)
## accounts (fully enumerated from docs)
- [x] getAccountsList
- [x] getNotificationsSettings
- [ ] getAccountDetails
- [ ] createAccount (gated)
- [ ] updateAccount (gated)
- [ ] deleteAccount (gated)
- [ ] configureNotificationsSettings (gated)
## integrations
- [ ] (enumerate; getPSAIntegrationList was a name-miss — find correct names)
## maintenance windows
- [DEAD] getMaintenanceWindows / *List → "not available" on this tenant
## patchmanagement / phasr
- [DEAD] license OFF (managePatchManagement=false; phasr feature off)