n8n-nodes-docuseal
Version:
Manage DocuSeal documents, templates, and submissions within n8n workflows.
226 lines • 6.57 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
import type { IDataObject } from 'n8n-workflow';
export interface DocusealApiCredentials {
productionApiKey: string;
testApiKey: string;
baseUrl: string;
}
export interface DocusealEnvironment {
environment: 'production' | 'test';
}
export interface DocusealTemplate {
id: number;
name: string;
created_at: string;
updated_at: string;
fields?: DocusealTemplateField[];
submissions_count?: number;
archived?: boolean;
}
export interface DocusealTemplateField {
name: string;
type: 'text' | 'signature' | 'date' | 'checkbox' | 'radio' | 'select' | 'file';
required: boolean;
default_value?: string;
options?: string[];
}
export interface CreateTemplateFromPdfParams {
name: string;
pdf_file: Buffer | string;
fields?: DocusealTemplateField[];
}
export interface DocusealSubmission {
id: number;
template_id: number;
status: 'pending' | 'completed' | 'expired' | 'cancelled';
created_at: string;
updated_at: string;
completed_at?: string;
expired_at?: string;
submitters: DocusealSubmitter[];
audit_trail?: DocusealAuditEvent[];
documents?: DocusealDocument[];
}
export interface CreateSubmissionParams {
template_id: number;
submitters: DocusealSubmitter[];
send_email?: boolean;
send_sms?: boolean;
expired_at?: string;
message?: string;
field_values?: Record<string, unknown>;
metadata?: Record<string, unknown>;
}
export interface DocusealSubmitter {
id?: number;
email: string;
role: string;
name?: string;
phone?: string;
external_id?: string;
completed?: boolean;
send_email?: boolean;
send_sms?: boolean;
metadata?: Record<string, unknown>;
fields?: Record<string, unknown>;
status?: 'pending' | 'opened' | 'completed';
completed_at?: string;
opened_at?: string;
submission_id?: number;
}
export interface UpdateSubmitterParams {
name?: string;
phone?: string;
external_id?: string;
metadata?: Record<string, unknown>;
fields?: Record<string, unknown>;
}
export interface DocusealDocument {
id: number;
filename: string;
content_type: string;
size: number;
url: string;
created_at: string;
}
export interface DocusealForm {
id: number;
name: string;
slug: string;
template_id: number;
status: 'active' | 'inactive';
created_at: string;
updated_at: string;
url: string;
submissions_count: number;
}
export interface DocusealWebhookEvent {
event: 'submission.created' | 'submission.completed' | 'submitter.opened' | 'submitter.completed';
data: DocusealSubmission | DocusealSubmitter;
timestamp: string;
submission_id?: number;
submitter_id?: number;
}
export interface DocusealAuditEvent {
id: number;
action: string;
user_email?: string;
ip_address: string;
user_agent: string;
created_at: string;
metadata?: Record<string, unknown>;
}
export interface DocusealApiResponse<T = unknown> {
data?: T;
message?: string;
error?: string;
status?: number;
}
export interface DocusealPaginatedResponse<T = unknown> {
data: T[];
meta: {
current_page: number;
total_pages: number;
total_count: number;
per_page: number;
};
}
export interface DocusealApiError {
message: string;
status: number;
code?: string;
details?: Record<string, unknown>;
}
export interface ValidationResult {
isValid: boolean;
error?: string;
details?: Record<string, unknown> | undefined;
}
export interface FileValidationOptions {
allowedTypes: string[];
maxSize: number;
requireSignature?: boolean;
}
export interface UrlValidationOptions {
requireHttps?: boolean;
allowPrivateIps?: boolean;
allowLocalhost?: boolean;
}
export interface PerformanceOptions {
batchSize?: number;
maxItems?: number;
memoryOptimized?: boolean;
retryAttempts?: number;
retryDelay?: number;
}
export interface BatchRequestOptions extends PerformanceOptions {
delayBetweenBatches?: number;
progressCallback?: (processed: number, total: number) => void;
}
export interface UploadOptions {
chunkSize?: number;
timeout?: number;
progressCallback?: (uploaded: number, total: number) => void;
}
export type DocusealResource = 'template' | 'submission' | 'submitter' | 'form';
export type DocusealOperation = 'get' | 'getMany' | 'create' | 'update' | 'delete';
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
export interface NodeParameters extends IDataObject {
resource: DocusealResource;
operation: DocusealOperation;
environment?: 'production' | 'test';
returnAll?: boolean;
limit?: number;
filters?: IDataObject;
additionalFields?: IDataObject;
}
export interface FieldCollection {
field: FieldItem[];
}
export interface FieldItem {
name: string;
value: unknown;
}
export interface SubmitterCollection {
submitter: SubmitterItem[];
}
export interface SubmitterItem {
email: string;
role: string;
additionalFields?: {
name?: string;
phone?: string;
external_id?: string;
completed?: boolean;
send_email?: boolean;
send_sms?: boolean;
metadata?: string | Record<string, unknown>;
fields?: string | Record<string, unknown>;
};
}
export declare function isDocusealTemplate(obj: unknown): obj is DocusealTemplate;
export declare function isDocusealSubmission(obj: unknown): obj is DocusealSubmission;
export declare function isDocusealSubmitter(obj: unknown): obj is DocusealSubmitter;
export declare function isDocusealApiError(obj: unknown): obj is DocusealApiError;
export declare const DOCUSEAL_API_ENDPOINTS: {
readonly TEMPLATES: "/templates";
readonly SUBMISSIONS: "/submissions";
readonly SUBMITTERS: "/submitters";
readonly FORMS: "/forms";
readonly DOCUMENTS: "/documents";
};
export declare const DOCUSEAL_EVENT_TYPES: {
readonly SUBMISSION_CREATED: "submission.created";
readonly SUBMISSION_COMPLETED: "submission.completed";
readonly SUBMITTER_OPENED: "submitter.opened";
readonly SUBMITTER_COMPLETED: "submitter.completed";
};
export declare const DOCUSEAL_STATUSES: {
readonly PENDING: "pending";
readonly COMPLETED: "completed";
readonly EXPIRED: "expired";
readonly CANCELLED: "cancelled";
readonly OPENED: "opened";
};
//# sourceMappingURL=types.d.ts.map