{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Field Types","projectTitle":"Frontline Documentation","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"field-types","__idx":0},"children":["Field Types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Fields (columns) are the schema of an ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/objects"},"children":["Object"]}," or ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/tables"},"children":["Table"]},". Every field has a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," and an optional per-type ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata"]}," object, plus the constraints and defaults described at the bottom of this page."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create a field with:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"frontline object field create <object> --data '{\"name\":\"<label>\",\"type\":\"<type>\",\"metadata\":{ ... }}'\n# Tables use the same shape:\nfrontline table field create <table> --data '{\"name\":\"<label>\",\"type\":\"<type>\",\"metadata\":{ ... }}'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Or via the Public API: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /public/v1/objects/{name}/fields"]},"."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The create/update body is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["strict"]}," — unknown top-level keys return a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"data-types--metadata","__idx":1},"children":["Data types & metadata"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"metadata keys"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata"]}," keys"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Example"},"children":["Example"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["format"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]}," | ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["email"]}," | ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["url"]}," | ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phone_number"]},"; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["extendedField"]}," (bool)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"format\":\"text\",\"extendedField\":true}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["number"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["format"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["integer"]}," | ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["decimal"]}," | ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["percent"]}," | ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["currency"]},"; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["decimals"]},"; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["currency"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"format\":\"currency\",\"currency\":\"USD\",\"decimals\":2}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["boolean"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["(none)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["date"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timezone"]}," (IANA); ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["format"]}," (Luxon display pattern); ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timeFormat"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["12h"]}," | ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["24h"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"timezone\":\"America/New_York\",\"format\":\"MM/dd/yyyy\",\"timeFormat\":\"12h\"}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dateOnly"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["format"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["select"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tags"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mode"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["singleSelect"]}," | ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["multiSelect"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"mode\":\"singleSelect\"}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["relation"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mode"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["single"]}," | ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["multi"]},"; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["relatedTableId"]},"; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["displayColumn"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"mode\":\"multi\",\"relatedTableId\":123,\"displayColumn\":45}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prismaRelation"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prismaModel"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["User"]}," | ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Conversation"]},"; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["displayField"]},"; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mode"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["single"]},"|",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["multi"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"prismaModel\":\"User\",\"displayField\":\"fullName\",\"mode\":\"multi\"}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["file"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["showPreview"]}," (bool); ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["allowedFileTypes"]}," (string[]); ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maxFileSize"]}," (bytes)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"showPreview\":true}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["avatar"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["(none)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["formula"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expression"]}," (object, required); ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applyIf"]}," (object, optional); ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["numberConfig"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dateConfig"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["stringConfig"]}," (objects, optional)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"expression\":{\"type\":\"constant\",\"value\":42}}"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["select"]}," maps internally to a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tags"]}," field, but the API still returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"type\":\"select\""]},"."," ","Internal-only types (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["autoIncrement"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kanbanViewOrder"]},") and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["composedField"]}," string format are reserved for the platform and rejected by the API."]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Metadata validation."]}," When you include a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata"]}," object, it is validated with the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["same rules as the in-app field editor"]},". Unknown keys are rejected with suggestions (for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["time_format"]}," → use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timeFormat"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timeZone"]}," → use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timezone"]},"). If you provide ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata"]},", the type's key fields are required: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["number"]}," need ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["format"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["date"]}," needs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timezone"]}," (which must be a valid IANA timezone name from the allowed list, e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UTC"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["America/New_York"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["America/Chicago"]},", etc.), ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["select"]}," needs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mode"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["relation"]}," needs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["relatedTableId"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["displayColumn"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mode"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prismaRelation"]}," needs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prismaModel"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["displayField"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mode"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["formula"]}," needs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expression"]},". To accept defaults, ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["omit ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata"]}]}," rather than sending ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{}"]}," (an empty object fails for types that require a key)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Date ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["format"]}," values."]}," For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"date\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata.format"]}," must be a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Luxon display pattern"]}," accepted by the UI Date Format dropdown — not legacy column-kind values like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["datetime"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["date"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["time"]},". Allowed: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MM/dd/yyyy"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dd/MM/yyyy"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["yyyy-MM-dd"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MMM d, yyyy"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["d MMM yyyy"]},". Optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timeFormat"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["12h"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["24h"]},". Field list/get responses include a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata"]}," object (in addition to promoted top-level keys like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timezone"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["time_format"]},") so CLI round-trips work."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"text-normal-vs-long","__idx":2},"children":["Text: normal vs long"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"format\":\"text\""]},". The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["extendedField"]}," flag controls how it renders:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"UI"},"children":["UI"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Use for"},"children":["Use for"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"format\":\"text\"}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Single-line input"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Names, short labels"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"format\":\"text\",\"extendedField\":true}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Multi-line area"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Descriptions, notes, summaries"]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"# Long-text Description field\nfrontline object field create tickets --data '{\n  \"name\": \"Description\",\n  \"type\": \"string\",\n  \"metadata\": { \"format\": \"text\", \"extendedField\": true }\n}'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On read, a long-text field surfaces ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"extended_field\": true"]}," in the field output."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"select-options","__idx":3},"children":["Select options"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["select"]}," (single- or multi-select) options ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["cannot be created inline"]}," — the create call only sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mode"]},". Create the field first, then add each option:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"frontline object field create deals --data '{\"name\":\"Priority\",\"type\":\"select\",\"metadata\":{\"mode\":\"singleSelect\"}}'\nfrontline object option create deals <field-id> --data '{\"name\":\"High\",\"color\":\"Magenta\"}'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Passing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata.options"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata.tags"]},", or a top-level ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["options"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tags"]}," array on create is rejected (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]},"). On ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["update"]},", replace options via the top-level ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tags"]}," array."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"relation-vs-prismarelation","__idx":4},"children":["relation vs prismaRelation"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["relation"]}]}," links a record to records in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["another Object"]}," (e.g. a Deal → a Company). Requires ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["relatedTableId"]}," (the target object's numeric ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},") and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["displayColumn"]}," (the field id to show as the label)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prismaRelation"]}]}," links a record to a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["platform entity"]},", most commonly an account ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["User"]}," (assignee/owner). Requires ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prismaModel"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"User\""]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"Conversation\""]},") and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["displayField"]}," (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"fullName\""]},"). The built-in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Users"]}," field on People, Deals, and Tickets is a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prismaRelation"]},"."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"# Assignee field that points to platform users\nfrontline object field create deals --data '{\n  \"name\": \"Owner\",\n  \"type\": \"prismaRelation\",\n  \"metadata\": { \"prismaModel\": \"User\", \"displayField\": \"fullName\", \"mode\": \"single\" }\n}'\n\n# Assign users on a record — array of numeric user IDs\nfrontline object record update deals <record-id> --data '{ \"Owner\": [42, 57] }'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On read, a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prismaRelation"]}," field surfaces ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prisma_model"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["display_field"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["relation_mode"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"formulas-dynamic-calculated-fields","__idx":5},"children":["Formulas: dynamic calculated fields"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Formula fields enable spreadsheet-like calculated values for both standard CRM objects and custom tables. They automatically recalculate when dependent fields, relations, or back-relations are modified."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A formula field metadata requires an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expression"]}," object (the AST representing the calculation) and an optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applyIf"]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/querying"},"children":["QueryDSL filter"]}," (the condition under which the formula is executed)."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"name\": \"Total Cost\",\n    \"type\": \"formula\",\n    \"metadata\": {\n        \"expression\": {\n            \"type\": \"operator\",\n            \"operator\": \"multiply\",\n            \"arguments\": [\n                { \"type\": \"field\", \"field\": \"[Quantity]\", \"fallbackValue\": 0 },\n                { \"type\": \"field\", \"field\": \"[Unit Price]\", \"fallbackValue\": 0 }\n            ]\n        },\n        \"applyIf\": {\n            \"path\": \"[Status]\",\n            \"operator\": \"equals\",\n            \"value\": \"Active\"\n        }\n    }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ast-node-types","__idx":6},"children":["AST Node Types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Formula expressions are built recursively using the following node types:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["constant"]}]},": A static literal value.",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["value"]}," (string or number)"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["field"]}]},": References a local field (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"[Field Name]\""]},") or direct relation field (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"[Relation Name].[Field Name]\""]},").",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["field"]}," (string)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fallbackValue"]}," (optional, string or number)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Percent scaling"]},": When referencing a standard ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["number"]}," column with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"format\": \"percent\""]},", its value (or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fallbackValue"]},") is automatically divided by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["100"]}," during evaluation so that a whole number like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["10"]}," behaves mathematically as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0.1"]},"."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["operator"]}]},": Performs mathematical or string operations.",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["operator"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"add\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"subtract\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"multiply\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"divide\""]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"concat\""]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["arguments"]},": Array of formula nodes"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aggregate"]}]},": Aggregates records across relations or back-relations.",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["operation"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"count\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"sum\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"avg\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"min\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"max\""]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"sumProduct\""]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["field"]}," (required field to aggregate in the target table)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["relation"]}," (required for direct relations; optional for back-relations)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isBackRelation"]}," (optional, boolean)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["backRelationColumnId"]}," (optional, number, the target table's relation column pointing back)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["arguments"]}," (optional array of formula weight nodes for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"sumProduct\""]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["filter"]}," (optional ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/querying"},"children":["QueryDSL filter"]}," to scope aggregated records)"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["padLeft"]}]},": Pads a string calculation to a specific length.",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["value"]}," (formula node returning base value)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["length"]}," (number)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["char"]}," (single character string)"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ifElse"]}]},": Evaluates condition branches inside the expression.",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["filter"]}," (",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/querying"},"children":["QueryDSL filter"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["then"]}," (formula node)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["else"]}," (formula node)"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timeOperator"]}]},": Performs date/time addition, subtraction, or difference operations.",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["operator"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"add\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"subtract\""]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"diff\""]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["arguments"]},": Array containing exactly two formula nodes"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unit"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"second\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"minute\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"hour\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"day\""]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"month\""]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"year\""]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For details on the QueryDSL structure and supported operators by field type, see the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/querying"},"children":["Querying and Filtering"]}]}," guide."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"constraints-and-limitations","__idx":7},"children":["Constraints and Limitations"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Nesting Depth"]},": A formula AST cannot exceed a maximum depth of ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["5"]}," (root-to-leaf node count; the root node is depth 1; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["field"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["constant"]}," leaves are depth 1). Depth counts ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["arguments"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["then"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["else"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["padLeft.value"]}," sub-trees; QueryDSL filters in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applyIf"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ifElse.filter"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aggregate.filter"]}," do not count."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Flat Model Constraint"]},": A formula column cannot reference another formula column (no formula chaining)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Standalone Relations"]},": A relation column cannot be referenced as a standalone field in a formula."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Strict Typing"]},": Mathematical operators (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["add"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subtract"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["multiply"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["divide"]},") and mathematical aggregations (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sum"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["avg"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sumProduct"]},") only accept numeric inputs."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Read-Only"]},": Formula fields are read-only (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["readOnly: true"]},"). You cannot manually write or update a formula column's value through the record update API."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["String output formatting."]}," When the inferred output type is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string"]},", optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["stringConfig"]}," controls display: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["format"]}," may be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["text"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["email"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["url"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phone_number"]},". Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["extendedField: true"]}," together with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["format: \"text\""]}," for long (multi-line) text, matching standard string columns."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"previewing-formula-evaluation","__idx":8},"children":["Previewing Formula Evaluation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can preview the output of a formula on existing data before creating the field:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Objects"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /public/v1/objects/{name}/fields/preview-formula"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Tables"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /public/v1/tables/{name}/fields/preview-formula"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"constraints","__idx":9},"children":["Constraints"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set on create or update:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Key"},"children":["Key"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Example"},"children":["Example"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["required"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Field must have a value on every record"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"required\": true"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unique"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Value must be unique across all records"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"unique\": true"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"frontline object field update <object> <field-id> --data '{\"required\": true, \"unique\": true}'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"defaults","__idx":10},"children":["Defaults"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pass ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["defaultValue"]}," to backfill new records (and existing rows on creation):"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"frontline object field create deals --data '{\"name\":\"Priority Score\",\"type\":\"number\",\"metadata\":{\"format\":\"integer\"},\"defaultValue\":0}'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["select"]}," fields, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["defaultValue"]}," is the option ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["name"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Date fields accept the dynamic placeholders ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NOW"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TODAY"]},", which resolve at record-creation time rather than being frozen at field-creation time."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["relation"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prismaRelation"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["file"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["avatar"]}," fields cannot have a default value."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"record-types-objects-only","__idx":11},"children":["Record types (Objects only)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By default a new field is added to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["all"]}," record types of the object. Pass ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["record_type_id"]}," to scope it to a single record type. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/record-types"},"children":["Record Types"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"see-also","__idx":12},"children":["See also"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/objects"},"children":["Objects"]}," — overview and sub-resources."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/standard-objects"},"children":["Standard Objects"]}," — the predefined People / Companies / Deals / Tickets and their standard fields."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/reference/openapi"},"children":["API Reference"]}," — every field endpoint."]}]}]},"headings":[{"value":"Field Types","id":"field-types","depth":1},{"value":"Data types & metadata","id":"data-types--metadata","depth":2},{"value":"Text: normal vs long","id":"text-normal-vs-long","depth":2},{"value":"Select options","id":"select-options","depth":2},{"value":"relation vs prismaRelation","id":"relation-vs-prismarelation","depth":2},{"value":"Formulas: dynamic calculated fields","id":"formulas-dynamic-calculated-fields","depth":2},{"value":"AST Node Types","id":"ast-node-types","depth":3},{"value":"Constraints and Limitations","id":"constraints-and-limitations","depth":3},{"value":"Previewing Formula Evaluation","id":"previewing-formula-evaluation","depth":3},{"value":"Constraints","id":"constraints","depth":2},{"value":"Defaults","id":"defaults","depth":2},{"value":"Record types (Objects only)","id":"record-types-objects-only","depth":2},{"value":"See also","id":"see-also","depth":2}],"frontmatter":{"seo":{"title":"Field Types"}},"lastModified":"2026-07-30T19:19:43.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/concepts/field-types","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}