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.
Install the package with Composer, publish/run any package migrations, and review the provider contract or base provider class first. The core day-to-day object is an integration record that stores provider configuration, encrypted credentials, optional metadata, and health state.
A good first use case is connecting one external provider: create an integration, assign credentials through the package’s cast/Data class, perform a request through the provider, and let the package record request health. Version 6.5.1 is a bugfix release with no documented breaking changes; upgrade if you have integrations with credentialDataClass() or metadataDataClass() and have seen unnecessary writes or lock contention.
credentialDataClass() and metadataDataClass() when you want typed access to encrypted credentials and JSON metadata.credentials as write-only secrets in application code: compare Data objects or decoded values, never ciphertext.metadata for provider-specific non-secret configuration. The updated cast compares decoded JSON and ignores whitespace/key-order differences introduced by JSON columns.recordSuccess() and update health. Avoid manually rewriting integration rows after requests unless you have a specific health/state update to make.isDirty('credentials') and isDirty('metadata') should be false when values are unchanged.APP_PREVIOUS_KEYS to be treated as changed on the first save, then re-encrypted with the current APP_KEY. Subsequent saves should not rewrite them.recordSuccess().APP_PREVIOUS_KEYS key. One rewrite is expected to move it under the current APP_KEY.isDirty() after reading $integration->credentials or $integration->metadata to confirm the cast is behaving as expected.How can I help you explore Laravel packages today?