Files
claudetools/.claude/skills/bitdefender/references/BUILDOUT.md
Howard Enos a254e5f641 feat(bitdefender): complete Network module (build-out 3/N)
- Completed Network module for bitdefender skill (GravityZone Public API)
- Added getEndpointTags (read), setEndpointLabel (gated), createReconfigureClientTask/reconfigure (gated)
- Confirmed createUninstallTask, getEndpointsByPolicy, getManagedEndpointDetailsByIp, createScanTaskByMailboxes not found under /network
- Fixed endpoint-tags renderer to handle list result (previously crashing _print_kv)
- raw gates setEndpointLabel; reconfigure already gated
- selftest 55 -> 60 passing

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 10:32:26 -07:00

3.4 KiB

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

  • getApiKeyDetails

licensing

  • getLicenseInfo
  • (enumerate: getMonthlyUsage? / others)

companies — COMPLETE (6; no updateCompany/getCompaniesList — those don't exist)

  • getCompanyDetails (no id = own)
  • getCompanyDetailsByUser (username)
  • createCompany (gated; type 0=Partner/1=Customer + name)
  • suspendCompany (gated)
  • activateCompany (gated)
  • deleteCompany (gated)

network — COMPLETE (all exposed methods)

  • getNetworkInventoryItems · getEndpointsList · getManagedEndpointDetails
  • getScanTasksList · createScanTask · moveEndpoints
  • createCustomGroup · deleteCustomGroup · moveCustomGroup · deleteEndpoint
  • assignPolicy
  • createReconfigureClientTask (gated)
  • setEndpointLabel (gated)
  • getEndpointTags (read)
  • [DEAD] createUninstallTask (+variants) — does NOT exist under /network this version
  • [DEAD] getEndpointsByPolicy / getManagedEndpointDetailsByIp / createScanTaskByMailboxes — not found

packages

  • getPackagesList · createPackage · getInstallationLinks · deletePackage
  • getPackageDetails (param: packageId)
  • (enumerate remaining)

policies

  • getPoliciesList · getPolicyDetails (FULL config)
  • assignPolicy (lives in /network)
  • (confirm no other policy methods exist)

reports

  • getReportsList
  • createReport (param: name, type, targetIds, ...) (gated-ish)
  • getDownloadLinks · deleteReport (enumerate)

quarantine

  • getQuarantineItemsList (computers)
  • createRemoveQuarantineItemTask (gated)
  • createRestoreQuarantineItemTask (gated)
  • exchange quarantine variants (enumerate)

incidents / EDR

  • getBlocklistItems · addToBlocklist · removeFromBlocklist
  • createIsolateEndpointTask · createRestoreEndpointFromIsolationTask
  • [DEAD] getIncidentsList (Method not found on this tenant)
  • custom rules / changeIncidentStatus / updateIncidentNote (enumerate; likely EDR-license gated)

push (event service)

  • getPushEventSettings · getPushEventStats · setPushEventSettings
  • sendTestPushEvent (enumerate)

accounts — COMPLETE (all 7)

  • getAccountsList
  • getAccountDetails (no id = own account)
  • getNotificationsSettings
  • createAccount (gated)
  • updateAccount (gated)
  • deleteAccount (gated)
  • configureNotificationsSettings (gated; setter w/ no required param — never probe empty)

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)