pocketarc/laravel-integrations
A Laravel package for organizing third-party service integrations: register providers, configure credentials, and resolve clients through a consistent manager API, keeping external API connections centralized, testable, and easy to maintain across your app.
APP_PREVIOUS_KEYS-aware encryption path, you can put "connect your own provider account" and "rotate keys without downtime" on the roadmap with known effort, rather than as research spikes.APP_PREVIOUS_KEYS, re-encrypted with the current APP_KEY on next save) give you concrete answers for security reviews and customer questionnaires without a bespoke design.recordSuccess(), and reading credentials/metadata as Data classes made Eloquent treat the columns as dirty, so each request rewrote them and took a row lock. Each write is now skipped when values are unchanged (JSON-compared, whitespace/key-order insensitive). This turns "how many integrations can we run against one database before lock timeouts" from an unknown into a bounded, testable number — relevant to whether you raise per-tenant integration limits or run integrations in a separate database.Adopt it when:
APP_PREVIOUS_KEYS, re-encryption with the current APP_KEY) rather than a single hard-coded token in config.credentialDataClass(), metadataDataClass()) shaping your models.Look elsewhere or build thin yourself when:
To executives: We need every customer to connect their own third-party accounts. This package provides that connective tissue out of the box — encrypted credentials, key rotation, and per-integration health — so we build product features instead of plumbing. The 6.5.1 release is a maintenance patch, not a feature, but it removes needless database writes on every successful provider call; that directly reduces lock contention and the risk of timeouts as integration volume grows. Low-risk upgrade, no schema or API changes to coordinate.
To engineering: 6.5.1 fixes a real defect: with a credentialDataClass() set, reading $integration->credentials marked the encrypted column dirty (ciphertext comparison), and recordSuccess() fires on every successful request — so every request rewrote the row and held a lock. Same story for metadata on MySQL, where JSON normalization made round-tripped values compare unequal. Both casts now compare decoded JSON, and credentials decryptable only by an APP_PREVIOUS_KEYS key are intentionally treated as changed once so they get re-encrypted under the current APP_KEY. Patch-level, no migrations. Upgrade, then verify: no write on unchanged saves, one write on legacy-key credentials, and reduced lock wait times under load.
How can I help you explore Laravel packages today?