@typeform/api-client
Version:
JS SDK for Typeform API
1,302 lines • 51.5 kB
TypeScript
export declare namespace Typeform {
/**
* Object that defines the Logic Jump's behavior.
*/
export interface Action {
/**
* Behavior the Logic Jump will take.
*/
action?: 'jump' | 'add' | 'subtract' | 'multiply' | 'divide';
/**
* Properties that further specify how the Logic Jump will behave.
*/
details?: ActionDetails;
/**
* Conditions for executing the Logic Jump. Conditions answer the question, "Under what circumstances?"
* The condition object is the IF statement in your Logic Jump.
*/
condition?: Condition | AndOrOperator;
}
/**
* Properties that further specify how the Logic Jump will behave.
*/
export interface ActionDetails {
/**
* Specifies where the Logic Jump leads---to another field ("field"), a Hidden Field ("hidden"), or thank you screen ("thankyou").
*/
to?: {
/**
* Logic Jump "to" option you are using.
*/
type?: 'field' | 'hidden' | 'thankyou';
/**
* The "ref" value for the field, Hidden Field, or thank you screen the Logic Jump leads to.
*/
value?: string;
};
/**
* Keeps a running total for the `score` or `price` variable.
*/
target?: {
/**
* Specifies that the value is a variable.
*/
type?: 'variable';
/**
* Variable value to use in calculation.
*/
value?: 'score' | 'price';
};
/**
* Specifies the numeric value to use in the calculation for the `score` or `price` variable.
*/
value?: {
/**
* Specifies that the numeric value is a constant.
*/
type?: 'constant';
/**
* Numeric value to use in calculation.
*/
value?: number;
};
}
export namespace API {
namespace Forms {
interface List {
total_items: number;
page_count: number;
items: {
id: string;
type: string;
title: string;
last_updated_at: string;
created_at: string;
settings: {};
self: {
href: string;
};
theme: {
href: string;
};
_links: {
display: string;
responses: string;
};
}[];
}
}
namespace Responses {
interface List {
total_items: number;
page_count: number;
items: Response[];
}
}
namespace Themes {
interface List {
total_items: number;
page_count: number;
items: Theme[];
}
}
namespace Webhooks {
interface List {
items: Webhook[];
}
}
namespace Workspaces {
interface List {
total_items: number;
page_count: number;
items: Workspace[];
}
}
interface PATCH<T extends string> {
op: 'add' | 'remove' | 'replace';
path: T;
value: any;
}
}
/**
* Base URL of Typeform API.
*/
export type API_URL = 'https://api.typeform.com';
/**
* Attachment to include as image, video, or `picture_choice`.
*/
export interface Attachment {
/**
* Type of attachment.
*/
type?: 'image' | 'video';
/**
* URL for the image or video you want to display.
* Images must already exist in your account---use the image's Typeform URL, such as `"https://images.typeform.com/images/kbn8tc98AHb"`.
* For videos, use the video's YouTube.com URL.
*/
href?: string;
/**
* Optional parameter for responsively scaling videos. Available only for `"video"` type. Default value is 0.6
*/
scale?: 0.4 | 0.6 | 0.8 | 1;
}
/**
* Choice answer for a properties's choices property of a field.
*/
export interface Choice {
/**
* Only available when retrieving a form.
*/
id?: string;
/**
* Readable name you can use to reference the answer choice. Available for `multiple_choice` and `picture_choice` types.
* Not available for dropdown types.
*/
ref?: string;
/**
* Text for the answer choice.
*/
label?: string;
/**
* Identifies the image to use for the answer choice. Available only for `picture_choice` types.
*/
attachment?: Attachment;
}
/**
* Argument object for Typeform API client
*/
export interface ClientArg extends DocumentData {
token?: string;
}
/**
* Conditions for executing the Logic Jump. Conditions answer the question, "Under what circumstances?"
* The condition object is the IF statement in your Logic Jump.
*/
export interface Condition {
/**
* Operator for the condition.
*/
op?: 'begins_with' | 'ends_with' | 'contains' | 'not_contains' | 'lower_than' | 'lower_equal_than' | 'greater_than' | 'greater_equal_than' | 'is' | 'is_not' | 'equal' | 'not_equal' | 'always' | 'on' | 'not_on' | 'earlier_than' | 'earlier_than_or_on' | 'later_than' | 'later_than_or_on';
/**
* Object that defines the field type and value to evaluate with the operator.
*/
vars?: {
/**
* Type of value the condition object refers to.
*/
type?: 'field' | 'hidden' | 'variable' | 'constant' | 'end' | 'choice';
/**
* Value to check for in the "type" field to evaluate with the operator.
*/
value?: any;
}[];
}
/**
* Conditions for a logic jump can be combined using the `and` and `or` operators
*/
export interface AndOrOperator {
/**
* Operator for the condition.
*/
op?: 'and' | 'or';
/**
* Object that defines the field type and value to evaluate with the operator.
*/
vars: Array<AndOrOperator | Condition>;
}
/**
* Generic document.
*/
export interface DocumentData {
[key: string]: any;
}
/**
* Object that represents a field in the form and its properties, validations, and attachments.
*/
export interface Field {
/**
* The unique ID for the question.
*/
id?: string;
/**
* Readable name you can use to reference the field.
*/
ref?: string;
/**
* Unique name you assign to the field on this form.
*/
title?: string;
/**
* The type of field.
*/
type?: Type;
/**
* Properties of a field.
*/
properties?: Properties.Field;
/**
* Validations of a field.
*/
validations?: Validations;
/**
* Attachment of a field.
*/
attachment?: Attachment;
}
/**
* Font for the theme.
*/
export type Font = 'Acme' | 'Arial' | 'Arvo' | 'Avenir Next' | 'Bangers' | 'Cabin' | 'Cabin Condensed' | 'Courier' | 'Crete Round' | 'Dancing Script' | 'Exo' | 'Georgia' | 'Handlee' | 'Helvetica Neue' | 'Karla' | 'Lato' | 'Lekton' | 'Lobster' | 'Lora' | 'McLaren' | 'Montserrat' | 'Nixie One' | 'Old Standard TT' | 'Open Sans' | 'Oswald' | 'Playfair Display' | 'Quicksand' | 'Raleway' | 'Signika' | 'Sniglet' | 'Source Sans Pro' | 'Vollkorn';
export interface Form {
/**
* ID of a form.
*/
id?: string;
/**
* Title to use for the form.
*/
title?: string;
/**
* Language to present a form.
*/
language?: Language;
/**
* Array of objects that specify the fields to use in the form and their properties, validations, and attachments.
*/
fields?: Field[];
/**
* Default: `""`
* Array of Hidden Fields to use in the form.
*/
hidden?: string[];
/**
* Array of objects that specify settings and properties for the form's welcome screen.
*/
welcome_screens?: WelcomeScreen[];
/**
* Array of objects that specify settings and properties for the form's thank you screen.
*/
thankyou_screens?: ThankYouScreen[];
/**
* Array of Logic Jump objects to use in the form.
*/
logic?: Logic[];
/**
* Theme to use for the form.
* Treat as string when creating a form/
*/
theme?: {
/**
* URL of the theme to use for the typeform.
* If you don't specify a URL for the theme, Typeform applies a new copy of the default theme to the form.
*/
href?: string;
} | string;
/**
* Workspace that contains the form.
*/
workspace?: {
/**
* URL of the workspace to use for the typeform.
* If you don't specify a URL for the workspace, Typeform saves the form in the default workspace.
*/
href?: string;
};
/**
* Only available when retrieving a form.
*/
_links?: {
display?: string;
};
/**
* Object that specifies form settings and metadata, including the language to use for the form,
* whether the form is publicly available, the basis for the progress bar, and search engine indexing settings.
*/
settings?: Settings;
/**
* Object that keeps track of total score or price, if you use them in the form.
* Not available when retrieving a form.
*/
variables?: {
/**
* Recall Information for keeping score as users answer each question (for example, for quizzes).
*/
score?: 0;
/**
* Recall Information for tracking the total price of all items users select
* (for example, for shopping carts, donation campaigns, and payment collections).
*/
price?: number;
};
}
/**
* HTTP Client for API requests.
*/
export interface HTTPClient {
request: (args: Request) => Promise<any>;
}
/**
* Typeform Image object.
*/
export interface Image {
/**
* Unique ID for the image.
*/
id?: string;
/**
* URL for the image.
*/
src?: string;
/**
* File name for the image (specified when image is created).
*/
file_name?: string;
/**
* Width of the image in pixels.
*/
width?: number;
/**
* Height of the image in pixels.
*/
height?: number;
/**
* The MIME type of the image.
*/
media_type?: 'image/gif' | 'image/jpeg' | 'image/png';
/**
* True if image has alpha channel (some degree of transparency). Otherwise, false.
*/
has_alpha?: boolean;
/**
* Average color of the image in hexadecimal format.
*/
avg_color?: string;
}
/**
* Language that Typeform can be in.
*/
export type Language = 'en' | 'es' | 'ca' | 'fr' | 'de' | 'ru' | 'it' | 'da' | 'pt' | 'ch' | 'zh' | 'nl' | 'no' | 'uk' | 'ja' | 'ko' | 'hr' | 'fi' | 'sv' | 'pl' | 'el' | 'hu' | 'tr' | 'cs' | 'et' | 'di';
/**
* Logic object of a form.
*/
export interface Logic {
/**
* Specifies whether the Logic Jump is based on a question field or Hidden Field.
*/
type?: 'field' | 'hidden';
/**
* Reference to the field that triggers the the Logic Jump.
*/
ref?: string;
/**
* Array of objects that define the Logic Jump's behavior.
*/
actions?: Action[];
}
/**
* Messages that forms can use.
*/
export interface Messages {
/**
* Default tooltip button message. Maximum 28 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.buttonHint.default'?: string;
/**
* Tooltip button message for long text blocks. Maximum 28 characters.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.buttonHint.longtext'?: string;
/**
* Server connection error message. Maximum 128 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden
*/
'label.warning.connection'?: string;
/**
* Default continue button message. Maximum 100 characters.
*/
'label.buttonNoAnswer.default'?: string;
/**
* List of errors message. Maximum 128 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.warning.correction'?: string;
/**
* Credit card name message. You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'block.payment.cardNameTitle'?: string;
/**
* Credit card number message. You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'block.payment.cardNumberTitle'?: string;
/**
* Credit card security number message
*/
'block.payment.cvcDescription'?: string;
/**
* Credit card CVC number message. You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'block.payment.cvcNumberTitle'?: string;
/**
* Text input placeholder. Maximum 100 characters.
*/
'block.shortText.placeholder'?: string;
/**
* Invalid email error message. Maximum 64 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.error.emailAddress'?: string;
/**
* Credit card expiry month message. You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.error.expiryMonthTitle'?: string;
/**
* Credit card expiry year message. You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.error.expiryYearTitle'?: string;
/**
* Fallback alert message. You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.warning.fallbackAlert'?: string;
/**
* File upload button message. Maximum 34 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'block.fileUpload.choose'?: string;
/**
* File upload dragging action message. Maximum 35 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'block.fileUpload.drag'?: string;
/**
* Still processing file upload message. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'block.fileUpload.uploadingProgress'?: string;
/**
* File too big error message. You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.error.sizeLimit'?: string;
/**
* Private form error message. Accepts variable form:name. Maximum 128 characters.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.warning.formUnavailable'?: string;
/**
* Incomplete fields error message. Maximum 42 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.error.incompleteForm'?: string;
/**
* Key letter hint message. Maximum 100 characters.
*/
'label.hint.key'?: string;
/**
* Legal field deny message. You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'block.legal.reject'?: string;
/**
* Legal field accept message. You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'block.legal.accept'?: string;
/**
* Number maximum value tooltip message. Accepts variable `field:max`. Maximum 64 characters.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.error.maxValue'?: string;
/**
* Text fields maximum length tooltip message. Accepts variable `field:max_length`. Maximum 64 characters.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.error.maxLength'?: string;
/**
* Number minimum value tooltip message. Accepts variable `field:min`. Maximum 64 characters.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.error.minValue'?: string;
/**
* Number minimum and maximum range value tooltip message. Accepts variables `field:min` and `field:max`. Maximum 64 characters.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.error.range'?: string;
/**
* Choose as many as you like message for multiple choice fields. Maximum 45 characters.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'block.multipleChoice.hint'?: string;
/**
* Required value error message. Maximum 64 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.error.mustEnter'?: string;
/**
* Required selection error message. Maximum 64 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.error.mustSelect'?: string;
/**
* Keyboard shortcut for the "No" option. Maximum 1 character.
*/
'label.no.shortcut'?: string;
/**
* Representation for the word "No." You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.no.default'?: string;
/**
* Not suggestions found for dropdown fields error message. Maximum 64 characters.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'block.dropdown.hint'?: string;
/**
* Other answer message. Maximum 100 characters.
*/
'block.multipleChoice.other'?: string;
/**
* Completion percentage message. Accepts variable `progress:percent`. Maximum 100 characters.
*/
'label.progress.percent'?: string;
/**
* Completion proportion message. Accepts variables `progress:step` and `progress:total`. Maximum 100 characters.
*/
'label.progress.proportion'?: string;
/**
* Required field error message. Maximum 64 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.error.required'?: string;
/**
* Review fields error message. Accepts variable `form:unanswered_fields`. Maximum 64 characters.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.preview'?: string;
/**
* Review button message. Maximum 100 characters.
*/
'label.button.review'?: string;
/**
* Server error message. Maximum 128 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.error.server'?: string;
/**
* Share text message. Maximum 100 characters.
*/
'label.action.share'?: string;
/**
* Submit button message. Maximum 100 characters.
*/
'label.button.submit'?: string;
/**
* Successful submit message. Maximum 128 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.warning.success'?: string;
/**
* Answer confirm. Maximum 100 characters.
*/
'label.button.ok'?: string;
/**
* Legal field terms and conditions message. Maximum 64 characters.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.error.mustAccept'?: string;
/**
* Long text field tooltip message. Maximum 128 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'block.longtext.hint'?: string;
/**
* Placeholder message with instructions for dropdown fields. Maximum 100 characters.
*/
'block.dropdown.placeholder'?: string;
/**
* Placeholder message with instructions for dropdown fields on touch devices. Maximum 100 characters.
*/
'block.dropdown.placeholderTouch'?: string;
/**
* Invalid URL error message. Maximum 64 characters. You can format messages with bold (`*bold*`) and italic (`_italic_`) text.
* HTML tags are forbidden.
*/
'label.error.url'?: string;
/**
* Keyboard shortcut for the "Yes" option. Maximum 1 character.
*/
'label.yes.shortcut'?: string;
/**
* Representation for the word "Yes". You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
'label.yes.default'?: string;
}
/**
* Notification object.
*/
export interface Notification {
/**
* Settings for notifications sent when respondents complete and submit the typeform.
*/
self?: {
/**
* Default: `""`
* true to send notifications. false to disable notifications.
*/
enabled?: boolean;
recipients?: string[];
/**
* Email address to use for notification Reply-To.
* Must be a Recall Information value based on respondent's answer to a field: {{field:ref}} or {{hidden:ref}}.
*/
reply_to?: string;
/**
* Subject to use for the notification email. Can combine text and Recall Information value from one or more fields.
* Available Recall Information values are {{form:title}}, {{account:email}}, {{account:name}}, {{link:report}},
* and standard Recall Information for fields {{field:ref}} and hidden fields {{hidden:ref}}.
*/
subject?: string;
/**
* Message to include in the body of the notification email. Can combine text and Recall Information value from one or more fields.
* Available Recall Information values are {{form:title}}, {{account:email}}, {{account:name}}, {{link:report}},
* {{form:all_answers}}, and standard Recall Information for fields {{field:ref}} and hidden fields {{hidden:ref}}.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
message?: string;
};
/**
* Settings for notifications sent to respondents immediately after submitting the typeform
*/
respondent?: {
/**
* Default: `""`
* true to send respondent notifications. false to disable respondent notifications.
*/
enabled?: boolean;
/**
* Email where respondent notification will be sent.
* Must be a Recall Information value based on respondent's answer to a field: {{field:ref}} or {{hidden:ref}}.
*/
recipient?: string;
reply_to?: string[];
/**
* Subject to use for the notification email. Can combine text and Recall Information value from one or more fields.
* Available Recall Information values are {{form:title}}, {{account:fullname}}, {{account:email}}, {{account:name}},
* {{link:report}}, and standard Recall Information for fields {{field:ref}} and hidden fields {{hidden:ref}}.
*/
subject?: string;
/**
* Message to include in the body of the notification email. Can combine text and Recall Information value from one or more fields.
* Available Recall Information values are {{form:title}}, {{account:fullname}}, {{account:email}}, {{account:name}},
* {{link:report}}, {{form:all_answers}}, and standard Recall Information for fields {{field:ref}} and hidden fields {{hidden:ref}}.
* You can format messages with bold (`*bold*`) and italic (`_italic_`) text. HTML tags are forbidden.
*/
message?: string;
};
}
/**
* Properties object.
*/
export namespace Properties {
interface Field {
/**
* Question or instruction to display for the field.
*/
description?: string;
/**
* Answer choices. Available for `dropdown`, `multiple_choice`, and `picture_choice` types.
*/
choices?: Choice[];
/**
* Contains the fields that belong in a question group. Only `payment` and `group` blocks are not allowed inside a question group.
* Available for the `group` type.
*/
fields?: any[];
/**
* true to allow respondents to select more than one answer choice. false to allow respondents to select only one answer choice.
* Available for `multiple_choice` and `picture_choice` types.
*/
allow_multiple_selection?: boolean;
/**
* true if answer choices should be presented in a new random order for each respondent.
* false if answer choices should be presented in the same order for each respondent.
* Available for `multiple_choice` and `picture_choice` types.
*/
randomize?: boolean;
/**
* true to include an "Other" option so respondents can enter a different answer choice from those listed.
* false to limit answer choices to those listed.
* Available for `multiple_choice` and `picture_choice` types.
*/
allow_other_choice?: boolean;
/**
* true to list answer choices vertically. false to list answer choices horizontally.
* Available for `multiple_choice` types.
*/
vertical_alignment?: boolean;
/**
* true if you want to use larger-sized images for answer choices. Otherwise, false. Available for `picture_choice` types.
*/
supersized?: boolean;
/**
* Default: `""`
* true to show text labels and images as answer choices. false to show only images as answer choices.
* Available for `picture_choice` types.
*/
show_labels?: boolean;
/**
* true if question should list dropdown answer choices in alphabetical order.
* false if question should list dropdown answer choices in the order they're listed in the "choices" array.
* Available for `dropdown` types.
*/
alphabetical_order?: boolean;
/**
* true if you want to display quotation marks around the statement on the form. Otherwise, false. Available for statement types.
*/
hide_marks?: boolean;
/**
* Default: `"Continue"`
* Text to display in the button associated with the object. Available for `group`, `payment`, and `statement` types.
*/
button_text?: string;
/**
* Number of steps in the scale's range. Minimum is 5 and maximum is 11. Available for `opinion_scale` and `rating` types.
*/
steps?: 5 | 6 | 7 | 8 | 9 | 10 | 11;
/**
* Default: `"star"`
* Shape to display on the scale's steps. Available for `opinion_scale` and `rating` types.
*/
shape?: 'cat' | 'circle' | 'cloud' | 'crown' | 'dog' | 'droplet' | 'flag' | 'heart' | 'lightbulb' | 'pencil' | 'skull' | 'star' | 'thunderbolt' | 'tick' | 'trophy' | 'up' | 'user';
/**
* Label to help respondents understand the scale's range. Available for `opinion_scale` and `rating` types.
*/
labels?: {
/**
* Text of the left-aligned label for the scale.
*/
left?: string;
/**
* Text of the right-aligned label for the scale.
*/
right?: string;
/**
* Text of the center-aligned label for the scale.
*/
center?: string;
};
/**
* true if range numbering should start at 1. false if range numbering should start at 0. Available for `opinion_scale` types.
*/
start_at_one?: boolean;
/**
* Default: `"DDMMYYYY"`
* Format for month, date, and year in answer. Available for `date` types.
*/
structure?: 'MMDDYYYY' | 'DDMMYYYY' | 'YYYYMMDD';
/**
* Default: `"/"`
* Character to use between month, day, and year in answer. Available for `date` types.
*/
separator?: '/' | '-' | '.';
currency?: 'AUD' | 'BRL' | 'CAD' | 'CHF' | 'DKK' | 'EUR' | 'GBP' | 'MXN' | 'NOK' | 'SEK' | 'USD';
}
interface ThankYouScreen {
/**
* true to display a 'Submit' button on the thank you screen. Otherwise, false.
*/
show_button?: boolean;
/**
* Text to display on the 'Submit' button on the thank you screen.
*/
button_text?: string;
/**
* Specify whether the form should reload or redirect to another URL when respondents click the 'Submit' button. PRO+ feature.
*/
button_mode?: 'reload' | 'redirect';
/**
* URL where the typeform should redirect after submission, if you specified "redirect" for `button_mode`.
*/
redirect_url?: string;
/**
* true to display social media sharing icons on the thank you screen so respondents can post your typeform's link on Facebook,
* Twitter, LinkedIn, and Google+. Otherwise, false.
*/
share_icons?: boolean;
}
interface WelcomeScreen {
/**
* Description of the welcome screen.
*/
description?: string;
/**
* true to display a 'Start' button on the welcome screen. Otherwise, false.
*/
show_button?: boolean;
/**
* Text to display on the 'Start' button on the welcome screen.
*/
button_text?: string;
}
}
/**
* Typeform request object.
*/
export interface Request extends DocumentData {
url: string;
method: string;
data?: DocumentData;
argsHeaders?: DocumentData;
params?: DocumentData;
}
/**
* Form response and date and time of form landing and submission.
*/
export interface Response {
/**
* Unique ID for the response. Note that `response_id` values are unique per form but are not unique globally.
*/
response_id?: string;
/**
* Time of the form landing. In ISO 8601 format, UTC time, to the second, with T as a delimiter between the date and time.
*/
landed_at?: string;
/**
* Time that the form response was submitted. In ISO 8601 format, UTC time, to the second, with T as a delimiter between the date and time.
*/
submitted_at?: string;
/**
* Metadata about a client's HTTP request.
*/
metadata?: {
user_agent?: string;
/**
* Derived from user agent
*/
platform?: string;
referer?: string;
/**
* Ip of the client
*/
network_id?: string;
};
hidden?: DocumentData;
/**
* Subset of a complete form definition to be included with a submission.
*/
definition?: {
fields?: {
id?: string;
type?: string;
title?: string;
description?: string;
}[];
};
answers?: {
field?: {
/**
* The unique id of the form field the answer refers to.
*/
id?: string;
/**
* The field's type in the original form.
*/
type?: string;
/**
* The reference for the question the answer relates to. Use the `ref` value to match answers with questions.
* The Responses payload only includes `ref` for the fields where you specified them when you created the form.
*/
ref?: string;
/**
* The form field's title which the answer is related to.
*/
title?: string;
};
/**
* The answer-field's type.
*/
type?: 'choice' | 'choices' | 'date' | 'email' | 'url' | 'file_url' | 'number' | 'boolean' | 'text' | 'payment' | 'phone_number';
/**
* Represents single choice answers for dropdown-like fields.
*/
choice?: Omit<Choice, 'attachment'>;
/**
* Represents multiple choice answers.
*/
choices?: {
labels?: string[];
other?: string;
};
date?: string;
email?: string;
file_url?: string;
number?: number;
boolean?: boolean;
text?: string;
url?: string;
payment?: {
amount?: string;
last4?: string;
name?: string;
};
phone_number?: string;
}[];
calculated?: {
score?: number;
};
}
/**
* Typeform Form Settings object.
*/
export interface Settings {
/**
* Default `""`
*/
are_uploads_public?: boolean;
/**
* Default `""`
* true to enable saving partial form responses on the client side. Otherwise, false.
*/
autosave_progress?: boolean;
/**
* Default `""`
* Allow people to navigate freely between the questions of your Typeform. They will still have to answer the required ones before submitting.
*/
free_form_navigation?: boolean;
/**
* Default `""`
* false to display the navigation arrows in the bottom-right corner of the form, true to hide them
*/
hide_navigation?: boolean;
/**
* Default `""`
* true if your form is public. Otherwise, false (your form is private).
*/
is_public?: boolean;
/**
* Language of form.
*/
language?: Language;
meta?: {
/**
* Default `""`
* true to allow search engines to index your typeform. Otherwise, false.
*/
allow_indexing?: boolean;
/**
* Description for search engines to display for your typeform.
*/
description?: string;
image?: {
/**
* URL of image for search engines to display for your typeform.
*/
href?: string;
};
};
/**
* Default `""`
*/
pro_subdomain_enabled?: boolean;
/**
* Default `""`
* Basis for the progress bar displayed on the screen. Choose "proportion" to show the number of questions answered so far.
* Choose "percentage" to show the percentage of questions answered so far.
*/
progress_bar?: 'percentage' | 'proportion';
/**
* Default `""`
* true to request cookie consent to respondents through a banner, false to do not request it.
*/
show_cookie_consent?: boolean;
/**
* Default `""`
* true to display the key hint letters on Multiple Choice, Picture Choice, Legal and Yes/No blocks, false to hide them.
*/
show_key_hint_on_choices?: boolean;
/**
* Default `""`
* true to display number of submissions on Welcome screens, false to hide it. Mutually exclusive with show_time_to_complete
*/
show_number_of_submissions?: boolean;
/**
* Default `""`
* true to display progress bar on the typeform. Otherwise, false.
*/
show_progress_bar?: boolean;
/**
* Default `""`
* true to display the question number on each block, false to hide it.
*/
show_question_number?: boolean;
/**
* Default `""`
* true to display estimated time to complete a typeform on Welcome screens, false to hide it. Mutually exclusive with show_number_of_submissions
*/
show_time_to_complete?: boolean;
/**
* Default `""`
* true to display Typeform brand on the typeform. false to hide Typeform branding on the typeform.
* Hiding Typeform branding is available for PRO+ accounts.
*/
show_typeform_branding?: boolean;
/**
* Default `""`
*/
use_lead_qualification?: boolean;
/**
* URL where the typeform should redirect upon submission.
*/
redirect_after_submit_url?: string;
/**
* Google Analytics tracking ID to use for the form.
*/
google_analytics?: string;
/**
* Facebook Pixel tracking ID to use for the form.
*/
facebook_pixel?: string;
/**
* Google Tag Manager ID to use for the form.
*/
google_tag_manager?: string;
/**
* Notification object.
*/
notification?: Notification;
}
/**
* A theme in your Typeform account.
*/
export interface Theme {
/**
* Settings for the background.
*/
background?: ThemeBackground;
/**
* Colors the theme will apply to answers, background, buttons, and questions.
*/
colors?: ThemeColors;
/**
* Font size and alignment for fields.
*/
fields?: ThemeFontSizeAndAlignment;
/**
* Default: `"Source Sans Pro"`
* Font for the theme.
*/
font?: Font;
/**
* `true` if buttons should be transparent. Otherwise, `false`.
*/
has_transparent_button?: boolean;
/**
* Unique ID of the theme.
*/
id?: string;
/**
* Name of the theme.
*/
name?: string;
/**
* Specifies border radius style of buttons and other elements in the form.
*/
rounded_corners?: ThemeRoundedCorners;
/**
* Font size and alignment for welcome and thankyou screens.
*/
screens?: ThemeFontSizeAndAlignment;
/**
* Default: `"private"`
* Specifies whether the theme is `public` (one of Typeform's built-in themes that are available in all accounts) or `private`
* (a theme you created). You can only change `private` themes. You can't change Typeform's public themes.
*/
visibility?: 'public' | 'private';
}
/**
* Settings for a theme's background.
*/
export interface ThemeBackground {
/**
* Background image URL.
*/
href?: string;
/**
* Default: `"fullscreen"`
* Layout for the background.
*/
layout?: 'fullscreen' | 'repeat' | 'no-repeat';
/**
* Brightness for the background. -1 is least bright (minimum) and 1 is most bright (maximum).
*/
brightness?: number;
}
/**
* Colors the theme will apply to answers, background, buttons, and questions.
*/
export interface ThemeColors {
/**
* Color the theme will apply to answers. Hexadecimal value.
*/
answer?: string;
/**
* Color the theme will apply to background. Hexadecimal value.
*/
background?: string;
/**
* Color the theme will apply to buttons. Hexadecimal value.
*/
button?: string;
/**
* Color the theme will apply to questions. Hexadecimal value.
*/
question?: string;
}
/**
* Font size and alignment.
*/
export interface ThemeFontSizeAndAlignment {
alignment?: 'left' | 'center';
font_size?: 'small' | 'medium' | 'large';
}
/**
* Specifies border radius style of buttons and other elements in the form.
*/
export type ThemeRoundedCorners = 'none' | 'small' | 'large';
/**
* Object that specifies the settings and properties for the form's thank you screen.
*/
export interface ThankYouScreen {
/**
* Readable name you can use to reference the thank you screen.
*/
ref?: string;
/**
* Title for the thank you screen.
*/
title?: string;
/**
* Properties of a thank you screen
*/
properties?: Properties.ThankYouScreen;
/**
* Allows you to display images and videos.
* Available for welcome and thank you screens, as well as `date`, `dropdown`, `email`, `group`, `long_text`, `multiple_choice`,
* `number`, `opinion_scale`, `payment`, `rating`, `short_text`, `statement`, `phone_number`, and `yes_no` fields.
*/
attachment?: Attachment;
}
/**
* The type of field.
*/
type Type = 'address' | 'calendly' | 'contact_info' | 'date' | 'dropdown' | 'email' | 'file_upload' | 'group' | 'legal' | 'long_text' | 'matrix' | 'multiple_choice' | 'nps' | 'number' | 'opinion_scale' | 'payment' | 'phone_number' | 'picture_choice' | 'ranking' | 'rating' | 'short_text' | 'statement' | 'website' | 'yes_no';
/**
* Validations of a field.
*/
export interface Validations {
/**
* true if respondents must provide an answer. Otherwise, false.
* Available for `date`, `dropdown`, `email`, `file_upload`, `legal`, `long_text`, `multiple_choice`, `number`, `opinion_scale`,
* `payment`, `picture_choice`, `rating`, `short_text`, `website`, `phone_number`, and `yes_no` types.
*/
required?: boolean;
/**
* Maximum number of characters allowed in the answer. Available for `long_text`, `number`, and `short_text` types.
*/
max_length?: number;
/**
* Maximum value allowed in the answer. Available for `number` types.
*/
min_value?: number;
/**
* Maximum value allowed in the answer. Available for number types.
*/
max_value?: number;
}
/**
* Typeform Webhook object.
*/
export interface Webhook {
/**
* Unique ID for the webhook.
*/
id?: string;
/**
* Unique ID for the typeform.
*/
form_id?: string;
/**
* Unique name you want to use for the webhook.
*/
tag?: string;
/**
* Webhook URL.
*/
url?: string;
/**
* True if you want to send responses to the webhook immediately. Otherwise, false.
*/
enabled?: boolean;
/**
* True if you want Typeform to verify SSL certificates when delivering payloads
*/
verify_ssl?: boolean;
/**
* Date and time when webhook was created.
* In ISO 8601 format, UTC time, to the second, with T as a delimiter between the date and time.
*/
created_at?: string;
/**
* Date of last update to webhook.
* In ISO 8601 format, UTC time, to the second, with T as a delimiter between the date and time.
*/
updated_at?: string;
}
/**
* Object that specifies the settings and properties for the form's welcome screen.
*/
export interface WelcomeScreen {
/**
* Readable name you can use to reference the welcome screen.
*/
ref?: string;
/**
* Title for the welcome screen.
*/
title?: string;
/**
* Properties of a welcome screen
*/
properties?: Properties.WelcomeScreen;
/**
* Allows you to display images and videos.
* Available for welcome and thank you screens, as well as `date`, `dropdown`, `email`, `group`, `long_text`, `multiple_choice`,
* `number`, `opinion_scale`, `payment`, `rating`, `short_text`, `statement`, `phone_number`, and `yes_no` fields.
*/
attachment?: Attachment;
}
/**
* Typeform Workspace object.
*/
export interface Workspace {
/**
* Unique identifier for the workspace.
*/
id?: string;
/**
* Name of the workspace.
*/
name?: string;
/**
* If the default workspace, `true`. Otherwise, `false`.
*/
default?: boolean;
/**
* If the workspace is shared with a team, `true`. Otherwise, `false`.
*/
shared?: boolean;
forms?: {
/**
* Link to typeforms in the workspace.
*/
href?: string;
/**
* Numbe