---
title: "Update a Custom Form Type"
method: POST
path: "/update/CFOT"
tags: ["Custom Forms"]
---

# Update a Custom Form Type

`POST /update/CFOT`

Updates a Custom Form Type.

## Request body

- object
  - `oldValues` object
    - `version` integer
    - `typedId` string
    - `uniqueName` string
    - `label` string
    - `headerFormulaName` string
    - `embedded` boolean
    - `module` string
    - `configuration` object
      - `default` object
        - `icon` string
        - `name` string
        - `tabs` object
          - `details` object
            - `icon` string
            - `name` string
            - `type` string
            - `translationKey` string
        - `translationKey` string
    - `createDate` string
    - `createdBy` integer
    - `lastUpdateDate` string
    - `lastUpdateBy` integer
  - `operationType` string
  - `textMatchStyle` string
  - `data` object
    - `embedded` boolean
    - `configuration` union
      - object, nullable
      - string, nullable
    - `module` union
      - object, nullable
      - string, nullable
    - `supportedParentTypeCodes` string, nullable
    - `typedId` string
    - `workflowFormulaName` string, nullable

## Response `200`

OK

- object
  - `response` object
    - `node` string
    - `data` CustomFormType[]
      - `typedId` string
      - `configuration` Configuration — Schema for definition of steps and tabs. This object can contains `tabs` array with tabs specifications or `steps` array (categories) with tabs inside.
        - `name` string — Text to describe the configuration.
        - `layout` 'auto' | 'stepper' | 'tabs' | 'menu' | 'wizard' — DynamicTabs can have several types of layout. Default is `stepper` for config with steps and `tabs` for only tabs.
        - `steps` Step[]
          - `name` string — It can be used in URL, so use URL-safe letters
          - `labelTranslations` LabelTranslations — 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.
            - `additionalProperties` string
            - `""` string, required
            - `fr` string
            - `en` string
          - `translationKey` string — If such key exist, the translation will be used. Otherwise this string will show up on the screen.
          - `userGroupViewDetails` string — List of user groups names (separated by comma), which can view the step
          - `userGroupEdit` string — List of user groups names (separated by comma), which can edit the step
          - `disableCheck` union — Filter can be a rule or a group of rules with a combining operator.
            - object — Filter Group for hiding or disabling steps or tabs.
              - …
            - object — A Filter rule with the actual condition.
              - …
          - `hiddenCheck` union — Filter can be a rule or a group of rules with a combining operator.
            - object — Filter Group for hiding or disabling steps or tabs.
              - …
            - object — A Filter rule with the actual condition.
              - …
          - `icon` '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' — The icon is provided by DynamicIcon component, so the icon has to be defined there
          - `tabs` Tab[]
            - `name` string, required — Tab unique name. It can be used in URL, use URL-safe letters.
            - `labelTranslations` LabelTranslations — 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.
              - …
            - `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.
            - `userGroupViewDetails` string — User group view permissions. The list of user groups which can view the tab.
            - `userGroupEdit` string — User group edit permissions. The list of user groups which can edit the tab.
            - `icon` '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' — The icon is provided by DynamicIcon component, so the icon has to be defined there
            - `type` 'header' | 'items' | 'attachments' | 'actions' | 'notes' | 'customForms' | 'workflow' | 'workflowHistory' | 'messages' | 'dashboard' | 'details' | 'documents' | 'configurationWizards' | 'externalApp', 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.
            - `typeReference` string — Unique identifier for dashboard or logic. The value here depends on the widget used on the Tab.
            - `disableCheck` union — Filter can be a rule or a group of rules with a combining operator.
              - …
            - `hiddenCheck` union — Filter can be a rule or a group of rules with a combining operator.
              - …
            - `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.
            - `parameterMapping` object
              - …
        - `tabs` Tab[]
          - `name` string, required — Tab unique name. It can be used in URL, use URL-safe letters.
          - `labelTranslations` LabelTranslations — 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.
            - `additionalProperties` string
            - `""` string, required
            - `fr` string
            - `en` string
          - `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.
          - `userGroupViewDetails` string — User group view permissions. The list of user groups which can view the tab.
          - `userGroupEdit` string — User group edit permissions. The list of user groups which can edit the tab.
          - `icon` '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' — The icon is provided by DynamicIcon component, so the icon has to be defined there
          - `type` 'header' | 'items' | 'attachments' | 'actions' | 'notes' | 'customForms' | 'workflow' | 'workflowHistory' | 'messages' | 'dashboard' | 'details' | 'documents' | 'configurationWizards' | 'externalApp', 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.
          - `typeReference` string — Unique identifier for dashboard or logic. The value here depends on the widget used on the Tab.
          - `disableCheck` union — Filter can be a rule or a group of rules with a combining operator.
            - object — Filter Group for hiding or disabling steps or tabs.
              - …
            - object — A Filter rule with the actual condition.
              - …
          - `hiddenCheck` union — Filter can be a rule or a group of rules with a combining operator.
            - object — Filter Group for hiding or disabling steps or tabs.
              - …
            - object — A Filter rule with the actual condition.
              - …
          - `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.
          - `parameterMapping` object
            - `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.
      - `lastUpdateDate` string, date-time
      - `module` 'PRICESETTING' | 'QUOTING' | 'ANALYTICS' | 'ADMIN' | 'WORKFLOW' | 'REBATES' | 'AGREEMENTSPROMOTIONS' | 'OPTIMIZATION' | 'CHANNELMANAGEMENT' | 'MASTERDATA' | 'CONFIGURATION' | 'DASHBOARDS' | 'PROCESSES' | 'SALESCOMPENSATION' | 'CUSTOM_FORM', nullable — 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`.
      - `label` string — The name of the type, as displayed to the end users.
      - `version` integer
      - `uniqueName` string — A unique name of the type.
      - `supportedParentTypeCodes` string[], nullable — List of entities, which are allowed to embed this custom form type (Quote, standalone Custom Form). This is meaningful only when embedded is `true`.
      - `createdBy` integer
      - `headerFormulaName` string — A name of the logic which implements the functionality of the Custom Form.
      - `userGroupEdit` string, nullable
      - `userGroupViewDetails` string, nullable
      - `embedded` boolean — If this custom form type can be embedded - i.e. used inside of another document, like quote.
      - `workflowFormulaName` string, nullable — A name of the workflow logic, which will be used to build approval workflow for this Custom Form.
      - `createDate` string, date-time
      - `lastUpdateBy` integer
    - `status` integer

---

[API](https://skmtc.net/pricefx/apis/the-pricefx-backend-api.md) · [All operations](https://skmtc.net/pricefx/apis/the-pricefx-backend-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pricefx/the-pricefx-backend-api/versions/0850b5d6be73/schema)
