- migration 062: mimecast_tenants table (company_id, client_id/secret, account_code) - Seed Wulf (CUSA13A95) + Seubert (CUSA96A181) tenants - MimecastClient.getHeldMessages(): full pagination via meta.pagination.next cursor (API always returns 10/page regardless of pageSize param, totalCount in meta) - getMimecastClientForTenant() factory for per-tenant instantiation - GET /api/mimecast/held?tenantId=&recipient= — fetches all tenants in parallel, merges + sorts by date, returns per-tenant counts + combined messages[] - Held Mail tab on /admin/sync/mimecast (on-demand load, recipient filter, tenant badges, policy filter dropdown, DMARC/impersonation highlighted red)
19 lines
925 B
SQL
19 lines
925 B
SQL
-- Migration 062: Mimecast multi-tenant credentials
|
|
-- Stores per-client Mimecast API credentials for held mail and other per-tenant queries
|
|
|
|
CREATE TABLE IF NOT EXISTS mimecast_tenants (
|
|
id SERIAL PRIMARY KEY,
|
|
company_id BIGINT REFERENCES companies(id) ON DELETE SET NULL,
|
|
account_code VARCHAR(50),
|
|
account_name VARCHAR(255),
|
|
client_id VARCHAR(255) NOT NULL,
|
|
client_secret VARCHAR(255) NOT NULL,
|
|
base_url VARCHAR(255) DEFAULT 'https://api.services.mimecast.com',
|
|
enabled BOOLEAN DEFAULT true,
|
|
notes TEXT,
|
|
created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_mimecast_tenants_company ON mimecast_tenants(company_id);
|
|
CREATE INDEX IF NOT EXISTS idx_mimecast_tenants_enabled ON mimecast_tenants(enabled);
|