Skip to content

Get form template

Returns the full form definition for a template ID (tpl_id): render forms, validate input, build submission flows, or sync structure on your side.

This page focuses on response structure and integration notes; full schemas and demos are in the companion folder. Examples are sanitized or synthetic.

Request example

python
import requests

url = 'https://open.cli.im/api/v2/rpc/forms/getTemplate'
data = {
    'tpl_id': 122507
}
headers = {
    'Authorization': 'Bearer <your API Key>',
    'Content-Type': 'application/json'
}
response = requests.post(url, json=data, headers=headers)
print(response.text)
bash
curl -X POST 'https://open.cli.im/api/v2/rpc/forms/getTemplate' \
  -H 'Authorization: Bearer <your API Key>' \
  -H 'Content-Type: application/json' \
  -d '{"tpl_id": 122507}'

Request parameters

ParameterTypeRequiredDescription
tpl_idintegerYesForm template ID

Full response skeleton

The block below is a success skeleton only; full payload and response files are linked under “Schema and examples.”

json
{
  "code": 0,
  "message": "ok",
  "data": {
    "version": "v1",
    "data": {
      "form": {
        "id": 122507,
        "name": "设备巡检",
        "type": 0,
        "type_text": "普通表单",
        "number": "D32",
        "description": "请仔细填写表单中的内容",
        "submit_button_title": "提交",
        "created_at_iso": "2026-02-27 10:26:42(UTC+08:00)",
        "updated_at_iso": "2026-03-09 17:13:04(UTC+08:00)"
      },
      "org": { "id": 94910252 },
      "project": { "id": 1104 },
      "groups": [
        {
          "group_id": 71399639089153,
          "group_title": "",
          "show_group_title": false,
          "is_page_break_group": false,
          "fields": [
            {
              "field_id": 71399639089153,
              "field_title": "巡检人姓名",
              "field_desc": "",
              "field_type": "name",
              "field_short_name": "",
              "group_id": 71399639089153,
              "settings": {
                "is_required": false,
                "is_hidden": false,
                "is_result": false,
                "is_masked": true,
                "is_unique": false,
                "is_highlight": false
              }
            }
          ]
        }
      ],
      "audit_config": {
        "enabled": true,
        "stages": [
          { "id": 20241, "title": "组长审批", "level": 1 },
          { "id": 20242, "title": "厂长审批", "level": 2 }
        ]
      },
      "process_status_config": {
        "enabled": true,
        "options": [
          { "text": "待处理", "color": "#E64340" },
          { "text": "处理中", "color": "#155EB7" },
          { "text": "已完成", "color": "#06AE56" }
        ]
      },
      "rules": {
        "time_limit_record": [
          {
            "start_time": 1773030000,
            "end_time": 1773036000,
            "time_limit_type": 0
          }
        ],
        "tpl_limit_record": null,
        "owner_tpl_limit_record": null
      }
    }
  }
}

Full examples:

Response overview

PathTypeDescription
codeintegerPlatform code; 0 success
messagestringMessage
dataobjectWrapper
data.versionstringVersion, fixed v1
data.dataobjectForm structure body

Wrapper example:

json
{
  "version": "v1",
  "data": { "...": "..." }
}

data.data structure

data.data is the form object. Schema: content-json-v1.schema.json; sample: payload-normal.json.

Top-level fields

FieldTypeDescription
formobjectBasic form info
orgobjectOwning org
projectobjectOwning project (partition)
groupsarrayGroups and field definitions
audit_configobjectApproval configuration
process_status_configobjectProcess status configuration
rulesobjectSubmission rules

form object

FieldTypeDescription
idintegerForm ID
namestringForm name
typeintegerForm type code
type_textstringForm type label
numberstringForm number
descriptionstringDescription
submit_button_titlestringSubmit button label
created_at_isostringCreated at with timezone
updated_at_isostringUpdated at with timezone

form.type values

ValueMeaning
0Normal form
1Normal form
2Normal form
3Confidential commitment system form
7Manual QR state change system form
12Identity group join application form
13Subcode edit system form
21QR message system form
22QR collaboration system form

org / project

ObjectFieldTypeDescription
orgidintegerOrg ID
projectidintegerProject ID

groups[]

Each item is a field group. Supports page-break groups: a break group carries no fields and only separates pages.

Group fields

FieldTypeDescription
group_idintegerGroup ID
group_titlestringTitle; may be ""
show_group_titlebooleanShow title or not
is_page_break_groupbooleanPage break; fields usually []
fieldsarrayFields in the group

Pagination notes:

  • is_page_break_group=true marks a page boundary.
  • The following normal group usually holds fields for that page.
  • Do not assume titled groups always contain fields—check is_page_break_group.

groups[].fields[]

FieldTypeDescription
field_idintegerField ID
field_titlestringTitle
field_descstringHint text
field_typestringType
field_short_namestringShort name / alias
group_idintegerGroup ID
settingsobjectGeneric and type-specific settings

Filtering:

  • Sub-fields are not returned.
  • Disabled fields are omitted.
  • ocr_* describes OCR main fields without internal implementation detail.

Common settings booleans

All field types include:

FieldTypeDescription
is_requiredbooleanRequired
is_hiddenbooleanHidden
is_resultbooleanResult field
is_maskedbooleanPrivacy masking enabled
is_uniquebooleanUniqueness check
is_highlightbooleanHighlight

Extended settings by type

Types not listed only have the six booleans above.

Date/time: date / time

FieldTypeDescription
formatstringDate/time format
default_to_currentbooleanDefault to now

Number: number

FieldTypeDescription
unitstringUnit label; "" if none
unit_enabledbooleanShow unit
rangeobjectNumeric range
range.minimumnumber | nullMin
range.maximumnumber | nullMax
allow_negativebooleanAllow negatives

Options: sex / radio / checkbox

FieldTypeDescription
optionsarrayOptions
options[].option_idintegerOption ID
options[].option_textstringLabel
options[].is_custombooleanAllow custom text

Checklist: checklist

FieldTypeDescription
is_allow_entry_descbooleanAllow note text
checklist_itemsarrayItems
checklist_items[].item_idintegerItem ID
checklist_items[].item_titlestringItem title
checklist_result_optionsarrayResult options
checklist_result_options[].option_idintegerOption ID
checklist_result_options[].option_valuestringValue
checklist_result_options[].option_textstringLabel

Table: matrix / dynamic_matrix

FieldTypeDescription
columnsarrayColumn defs
columns[].column_idintegerColumn ID
columns[].column_titlestringTitle
columns[].column_typestringColumn type
columns[].formatstringDate/time format for some types
columns[].optionsarrayFor sex / radio etc.
columns[].options[].option_uuidstringOption UUID
columns[].options[].option_textstringLabel
columns[].options[].is_custombooleanCustom input allowed

Cascaded: chained_selects

FieldTypeDescription
chained_optionsarrayTree
chained_options[].option_idintegerOption ID
chained_options[].option_textstringLabel
chained_options[].levelintegerDepth from 1
chained_options[].childrenarrayChildren; [] at leaves

OCR: ocr_*

FieldTypeDescription
ocr_itemsarrayRecognition items
ocr_items[].item_idintegerItem ID
ocr_items[].item_titlestringTitle
ocr_items[].unitstringUnit
ocr_items[].unit_enabledbooleanShow unit

Description: description

FieldTypeDescription
description_htmlstringRich HTML

audit_config

FieldTypeDescription
enabledbooleanApproval enabled
stagesarrayStages; empty when disabled
stages[].idintegerStage ID
stages[].titlestringStage title
stages[].levelintegerLevel from 1

process_status_config

FieldTypeDescription
enabledbooleanProcessing status enabled
optionsarrayStatus options
options[].textstringLabel
options[].colorstringHex color

rules

Time limits, per-user submission limits, and total submission limits.

FieldTypeDescription
time_limit_recordarrayTime windows
tpl_limit_recordobject | nullPer-user limit
owner_tpl_limit_recordobject | nullTotal form limit

time_limit_record[]

FieldTypeDescription
start_timeinteger | stringStart; may be Unix timestamp—do not rely on a single format
end_timeinteger | stringEnd
time_limit_typeinteger0 none, 1 datetime range, 2 daily window

tpl_limit_record / owner_tpl_limit_record

FieldTypeDescription
limit_typeinteger0 none, 1 once, 2 custom period
custom_typeintegerPeriod: 0 day, 1 week, 2 month, 3 year
custom_limitintegerAllowed submissions per period
custom_type_limitintegerPeriod span value

field_type reference

Overview: Form component types overview.

In forms/getTemplate, field_type mainly determines which settings keys appear:

CategoryCommon field_typeConfig focus
Text / identityname, tel, recorder, identity, job_number, text, textarea, customer_name, customer_mobile, customer_number, carnumberUsually only the six booleans
Choicesex, radio, checkboxoptions[]
Number / timenumber, date, timeunit, range, format, default_to_current
Compositechecklist, matrix, dynamic_matrix, chained_selectsNested: checklist_items, columns, chained_options
Media / display / OCRimage, audio, video, file, signature, description, ocr_*Media flags, description_html, ocr_items

For record values, see Get a single record (field_typefield_value).

Schema and examples

Schema

Full examples

Other conventions

Empty values

CaseRule
Optional rule not settpl_limit_record, owner_tpl_limit_record may be null
Empty stringOften ""
Empty arrayOften []
Open rangerange.minimum / maximum may be null

Masking

CaseDescription
Live APIMasking depends on org permission and field config
ExamplesSanitized or synthetic
settings.is_maskedMasking enabled; does not imply the sample matches live data

Error response

json
{
  "code": 400,
  "error_code": 100300,
  "message": "System error",
  "message_detail": ""
}
FieldTypeDescription
codeintegerHTTP or platform status
error_codeintegerBusiness error code
messagestringSummary
message_detailstringDetail; may be empty

Full error codes: Error codes.