chatformdocs
Blocks

Common fields

The fields every block has, whatever it collects.

Every block carries these, so each type's own page documents only what is specific to it.

Shared block fields
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 6,
      "maxLength": 32
    },
    "ref": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9_]{1,40}$"
    },
    "title": {
      "type": "string",
      "maxLength": 2000
    },
    "description": {
      "type": "string",
      "maxLength": 5000
    },
    "required": {
      "default": false,
      "type": "boolean"
    },
    "visibility": {
      "default": null,
      "anyOf": [
        {
          "$ref": "#/$defs/__schema0"
        },
        {
          "type": "null"
        }
      ]
    },
    "image_key": {
      "default": null,
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "agentHints": {
      "default": null,
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "askStyle": {
              "type": "string",
              "maxLength": 500
            },
            "retryHint": {
              "type": "string",
              "maxLength": 500
            },
            "whyWeAsk": {
              "type": "string",
              "maxLength": 500
            },
            "examples": {
              "default": [],
              "maxItems": 5,
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 200
              }
            }
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "media": {
      "default": null,
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "enum": [
                "image",
                "video",
                "file"
              ]
            },
            "key": {
              "default": null,
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 500
                },
                {
                  "type": "null"
                }
              ]
            },
            "url": {
              "default": null,
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 1000,
                  "format": "uri"
                },
                {
                  "type": "null"
                }
              ]
            },
            "filename": {
              "type": "string",
              "maxLength": 300
            },
            "mime": {
              "type": "string",
              "maxLength": 120
            },
            "sizeBytes": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "alt": {
              "type": "string",
              "maxLength": 300
            },
            "caption": {
              "type": "string",
              "maxLength": 300
            }
          },
          "required": [
            "kind"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "prefillParam": {
      "type": "string",
      "pattern": "^[a-zA-Z_][a-zA-Z0-9_.-]{0,60}$"
    },
    "identityField": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "given-name",
            "family-name",
            "name",
            "nickname",
            "username",
            "email",
            "tel",
            "organization",
            "organization-title",
            "department",
            "street-address",
            "address-line2",
            "address-level2",
            "address-level1",
            "postal-code",
            "country-name",
            "url",
            "linkedin",
            "github",
            "twitter",
            "instagram",
            "youtube",
            "reddit",
            "discord",
            "school",
            "degree",
            "graduation-year",
            "student-id",
            "bday",
            "sex",
            "nationality",
            "shirt-size",
            "dietary"
          ]
        },
        {
          "type": "string",
          "const": "never"
        }
      ]
    }
  }
}

ref is the one to pay attention to: it is how you address a block when answering, and it is stable across edits in a way id is not meant to be.