Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
124 lines
5.2 KiB
TypeScript
124 lines
5.2 KiB
TypeScript
import { z } from 'zod';
|
|
import { BaseDomainEventPayloadSchema, uuidSchema } from './commonEventPayloadSchemas';
|
|
|
|
const integrationIdSchema = uuidSchema('Integration ID');
|
|
const connectionIdSchema = uuidSchema('Connection ID');
|
|
const userIdSchema = uuidSchema('User ID');
|
|
|
|
export const integrationSyncStartedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
|
|
integrationId: integrationIdSchema,
|
|
provider: z.string().min(1),
|
|
connectionId: connectionIdSchema.optional(),
|
|
syncId: z.string().min(1),
|
|
scope: z.string().optional(),
|
|
initiatedByUserId: userIdSchema.optional(),
|
|
startedAt: z.string().datetime().optional(),
|
|
}).describe('Payload for INTEGRATION_SYNC_STARTED');
|
|
|
|
export type IntegrationSyncStartedEventPayload = z.infer<typeof integrationSyncStartedEventPayloadSchema>;
|
|
|
|
export const integrationSyncCompletedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
|
|
integrationId: integrationIdSchema,
|
|
provider: z.string().min(1),
|
|
connectionId: connectionIdSchema.optional(),
|
|
syncId: z.string().min(1),
|
|
startedAt: z.string().datetime().optional(),
|
|
completedAt: z.string().datetime().optional(),
|
|
durationMs: z.number().int().nonnegative().optional(),
|
|
summary: z
|
|
.object({
|
|
created: z.number().int().nonnegative().optional(),
|
|
updated: z.number().int().nonnegative().optional(),
|
|
deleted: z.number().int().nonnegative().optional(),
|
|
skipped: z.number().int().nonnegative().optional(),
|
|
})
|
|
.optional(),
|
|
warnings: z.array(z.string()).optional(),
|
|
}).describe('Payload for INTEGRATION_SYNC_COMPLETED');
|
|
|
|
export type IntegrationSyncCompletedEventPayload = z.infer<typeof integrationSyncCompletedEventPayloadSchema>;
|
|
|
|
export const integrationSyncFailedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
|
|
integrationId: integrationIdSchema,
|
|
provider: z.string().min(1),
|
|
connectionId: connectionIdSchema.optional(),
|
|
syncId: z.string().min(1),
|
|
startedAt: z.string().datetime().optional(),
|
|
failedAt: z.string().datetime().optional(),
|
|
durationMs: z.number().int().nonnegative().optional(),
|
|
errorCode: z.string().optional(),
|
|
errorMessage: z.string().min(1),
|
|
retryable: z.boolean().optional(),
|
|
}).describe('Payload for INTEGRATION_SYNC_FAILED');
|
|
|
|
export type IntegrationSyncFailedEventPayload = z.infer<typeof integrationSyncFailedEventPayloadSchema>;
|
|
|
|
export const integrationWebhookReceivedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
|
|
integrationId: integrationIdSchema,
|
|
provider: z.string().min(1),
|
|
connectionId: connectionIdSchema.optional(),
|
|
webhookId: z.string().min(1),
|
|
eventName: z.string().min(1),
|
|
receivedAt: z.string().datetime().optional(),
|
|
rawPayloadRef: z.string().optional(),
|
|
}).describe('Payload for INTEGRATION_WEBHOOK_RECEIVED');
|
|
|
|
export type IntegrationWebhookReceivedEventPayload = z.infer<typeof integrationWebhookReceivedEventPayloadSchema>;
|
|
|
|
export const integrationConnectedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
|
|
integrationId: integrationIdSchema,
|
|
provider: z.string().min(1),
|
|
connectionId: connectionIdSchema,
|
|
connectedAt: z.string().datetime().optional(),
|
|
connectedByUserId: userIdSchema.optional(),
|
|
}).describe('Payload for INTEGRATION_CONNECTED');
|
|
|
|
export type IntegrationConnectedEventPayload = z.infer<typeof integrationConnectedEventPayloadSchema>;
|
|
|
|
export const integrationDisconnectedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
|
|
integrationId: integrationIdSchema,
|
|
provider: z.string().min(1),
|
|
connectionId: connectionIdSchema,
|
|
disconnectedAt: z.string().datetime().optional(),
|
|
disconnectedByUserId: userIdSchema.optional(),
|
|
reason: z.string().optional(),
|
|
}).describe('Payload for INTEGRATION_DISCONNECTED');
|
|
|
|
export type IntegrationDisconnectedEventPayload = z.infer<typeof integrationDisconnectedEventPayloadSchema>;
|
|
|
|
export const integrationTokenExpiringEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
|
|
integrationId: integrationIdSchema,
|
|
provider: z.string().min(1),
|
|
connectionId: connectionIdSchema,
|
|
expiresAt: z.string().datetime(),
|
|
daysUntilExpiry: z.number().int().nonnegative(),
|
|
notifiedAt: z.string().datetime().optional(),
|
|
}).describe('Payload for INTEGRATION_TOKEN_EXPIRING');
|
|
|
|
export type IntegrationTokenExpiringEventPayload = z.infer<typeof integrationTokenExpiringEventPayloadSchema>;
|
|
|
|
export const integrationTokenRefreshFailedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
|
|
integrationId: integrationIdSchema,
|
|
provider: z.string().min(1),
|
|
connectionId: connectionIdSchema,
|
|
failedAt: z.string().datetime().optional(),
|
|
errorCode: z.string().optional(),
|
|
errorMessage: z.string().min(1),
|
|
retryable: z.boolean().optional(),
|
|
}).describe('Payload for INTEGRATION_TOKEN_REFRESH_FAILED');
|
|
|
|
export type IntegrationTokenRefreshFailedEventPayload = z.infer<
|
|
typeof integrationTokenRefreshFailedEventPayloadSchema
|
|
>;
|
|
|
|
export const externalMappingChangedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
|
|
provider: z.string().min(1),
|
|
mappingType: z.string().min(1),
|
|
mappingId: z.string().min(1),
|
|
changedAt: z.string().datetime().optional(),
|
|
previousValue: z.unknown().optional(),
|
|
newValue: z.unknown().optional(),
|
|
}).describe('Payload for EXTERNAL_MAPPING_CHANGED');
|
|
|
|
export type ExternalMappingChangedEventPayload = z.infer<typeof externalMappingChangedEventPayloadSchema>;
|