---
title: "Create a new template hook"
method: POST
path: "/v1/template-hooks"
tags: ["Template Hooks"]
---

# Create a new template hook

`POST /v1/template-hooks`

Create a new template hook.

## Request body

- union
  - JsonToCsvHook
    - `key` string, required
    - `stage` 'preparsing', required
    - `type` 'json-to-csv', required
    - `params` JsonToCsvHookParams, required
      - `fileExts` string[], required
      - `entryPath` string[], required
  - XmlToCsvHook
    - `key` string, required
    - `stage` 'preparsing', required
    - `type` 'xml-to-csv', required
    - `params` XmlToCsvHookParams, required
      - `fileExts` string[], required
      - `entryPath` string[], required
  - FixedWidthToCsvHook
    - `key` string, required
    - `stage` 'preparsing', required
    - `type` 'fixed-width-to-csv', required
    - `params` FixedWidthToCsvHookParams, required
      - `fileExts` string[], required
      - `columns` FixedWidthColumn[], required
        - `label` string, required
        - `start` integer, required
        - `width` integer, required
  - AdvancedExcelParsingHook
    - `key` string, required
    - `stage` 'preparsing', required
    - `type` 'advanced-excel-parsing', required
    - `params` AdvancedExcelParsingHookParams, required
      - `fileExts` string[], required
      - `ignoreScientificNotation` boolean, required
      - `extractHyperlinks` boolean, required
  - PostuploadCodeHook
    - `key` string, required
    - `stage` 'postupload', required
    - `type` 'code-postupload', required
    - `params` CodeHookParams, required
      - `code` string, required
  - TransposeFileHook
    - `key` string, required
    - `stage` 'postupload', required
    - `type` 'transpose-file', required
    - `params` EmptyParams, required
  - FindAndReplaceHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'find-replace', required
    - `params` FindAndReplaceHookParams, required
      - `columns` string[], required
      - `find` string, required
      - `caseSensitive` boolean, required
      - `exactMatch` boolean, required
      - `replace` string, required
  - SplitColumnHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'split-column', required
    - `params` SplitColumnHookParams, required
      - `sourceColumn` string, required
      - `delimiter` string, required
      - `targetColumns` string[], required
  - MergeColumnsHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'merge-column', required
    - `params` MergeColumnsHookParams, required
      - `sourceColumns` string[], required
      - `targetColumn` string, required
      - `delimiter` string, required
  - FillEmptyHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'fill-empty', required
    - `params` FillEmptyHookParams, required
      - `targetColumn` string, required
      - `sourceColumn` string, required
  - AddColumnHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'add-column', required
    - `params` AddColumnHookParams, required
      - `column` string, required
  - PostMappingCodeHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'code-postmapping', required
    - `params` PostMappingCodeHookParams, required
      - `code` string, required
      - `idempotent` boolean, required
  - ValidationCodeHook
    - `key` string, required
    - `stage` 'validation', required
    - `type` 'code-validation', required
    - `params` ValidationCodeHookParams, required
      - `code` string
      - `validationType` 'row' | 'column'
      - `columns` string[]
  - MultiColumnUniquenessHook
    - `key` string, required
    - `stage` 'validation', required
    - `type` 'multicolumn-uniqueness', required
    - `params` MultiColumnUniquenessHookParams, required
      - `columns` string[], required
  - RowUniquenessHook
    - `key` string, required
    - `stage` 'validation', required
    - `type` 'row-uniqueness', required
    - `params` RowUniquenessHookParams, required
      - `caseSensitive` boolean, required — Whether the row comparison is case-sensitive.

## Response `200`

Successful response

- union
  - JsonToCsvHook
    - `key` string, required
    - `stage` 'preparsing', required
    - `type` 'json-to-csv', required
    - `params` JsonToCsvHookParams, required
      - `fileExts` string[], required
      - `entryPath` string[], required
  - XmlToCsvHook
    - `key` string, required
    - `stage` 'preparsing', required
    - `type` 'xml-to-csv', required
    - `params` XmlToCsvHookParams, required
      - `fileExts` string[], required
      - `entryPath` string[], required
  - FixedWidthToCsvHook
    - `key` string, required
    - `stage` 'preparsing', required
    - `type` 'fixed-width-to-csv', required
    - `params` FixedWidthToCsvHookParams, required
      - `fileExts` string[], required
      - `columns` FixedWidthColumn[], required
        - `label` string, required
        - `start` integer, required
        - `width` integer, required
  - AdvancedExcelParsingHook
    - `key` string, required
    - `stage` 'preparsing', required
    - `type` 'advanced-excel-parsing', required
    - `params` AdvancedExcelParsingHookParams, required
      - `fileExts` string[], required
      - `ignoreScientificNotation` boolean, required
      - `extractHyperlinks` boolean, required
  - PostuploadCodeHook
    - `key` string, required
    - `stage` 'postupload', required
    - `type` 'code-postupload', required
    - `params` CodeHookParams, required
      - `code` string, required
  - TransposeFileHook
    - `key` string, required
    - `stage` 'postupload', required
    - `type` 'transpose-file', required
    - `params` EmptyParams, required
  - FindAndReplaceHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'find-replace', required
    - `params` FindAndReplaceHookParams, required
      - `columns` string[], required
      - `find` string, required
      - `caseSensitive` boolean, required
      - `exactMatch` boolean, required
      - `replace` string, required
  - SplitColumnHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'split-column', required
    - `params` SplitColumnHookParams, required
      - `sourceColumn` string, required
      - `delimiter` string, required
      - `targetColumns` string[], required
  - MergeColumnsHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'merge-column', required
    - `params` MergeColumnsHookParams, required
      - `sourceColumns` string[], required
      - `targetColumn` string, required
      - `delimiter` string, required
  - FillEmptyHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'fill-empty', required
    - `params` FillEmptyHookParams, required
      - `targetColumn` string, required
      - `sourceColumn` string, required
  - AddColumnHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'add-column', required
    - `params` AddColumnHookParams, required
      - `column` string, required
  - PostMappingCodeHook
    - `key` string, required
    - `stage` 'postmapping', required
    - `type` 'code-postmapping', required
    - `params` PostMappingCodeHookParams, required
      - `code` string, required
      - `idempotent` boolean, required
  - ValidationCodeHook
    - `key` string, required
    - `stage` 'validation', required
    - `type` 'code-validation', required
    - `params` ValidationCodeHookParams, required
      - `code` string
      - `validationType` 'row' | 'column'
      - `columns` string[]
  - MultiColumnUniquenessHook
    - `key` string, required
    - `stage` 'validation', required
    - `type` 'multicolumn-uniqueness', required
    - `params` MultiColumnUniquenessHookParams, required
      - `columns` string[], required
  - RowUniquenessHook
    - `key` string, required
    - `stage` 'validation', required
    - `type` 'row-uniqueness', required
    - `params` RowUniquenessHookParams, required
      - `caseSensitive` boolean, required — Whether the row comparison is case-sensitive.

## Other responses

- `400` — Bad request

---

[API](https://skmtc.net/oneschema/apis/templates.md) · [All operations](https://skmtc.net/oneschema/apis/templates/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneschema/templates/versions/40674aa6d4d9/schema)
