Interfaces
Properties
channel
channel: {
capabilities: {
async: boolean;
attachments: boolean;
audioInput: boolean;
audioOutput: boolean;
buttons: boolean;
deliveryReceipts: boolean;
files: boolean;
html: boolean;
images: boolean;
markdown: boolean;
privateReplies: boolean;
publicReplies: boolean;
quickReplies: boolean;
readReceipts: boolean;
realtime: boolean;
richText: boolean;
supportsHumanTransfer: boolean;
templates: boolean;
threaded: boolean;
typingIndicator: boolean;
voice: boolean;
widgets: boolean;
};
channelId: string;
externalConversationId?: string;
externalMessageId?: string;
externalThreadId?: string;
externalUserId?: string;
kind: string;
locale?: string;
metadata?: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
provider?: string;
timezone?: string;
};
capabilities
capabilities: {
async: boolean;
attachments: boolean;
audioInput: boolean;
audioOutput: boolean;
buttons: boolean;
deliveryReceipts: boolean;
files: boolean;
html: boolean;
images: boolean;
markdown: boolean;
privateReplies: boolean;
publicReplies: boolean;
quickReplies: boolean;
readReceipts: boolean;
realtime: boolean;
richText: boolean;
supportsHumanTransfer: boolean;
templates: boolean;
threaded: boolean;
typingIndicator: boolean;
voice: boolean;
widgets: boolean;
};
capabilities.async
capabilities.attachments
capabilities.audioOutput
capabilities.deliveryReceipts
deliveryReceipts: boolean;
capabilities.files
capabilities.html
capabilities.images
capabilities.markdown
capabilities.privateReplies
capabilities.publicReplies
capabilities.quickReplies
capabilities.readReceipts
capabilities.realtime
capabilities.richText
capabilities.supportsHumanTransfer
supportsHumanTransfer: boolean;
capabilities.templates
capabilities.threaded
capabilities.typingIndicator
typingIndicator: boolean;
capabilities.voice
channelId
externalConversationId?
optional externalConversationId?: string;
externalMessageId?
optional externalMessageId?: string;
externalThreadId?
optional externalThreadId?: string;
externalUserId?
optional externalUserId?: string;
kind
locale?
optional locale?: string;
optional metadata?: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
provider?
optional provider?: string;
timezone?
optional timezone?: string;
id
intake
intake: FormIntakeRecord;
occurredAt
type
type: "channel.form.submission";
Extends
Properties
allowUnknownFields
allowUnknownFields: boolean;
Overrides
FormDefinitionInput.allowUnknownFields
fields
fields: FormFieldDefinition[];
Inherited from
FormDefinitionInput.fields
id
Inherited from
FormDefinitionInput.id
optional metadata?: FormsProviderExtensionFields;
Inherited from
FormDefinitionInput.metadata
name
Overrides
FormDefinitionInput.name
version?
optional version?: string;
Inherited from
FormDefinitionInput.version
Extended by
Properties
allowUnknownFields?
optional allowUnknownFields?: boolean;
fields
fields: FormFieldDefinition[];
id
optional metadata?: FormsProviderExtensionFields;
name?
version?
optional version?: string;
Properties
id
label?
optional metadata?: FormsProviderExtensionFields;
options?
optional options?: FormFieldOption[];
required?
optional required?: boolean;
type
Properties
label?
optional metadata?: FormsProviderExtensionFields;
value
Properties
customer?
optional customer?: FormsJsonObject;
fields
id
kind
optional metadata?: FormsProviderExtensionFields;
source?
optional source?: FormsJsonObject;
submittedAt
Properties
optional registryConfigured?: boolean;
optional webhookSecretConfigured?: boolean;
Extended by
Indexable
[key: string]: FormsProviderExtensionValue
Extends
Indexable
[key: string]: FormsProviderExtensionValue
Extends
Indexable
[key: string]: FormsProviderExtensionValue
Properties
customer?
optional customer?: FormsJsonObject;
fields
optional metadata?: FormsProviderExtensionFields;
source?
optional source?: FormsJsonObject;
submissionId?
optional submissionId?: string;
submittedAt?
optional submittedAt?: string;
Properties
code
code:
| "unknown-field"
| "missing-required"
| "invalid-type"
| "invalid-option";
fieldId
message
Properties
optional forms?: FormDefinition[];
rawBody?
optional rawBody?: string;
requireSignature?
optional requireSignature?: boolean;
secret?
optional secret?: string;
optional signatureHeader?: string;
Type Aliases
type FormFieldType =
| "text"
| "email"
| "number"
| "boolean"
| "select"
| "multiselect"
| "date"
| "file"
| "object";
type FormsJsonPrimitive = string | number | boolean | null;
type FormsJsonValue =
| FormsJsonPrimitive
| FormsJsonObject
| readonly FormsJsonValue[];
type FormsProviderExtensionValue = FormsJsonValue | object | undefined;
type FormsProviderPayload = FormsJsonObject | object;
type FormsProviderQuery = Record<string, FormsProviderExtensionValue>;
type FormValidationResult =
| {
errors: [];
submission: FormSubmissionInput;
valid: true;
}
| {
errors: FormValidationError[];
submission: FormSubmissionInput;
valid: false;
};
Functions
function defineForm(input): FormDefinition;
Parameters
Returns
FormDefinition
function formsCredentialStatuses(input): {
expiresAt?: string;
message?: string;
providerPackageId?: string;
requirementId: string;
scopes?: string[];
state: | "required"
| "configured"
| "permission-blocked"
| "not-required"
| "missing"
| "expired"
| "insufficient-scope"
| "unavailable";
}[];
Parameters
Returns
{
expiresAt?: string;
message?: string;
providerPackageId?: string;
requirementId: string;
scopes?: string[];
state: | "required"
| "configured"
| "permission-blocked"
| "not-required"
| "missing"
| "expired"
| "insufficient-scope"
| "unavailable";
}[]
function normalizeFormSubmission(form, submission): FormIntakeRecord;
Parameters
Returns
FormIntakeRecord
function normalizeFormSubmissionEvent(form, submission): FormChannelEvent;
Parameters
Returns
FormChannelEvent
function parseFormWebhook(request, options?): Promise<FormSubmissionInput>;
Parameters
Returns
Promise\<FormSubmissionInput>
function validateFormSubmission(form, submission): FormValidationResult;
Parameters
Returns
FormValidationResult
function validateFormWebhookSignature(input): boolean;
Parameters
| Parameter |
Type |
input |
{ rawBody: string; secret: string; signature: string; } |
input.rawBody |
string |
input.secret |
string |
input.signature |
string |
Returns
boolean