# Create a Custom Form Type Creates a new standalone or embedded Custom Form Type. Endpoint: POST /add/CFOT Security: basic, X-PriceFx-jwt ## Request fields (application/json): - `operation` (string, required) - `data` (object, required) - `data.uniqueName` (string, required) A name of the Custom Form Type. - `data.label` (string) A label of the Custom Form Type. - `data.headerFormulaName` (string, required) A Custom Form header logic that defines the inputs, calculation results or a custom header. For embedded Custom Forms, it also defines communication with the parent object. - `data.workflowFormulaName` (string) - `data.embedded` (boolean, required) Sets whether the Custom Form will be standalone or embedded in a module. - `data.supportedParentTypeCodes` (string) List of entities, which are allowed to embed this custom form type (Quote, standalone Custom Form). This is meaningful only when embedded is true. - `data.module` (string) Applies to standalone Custom Forms. Select a module in whose main menu you want to have this Custom Form available. - `data.configuration` (object) Applies only to standalone Custom Forms, add a JSON definition describing the content of the Custom Form – its steps and tabs. - `data.configuration.default` (object) - `data.configuration.default.name` (string) - `data.configuration.default.translationKey` (string) - `data.configuration.default.icon` (string) - `data.configuration.default.tabs` (object) - `data.configuration.default.tabs.details` (object) - `data.configuration.default.tabs.details.type` (string, required) ## Response 200 fields (application/json): - `response` (object) - `response.node` (string) - `response.data` (object) The Type code is CFOT. - `response.data.typedId` (string) - `response.data.configuration` (object) Schema for definition of steps and tabs. This object can contains tabs array with tabs specifications or steps array (categories) with tabs inside. - `response.data.configuration.name` (string) Text to describe the configuration. - `response.data.configuration.layout` (string) DynamicTabs can have several types of layout. Default is stepper for config with steps and tabs for only tabs. Enum: "auto", "stepper", "tabs", "menu", "wizard" - `response.data.configuration.steps` (array) - `response.data.configuration.steps.name` (string) It can be used in URL, so use URL-safe letters - `response.data.configuration.steps.labelTranslations` (object) Object with custom translations with structure. It tries to pick label according to your language, otherwise it pick label from "" key. After that translationKey is used. - `response.data.configuration.steps.labelTranslations.additionalProperties` (string) - `response.data.configuration.steps.labelTranslations.""` (string, required) - `response.data.configuration.steps.labelTranslations.fr` (string) - `response.data.configuration.steps.labelTranslations.en` (string) - `response.data.configuration.steps.translationKey` (string) If such key exist, the translation will be used. Otherwise this string will show up on the screen. - `response.data.configuration.steps.userGroupViewDetails` (string) List of user groups names (separated by comma), which can view the step - `response.data.configuration.steps.userGroupEdit` (string) List of user groups names (separated by comma), which can edit the step - `response.data.configuration.steps.disableCheck` (any) Filter can be a rule or a group of rules with a combining operator. - `response.data.configuration.steps.hiddenCheck` (any) Filter can be a rule or a group of rules with a combining operator. - `response.data.configuration.steps.icon` (string) The icon is provided by DynamicIcon component, so the icon has to be defined there Enum: "angle-double-left", "angle-down", "angle-down-b", "angle-right", "arrow-down", "arrow-right", "arrow-up", "bars", "bell", "blue", "brackets-curly", "calculator", "calculator-alt", "calendar-alt", "chart-line", "check", "check-circle", "circle", "clipboard-notes", "cog", "comment-alt-message", "comparison", "compress-arrows", "constructor", "copy", "corner-up-left", "corner-up-right", "critical", "crosshair", "dashboard", "database", "ellipsis-h", "equal-circle", "exclamation-octagon", "exclamation-octagon-solid", "exclamation-triangle", "exclamation-triangle-solid", "external-link-alt", "eye", "file", "file-check-alt", "file-copy-alt", "file-edit-alt", "file-info-alt", "file-plus-alt", "filter", "folder", "folder-medical", "folder-open", "fullscreen-exit", "green", "import", "info-circle", "key", "layer-group", "layer-group-slash", "link-broken", "link-h", "message", "minus", "minus-circle", "minus-square", "multiply", "pause", "pen", "play", "plus", "plus-circle", "plus-square", "process", "puzzle-piece", "question", "question-circle", "red", "redo", "retweet", "search", "search-minus", "sliders-v-alt", "sync", "times", "times-circle", "trash-alt", "upload", "user", "wrench", "yellow" - `response.data.configuration.steps.tabs` (array) - `response.data.configuration.steps.tabs.name` (string, required) Tab unique name. It can be used in URL, use URL-safe letters. - `response.data.configuration.steps.tabs.translationKey` (string) Key used to find build-in translation for Tab name. If such key exist, the translation will be used. Otherwise this string will show up on the screen. Example: "sfdc_quotes_tabs_header" - `response.data.configuration.steps.tabs.userGroupViewDetails` (string) User group view permissions. The list of user groups which can view the tab. Example: "admins" - `response.data.configuration.steps.tabs.userGroupEdit` (string) User group edit permissions. The list of user groups which can edit the tab. - `response.data.configuration.steps.tabs.type` (string, required) Name of the widget you would like to see on the tab. In case of dashboard, if you can specify the dashboard name via typeReference attribute. Enum: "header", "items", "attachments", "actions", "notes", "customForms", "workflow", "workflowHistory", "messages", "dashboard", "details", "documents", "configurationWizards", "externalApp" - `response.data.configuration.steps.tabs.typeReference` (string) Unique identifier for dashboard or logic. The value here depends on the widget used on the Tab. - `response.data.configuration.steps.tabs.parameters` (object) Static parameters for the tab. Will be passed to the tab logic (e.g. dashboard) without any changes. They can be extracted by DynamicTabs.getParameters(tab, entity) in TabComponent. - `response.data.configuration.steps.tabs.parameterMapping` (object) - `response.data.configuration.steps.tabs.parameterMapping.additionalProperties` (string) Dynamic parameters for the tab. Will be passed to the logic. Values will be obtained from the entity. Key value mapping of the entity fields to the dashboard logic inputs. The value is path to value in the underlying entity. Example: "Year: inputs.Year.value" - `response.data.lastUpdateDate` (string) - `response.data.module` (string,null) A name of application module, in which the user interface will show the menu item, which opens a page with a list of custom forms of this type. This is meaningful only when embedded is false. Enum: "PRICESETTING", "QUOTING", "ANALYTICS", "ADMIN", "WORKFLOW", "REBATES", "AGREEMENTSPROMOTIONS", "OPTIMIZATION", "CHANNELMANAGEMENT", "MASTERDATA", "CONFIGURATION", "DASHBOARDS", "PROCESSES", "SALESCOMPENSATION", "CUSTOM_FORM" - `response.data.label` (string) The name of the type, as displayed to the end users. - `response.data.version` (integer) - `response.data.uniqueName` (string) A unique name of the type. - `response.data.supportedParentTypeCodes` (array,null) List of entities, which are allowed to embed this custom form type (Quote, standalone Custom Form). This is meaningful only when embedded is true. - `response.data.createdBy` (integer) - `response.data.headerFormulaName` (string) A name of the logic which implements the functionality of the Custom Form. - `response.data.userGroupEdit` (string,null) - `response.data.userGroupViewDetails` (string,null) - `response.data.embedded` (boolean) If this custom form type can be embedded - i.e. used inside of another document, like quote. - `response.data.workflowFormulaName` (string,null) A name of the workflow logic, which will be used to build approval workflow for this Custom Form. - `response.data.createDate` (string) - `response.data.lastUpdateBy` (integer) - `response.status` (number)