shaykhnazar/hikvision-isapi
A Laravel/PHP client for Hikvision ISAPI devices, offering convenient access to camera and access-control endpoints. Simplifies authentication, HTTP requests, and common ISAPI operations while leaving room for custom device calls.
Baseline assessment based on v2.0.0-beta.1 release notes. The package appears to provide Laravel integration with Hikvision access-control devices, including event retrieval, webhook backfill support, HTTP client customization, and typed exceptions.
EventService::between() is a useful architectural primitive for backfill/reconciliation because it reuses one searchID across pages and advances by returned records. The new exception taxonomy supports retry/backoff policies, and injectable Guzzle supports observability and middleware. However, the package is now explicitly outside Laravel 11, which narrows its fit for existing estates.between() and pagination; breaking removal of Laravel 11; behavioral change where HTTP 401 now raises AuthenticationException; potential impact on existing catch/retry logic; searchID correctness under partial page failures or device timeouts; optional Guzzle injection precedence/conflicts; changed malformed-XML handling may alter error visibility. Positive signals: dependency audit cleared, Guzzle updated, CI expanded, PHPStan level 5 with no baseline, tests increased from 31 to 88.between() behave on device timeout, partial page, or mid-generator failure? What is the searchID lifetime/scope across devices and sessions? What is the retry contract for isRetryable(), DeviceBusyException, and DeviceUnreachableException? Is there a migration guide from 1.x? What is the support policy for the beta and for the 1.x line, especially for Laravel 11 users? How are malformed XML responses surfaced now—exception, empty result, or log? What are device rate limits for backfill jobs?illuminate/support ^12.0|^13.0, orchestra/testbench ^10.0|^11.0, Composer 2.9+. Laravel 11 is not compatible with v2 and is blocked by unresolved security advisories; those projects must stay on 1.x and plan a framework upgrade.$searchId on search() is likely backward compatible. Injectable Guzzle should be backward compatible but must be tested against existing HTTP middleware. The new AuthenticationException on HTTP 401 can break existing catch blocks or retry loops; audit all exception handling. Malformed XML no longer raises a PHP warning, so verify whether callers now receive an exception, empty data, or a logged failure.between() and webhook-gap reconciliation. 6) Canary one site or tenant. 7) Monitor retry rates and backfill lag. 8) Defer broad production rollout until a stable v2 release or explicit beta acceptance. Recommendation: do not adopt v2.0.0-beta.1 as a production default; use it for evaluation and pilot only.between() can be long-running and device-bound. Run backfills in queued jobs, chunk time windows, enforce max runtime/memory, and respect device connection/rate limits. Reusing searchID reduces request overhead but may interact with device session limits. Backfill jobs can create load spikes on devices and should be rate-limited per site/device.between() and alerting on backfill lag. Add dashboards for auth failures, device busy/unreachable rates, retry counts, and backfill completion.searchID pagination, and Guzzle injection. Create runbooks for 401/auth failures, device busy, device unreachable, malformed XML, and partial backfill failures. Pilot with real terminals before canary. Define retry/backoff policy and rollback criteria to 1.x if the beta destabilizes operations.How can I help you explore Laravel packages today?