Extension and action examples
Use the action functions with records and Data objects supplied by your application. They pass each argument to the package operation and return its result.
These adapters show container registration. Use the owning package registry when a contract requires contributor discovery.
Contract adapters wrap an existing implementation. Call their registration function from your service provider with that implementation; tagged contracts keep their declared tag. Resolve the backend by its concrete class before registration so the replacement contract does not resolve itself. Static contract metadata uses one backend class per adapter.
Contract Capell\EmailStudio\Contracts\CapturesEmailTemplateThemeScreenshots
Section titled “Contract Capell\EmailStudio\Contracts\CapturesEmailTemplateThemeScreenshots”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
final class CapturesEmailTemplateThemeScreenshotsAdapter implements \Capell\EmailStudio\Contracts\CapturesEmailTemplateThemeScreenshots{ public function __construct(private readonly \Capell\EmailStudio\Contracts\CapturesEmailTemplateThemeScreenshots $backend) {}
#[\Override] public function capture(\Capell\EmailStudio\Models\EmailTemplateTheme $theme): ?string { return $this->backend->capture($theme); }}
function registerCapturesEmailTemplateThemeScreenshotsAdapter(\Capell\EmailStudio\Contracts\CapturesEmailTemplateThemeScreenshots $backend): void{ app()->bind(CapturesEmailTemplateThemeScreenshotsAdapter::class, static fn (): CapturesEmailTemplateThemeScreenshotsAdapter => new CapturesEmailTemplateThemeScreenshotsAdapter($backend)); app()->bind(\Capell\EmailStudio\Contracts\CapturesEmailTemplateThemeScreenshots::class, CapturesEmailTemplateThemeScreenshotsAdapter::class);}Contract Capell\EmailStudio\Contracts\EmailProviderAdapter
Section titled “Contract Capell\EmailStudio\Contracts\EmailProviderAdapter”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
final class EmailProviderAdapterAdapter implements \Capell\EmailStudio\Contracts\EmailProviderAdapter{ public function __construct(private readonly \Capell\EmailStudio\Contracts\EmailProviderAdapter $backend) {}
#[\Override] public function normalizeInboundReply(array $payload, array $headers = []): \Capell\EmailStudio\Data\InboundEmailReplyData { return $this->backend->normalizeInboundReply($payload, $headers); }
#[\Override] public function normalizeWebhookPayload(array $payload, array $headers = []): \Capell\EmailStudio\Data\ProviderWebhookEventData { return $this->backend->normalizeWebhookPayload($payload, $headers); }
#[\Override] public function send(\Capell\EmailStudio\Models\EmailMessage $message): \Capell\EmailStudio\Data\ProviderSendResultData { return $this->backend->send($message); }}
function registerEmailProviderAdapterAdapter(\Capell\EmailStudio\Contracts\EmailProviderAdapter $backend): void{ app()->bind(EmailProviderAdapterAdapter::class, static fn (): EmailProviderAdapterAdapter => new EmailProviderAdapterAdapter($backend)); app()->bind(\Capell\EmailStudio\Contracts\EmailProviderAdapter::class, EmailProviderAdapterAdapter::class);}Action activateTemplateVariant
Section titled “Action activateTemplateVariant”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
function runActivateTemplateVariant(\Capell\EmailStudio\Models\EmailTemplateVariant $variant, ?int $approvedBy = null): \Capell\EmailStudio\Models\EmailTemplateVariant{ return \Capell\EmailStudio\Actions\ActivateEmailTemplateVariantAction::run($variant, $approvedBy);}Action applyMailTrackerSettings
Section titled “Action applyMailTrackerSettings”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
function runApplyMailTrackerSettings(): void{ \Capell\EmailStudio\Actions\ApplyMailTrackerSettingsAction::run();}Action captureTemplateThemeScreenshot
Section titled “Action captureTemplateThemeScreenshot”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
function runCaptureTemplateThemeScreenshot(\Capell\EmailStudio\Models\EmailTemplateTheme $theme): \Capell\EmailStudio\Models\EmailTemplateTheme{ return \Capell\EmailStudio\Actions\CaptureEmailTemplateThemeScreenshotAction::run($theme);}Action createTemplateOverride
Section titled “Action createTemplateOverride”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
function runCreateTemplateOverride(string $templateKey, ?int $siteId = null, string $siteScopeKey = 'global', ?string $locale = null, ?int $emailProfileId = null): \Capell\EmailStudio\Models\EmailTemplateVariant{ return \Capell\EmailStudio\Actions\CreateEmailTemplateOverrideAction::run($templateKey, $siteId, $siteScopeKey, $locale, $emailProfileId);}Action purgeTrackedEmails
Section titled “Action purgeTrackedEmails”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
function runPurgeTrackedEmails(?int $retentionDays = null, bool $dryRun = false): \Capell\EmailStudio\Data\TrackedEmailPurgeResultData{ return \Capell\EmailStudio\Actions\PurgeTrackedEmailsAction::run($retentionDays, $dryRun);}Action recordProviderEvent
Section titled “Action recordProviderEvent”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
function runRecordProviderEvent(\Capell\EmailStudio\Models\EmailProfile $profile, \Capell\EmailStudio\Data\ProviderWebhookEventData $eventData): \Capell\EmailStudio\Models\EmailEvent{ return \Capell\EmailStudio\Actions\RecordProviderEventAction::run($profile, $eventData);}Action renderStaticTemplateDefinition
Section titled “Action renderStaticTemplateDefinition”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
function runRenderStaticTemplateDefinition(\Capell\EmailStudio\Data\EmailTemplateDefinitionData $definition, \Capell\EmailStudio\Data\EmailContextData $context): \Capell\EmailStudio\Data\RenderedEmailData{ return \Capell\EmailStudio\Actions\RenderEmailTemplateDefinitionAction::run($definition, $context);}Action sendTemplateTest
Section titled “Action sendTemplateTest”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
function runSendTemplateTest(string $templateKey, string $recipientEmail, ?string $recipientName = null, ?array $variables = null, ?int $siteId = null, string $siteScopeKey = 'global', ?string $locale = null, ?int $emailProfileId = null): \Capell\EmailStudio\Models\EmailMessage{ return \Capell\EmailStudio\Actions\SendEmailTemplateTestAction::run($templateKey, $recipientEmail, $recipientName, $variables, $siteId, $siteScopeKey, $locale, $emailProfileId);}Action validateProviderWebhookSignature
Section titled “Action validateProviderWebhookSignature”<?phpdeclare(strict_types=1);
namespace App\CapellExamples\EmailStudio;
function runValidateProviderWebhookSignature(\Capell\EmailStudio\Models\EmailProfile $profile, string $payload, ?string $signature): bool{ return \Capell\EmailStudio\Actions\ValidateProviderWebhookSignatureAction::run($profile, $payload, $signature);}