You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
About two hundred operations that Forward's Go SDK covers and this one did not: access
control, organizations, user tokens and roles, SAML, audit logs, trusted certificates,
licensing, jobs, backups, banners, collectors and their settings, controller- and
cloud-managed setups, custom command groups, device discovery, Infoblox, ServiceNow and
Rapid7, org data files, performance metrics, scorecards, cloud objects, the checks
reports, snapshot progress, logs and retention, change-set commits and whole-device
configurations, the NQE schema and assists, and deployment artifacts. All are
unpublished and described by hand. Some reads were run against a read-only account;
the rest, and every write and admin route, are from Forward's source and say so.
Per-service methods for the hand-written groups among them: snapshots.progress(), process_estimate(), processing_queue(), logs(), collection_log(), collection_exceptions(), favorite(), set_note(), retention_policy(), set_retention_policy() and preview_retention(); change-set handle commit_detail(), edit_commit_note(), restore_commit(), restore_commit_as_new(), delete_commit(), duplicate() and the four device-configuration calls; ai's NQE
assists; nqe.schema() and run_metrics(); nqe.repo.source_by_id(); and client_software.deployment_artifacts().
Six query variants of routes already covered: users with their roles and with their
two-factor status, the atlas by location, a collector task with its sub-tasks, and the
CVE index's metadata. Four were read against a read-only account.
Fields the Go SDK reads that were missing: who created and last updated a classic
device, the controllers and managed devices in a connectivity result, and the Azure,
GCP and AWS cloud-account fields.
spec/unpublished.yaml is checked for repeated keys. YAML keeps the last of two equal
keys, which had silently dropped operations when two drafts described one path.
error.endpoint_not_served and error.account_locked on API errors: a 404 for a route
Forward does not map (not a missing resource), and a 401 for a locked account (not a
wrong credential).
Fixed
A job's cancelLink is put in the path as Forward gave it. Forward hands it out already
percent-encoded, and encoding it again made Forward answer 400. Found by the Go SDK
against a live instance; a parameter marked x-forward-pre-encoded is now left as it is.
collector_tasks.stop_collector_task() always sent an empty action, which Forward
refuses; the bare ?action in its route is now the caller's to set.
A create is retried after Forward's rate-limit 429 ("Rate limit exceeded"). That limiter
refuses before the request reaches its handler, so repeating it cannot do the work twice;
only idempotent requests were retried before, so a create under a lockout failed at once.
Any other 429 (the one-active-chat refusal is one) and every other retryable status still
leave a create alone, since they may follow a processed request.
A bare key in a dispatch string (?action=duplicate&targetNetworkId) is replaced by the
caller's value instead of being sent twice.
The NQE schema model read a type's deprecated as a string; Forward sends a flag there
and the advice only on fields.
A path parameter of . or .. is refused. Dots are not percent-encoded, and the HTTP
client collapses such a segment, so a device named .. addressed its parent route (a
per-device call went to the network). Names that merely contain dots are unaffected.
Found by comparing with the Go SDK, which fixed the same thing.