@hookflo/tern
Version:
A robust, scalable webhook verification framework supporting multiple platforms and signature algorithms
80 lines (79 loc) • 1.95 kB
TypeScript
export type TemplateCategory = 'payment' | 'auth' | 'ecommerce';
export interface TemplateField {
id: string;
name: string;
type: 'string' | 'number' | 'boolean' | 'object' | 'array';
required: boolean;
description?: string;
defaultValue?: unknown;
}
export interface BaseTemplate {
id: string;
category: TemplateCategory;
version: string;
fields: TemplateField[];
}
export interface UserSchemaField {
id: string;
name: string;
type: TemplateField['type'];
required: boolean;
enabled: boolean;
defaultValue?: unknown;
}
export interface FieldMapping {
schemaFieldId: string;
providerPath: string;
transform?: string;
}
export interface ProviderMapping {
provider: string;
fieldMappings: FieldMapping[];
}
export interface UserSchema {
id: string;
userId: string;
baseTemplateId: string;
category: TemplateCategory;
fields: UserSchemaField[];
providerMappings: ProviderMapping[];
createdAt: Date;
updatedAt: Date;
}
export interface NormalizedPayloadMeta {
provider: string;
schemaId: string;
schemaVersion: string;
transformedAt: Date;
}
export interface NormalizedResult {
normalized: Record<string, unknown>;
meta: NormalizedPayloadMeta;
}
export interface CreateSchemaInput {
userId: string;
baseTemplateId: string;
category: TemplateCategory;
fields: UserSchemaField[];
providerMappings: ProviderMapping[];
}
export interface UpdateSchemaInput {
fields?: UserSchemaField[];
providerMappings?: ProviderMapping[];
}
export interface ProviderInfoField {
path: string;
type?: TemplateField['type'];
description?: string;
}
export interface ProviderInfo {
id: string;
name: string;
category: TemplateCategory;
samplePaths?: ProviderInfoField[];
}
export interface TransformParams {
rawPayload: unknown;
provider: string;
schemaId: string;
}