Schéma d’entrée (aperçu tronqué — ne pas copier)
{
"type": "object",
"required": [
"app_id",
"entity_id",
"field_type",
"name"
],
"properties": {
"ampm": {
"type": "boolean",
"description": "true — 12-hour format (AM/PM) for time/datetime"
},
"desc": {
"type": "string",
"description": "A tooltip hint for the person filling in the form"
},
"func": {
"type": "integer",
"description": "Function for formula_type=function: 0=MIN, 1=MAX, 2=ROUND_UP, 3=ROUND_DOWN, 4=Ruby script"
},
"icon": {
"type": "string",
"description": "action field: the icon's FontAwesome class"
},
"name": {
"type": "string",
"description": "Field name"
},
"rich": {
"type": "boolean",
"description": "true — a text editor (for field_type=textarea)"
},
"step": {
"type": "integer",
"description": "Step of the autoincrement (default 1)"
},
"field": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of field IDs or constants ['Constant', 'text'] for formula_type=formula"
},
"app_id": {
"type": "string",
"description": "Project ID"
},
"column": {
"type": "string",
"description": "REQUIRED for linked_column: the id of the field of the LINKED table that this column shows — «show the activity's description in the registration form» is a linked_column on Registrations with column = the id of Activities' Description (get_form_fields of that table lists the ids). The two tables must be linked already. Written here, beside settings — not inside settings"
},
"choices": {
"type": "array",
"items": {
"type": "string"
},
"description": "REQUIRED for select/checkbox/radio: an array of options. A call WITHOUT choices is refused with an error — do not make it; pass the options at once (take them from the user's words or propose sensible ones). Example: [\"New\", \"In progress\", \"Done\"]."
},
"default": {
"type": "string",
"description": "Default value (for select — one of the choices)"
},
"visible": {
"type": "boolean",
"description": "false — the field's column is not shown on the table's PUBLIC page (the page, a found record, one record's own page). Signed in, the owner still sees it in their own table and in the form. For a public page prefer update_public_page hide_columns: it takes the field out of the page's search too"
},
"rel_type": {
"type": "integer",
"description": "Link type (default 2): belongs_to=2/6/8 (dropdown/radio/multi), has_one=3/5/9 (dropdown/radio/multi), many-to-many=1/4 (autocomplete/checkboxes)"
},
"required": {
"type": "boolean",
"description": "true — the field must be filled in"
},
"settings": {
"type": "object",
"description": "Any other setting of the field, as setting: value pairs in the product's own names — totals and averages under a column, barcode / QR code, an input mask, several files at once, a list's options side by side, pages of a long form, address help, edit in the table, how many fields share a row, a subform's rows (how many, the add link, hidden fields) and what the table shows of a subform or a list of linked records (one column or a small table of chosen columns, their order). Call get_field_types with field_type for the settings that fit one type. Example: {\"show_db_total_row\": true}. A setting that does not fit the field's type is refused by name."
},
"delimiter": {
"type": "string",
"description": "Thousands separator: '' or ',' or '.'"
},
"dependent": {
"type": "boolean",
"description": "rel only: true — the list offers only the rows linked to what another field of the same form holds (Country → City, Stage → Check point); give depends_from_field_id with it. get_field_types with field_type rel says the shape"
},
"entity_id": {
"type": "string",
"description": "Form ID"
},
"operation": {
"type": "array",
"items": {
"type": "string"
},
"description": "Operators between the fields: +, -, *, / (one fewer than the number of fields)"
},
"precision": {
"type": "integer",
"description": "Digits after the decimal point for float (default 2)"
},
"separator": {
"type": "string",
"description": "Decimal separator: '.' or ','"
},
"field_type": {
"type": "string",
"description": "Field type. Call get_field_types for the full list with descriptions."
},
"icon_align": {
"type": "integer",
"description": "action: where the icon stands beside the caption — 1 left (default), 2 right"
},
"operand_is": {
"type": "string",
"description": "Operand type for formula_type=formula: numbers, decimal, text, days, hours, year. REQUIRED when formula_type=formula."
},
"start_from": {
"type": "integer",
"description": "Starting value of the autoincrement (default 1)"
},
"text_align": {
"type": "integer",
"description": "Alignment in the cell: 1=left, 2=right, 3=center, 4=justify"
},
"uniqueness": {
"type": "object",
"properties": {
"uniq_type": {
"type": "integer",
"description": "0 = none, 1 = strictly unique, 2 = multi (a combination of fields)"
},
"error_message": {
"type": "string",
"description": "A custom message when uniqueness is broken"
},
"linked_fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "For uniq_type=2: an array of names or IDs of the other fields"
}
},
"description": "Check that the field's values are unique."
},
"action_fill": {
"type": "integer",
"description": "action field: 0=inline(default), 1=block"
},
"action_size": {
"type": "integer",
"description": "action field: 0=small,1=medium(default),2=large"
},
"action_type": {
"type": "integer",
"description": "action field: 0=link(default), 1=button"
},
"entries_num": {
"type": "integer",
"description": "Number of linked records for linked_records (default 5)"
},
"func_fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "IDs of all fields used in func/script_body. REQUIRED for formula_type=function — without it the formula is not recalculated."
},
"is_currency": {
"type": "boolean",
"description": "Show as currency"
},
"matrix_rows": {
"type": "array",
"items": {
"type": "string"
},
"description": "Matrix rows (field_type=matrix)"
},
"script_body": {
"type": "string",
"description": "Ruby code for func=4. Rules: the result goes into the variable 'a', the last line is 'a'; field names in single quotes 'field_name'.to_f; def/while/puts/return/require are forbidden; aggregating subforms through .to_f is FORBIDDEN (use linked_column for that)."
},
"validations": {
"type": "object",
"properties": {
"is": {
"description": "Exact length (for text) or exact value (for number)"
},
"URL": {
"type": "string",
"description": "\"on\" — check the URL format"
},
"Email": {
"type": "string",
"description": "\"1\" — check the email format"
},
"format": {
"type": "string",
"description": "A regexp in the form /^regex$/ — check against a regular expression"
},
"maximum": {
"description": "Maximum: for text — the number of characters; for integer/float — the numeric value"
},
"minimum": {
"description": "Minimum: for text — the number of characters; for integer/float — the numeric value"
},
"LOCATION": {
"type": "string",
"description": "\"1\" — check the geolocation"
},
"Exclusion": {
"type": "string",
"description": "Forbidden values, comma-separated: \"spam, abuse\""
},
"Inclusion": {
"type": "string",
"description": "Allowed values, comma-separated: \"Admin, Manager, User\""
},
"onlyOnSubmit": {
"type": "string",
"description": "\"1\" — validate only on submit, not while typing"
},
"exclusion_allowNull": {
"type": "string",
"description": "\"on\" — allow an empty value in Exclusion"
},
"inclusion_allowNull": {
"type": "string",
"description": "\"on\" — allow an empty value in Inclusion"
},
"exclusion_partialMatch": {
"type": "string",
"description": "\"on\" — partial match in Exclusion"
},
"inclusion_partialMatch": {
"type": "string",
"description": "\"on\" — partial match in Inclusion"
},
"exclusion_caseSensitive": {
"type": "string",
"description": "\"on\" — case-sensitive Exclusion"
},
"inclusion_caseSensitive": {
"type": "string",
"description": "\"on\" — case-sensitive Inclusion"
}
},
"description": "The field's checks. required: true is the shorter way to make it required. They check the text typed into the add or edit form, in the browser: none reads a date's weekday, a holiday, opening hours or other records (see the instruction's VALIDATIONS)."
},
"action_color": {
"type": "integer",
"description": "action field: 0=primary,2=success,3=danger,6=light(default)"
},
"action_tasks": {
"type": "array",
"items": {
"type": "object",
"required": [
"task_type"
],
"properties": {
"id": {
"type": "string",
"description": "A unique task ID (for references from action_display_rules)"
},
"emails": {
"type": "string"
},
"message": {
"type": "string"
},
"numbers": {
"type": "string"
},
"subject": {
"type": "string"
},
"webhook": {
"type": "object",
"description": "Webhook config: {request_method(0-4), auth_type(0-2), url, webhook_params[], webhook_headers[]}"
},
"sms_body": {
"type": "string"
},
"task_type": {
"type": "integer",
"description": "See task_type in the description of action_tasks above"
},
"custom_url": {
"type": "string"
},
"email_body": {
"type": "string"
},
"sms_column": {
"type": "string"
},
"email_column": {
"type": "string"
},
"open_form_id": {
"type": "string"
},
"update_fields": {
"type": "array",
"items": {
"type": "object"
},
"description": "Fields to update (task_type=2). Each object: {field_id, val, set_current_time, set_current_user}"
},
"open_custom_url": {
"type": "boolean"
},
"sms_template_id": {
"type": "string"
},
"open_form_widget": {
"type": "boolean"
},
"payment_workflow": {
"type": "object",
"description": "Payment config: {merchant_type(0=paypal,1=braintree), amount_field_id, business_email, currency, ...}"
},
"email_template_id": {
"type": "string"
},
"sms_from_template": {
… [server-provided details truncated]