Add per-customer SMS and Bird Integrations for event messaging.
Deploy Ladill Events / deploy (push) Successful in 28s

Attendee and speaker comms use encrypted tenant relay credentials and skip platform-key fallback and Bird wallet double-debit.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-12 17:05:54 +00:00
co-authored by Cursor
parent 13b2bd9702
commit 6e42cd1cb2
21 changed files with 1095 additions and 80 deletions
@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('events_messaging_credentials', function (Blueprint $table) {
$table->id();
$table->string('owner_ref')->unique();
$table->text('sms_api_key_encrypted')->nullable();
$table->string('sms_api_key_prefix', 32)->nullable();
$table->string('sms_sender_id', 11)->nullable();
$table->string('sms_status', 32)->nullable();
$table->timestamp('sms_validated_at')->nullable();
$table->text('sms_last_error')->nullable();
$table->text('bird_api_key_encrypted')->nullable();
$table->string('bird_api_key_prefix', 32)->nullable();
$table->string('bird_from_email')->nullable();
$table->string('bird_from_name')->nullable();
$table->string('bird_status', 32)->nullable();
$table->timestamp('bird_validated_at')->nullable();
$table->text('bird_last_error')->nullable();
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('events_messaging_credentials');
}
};