SharePoint Server JSON schema


{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "CustomFormatter JSON - SharePoint 2019",
  "description": "CustomFormatter renderer for SharePoint lists - matching with SP2019 version",
  "definitions": {
    "customAction": {
      "type": "object",
      "additionalProperties": false,
      "title": "Action object",
      "description": "Action object for a custom action button",
      "properties": {
        "action": {
          "description": "Name of the action that the custom action button will execute",
          "enum": [
            "defaultClick",
            "executeFlow"
          ]
        },
        "actionParams": {
          "description": "Parameters for the custom action",
          "anyOf": [
            {
              "$ref": "#/definitions/expression"
            },
            {
              "type": "string"
            }
          ]
        }
      }
    },
    "expression": {
      "type": "object",
      "additionalProperties": false,
      "title": "Expression object JSON",
      "description": "Expression object for CustomFormatter JSON",
      "properties": {
        "operator": {
          "description": "Operator for this expression",
          "enum": [
            "+",
            "-",
            "*",
            "/",
            "==",
            "!=",
            ">",
            "<",
            ">=",
            "<=",
            "||",
            "&&",
            "?",
            ":",
            "toString()",
            "Number()",
            "Date()",
            "cos",
            "sin"
          ]
        },
        "operands": {
          "description": "Operands for this expression",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object",
                "$ref": "#/definitions/expression"
              }
            ]
          }
        }
      },
      "required": [
        "operator",
        "operands"
      ]
    },
    "elm": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "$schema": {
          "description": "schema of the JSON",
          "type": "string"
        },
        "debugMode": {
          "description": "Is this JSON in debug mode?",
          "type": "boolean"
        },
        "elmType": {
          "description": "The type of element to create",
          "enum": [
            "div",
            "button",
            "span",
            "a",
            "img",
            "svg",
            "path"
          ]
        },
        "children": {
          "description": "Children elements",
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/elm"
          }
        },
        "txtContent": {
          "anyOf": [
            {
              "$ref": "#/definitions/expression"
            },
            {
              "type": "string"
            }
          ]
        },
        "style": {
          "description": "Specifies the style object for this element",
          "patternProperties": {
            "^[a-z]+(?:-[a-z]+)?$": {
              "description": "Specifies style attributes for this element",
              "anyOf": [
                {
                  "$ref": "#/definitions/expression"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        },
        "customRowAction": {
          "anyOf": [
            {
              "$ref": "#/definitions/customAction"
            }
          ]
        },
        "attributes": {
          "type": "object",
          "description": "Additional attributes to be added to elmType",
          "properties": {
            "href": {
              "description": "Specifies the href attribute",
              "anyOf": [
                {
                  "$ref": "#/definitions/expression"
                },
                {
                  "type": "string"
                }
              ]
            },
            "src": {
              "description": "Specifies the src attribute",
              "anyOf": [
                {
                  "$ref": "#/definitions/expression"
                },
                {
                  "type": "string"
                }
              ]
            },
            "class": {
              "description": "Specifies the class attribute",
              "anyOf": [
                {
                  "$ref": "#/definitions/expression"
                },
                {
                  "type": "string"
                }
              ]
            },
            "target": {
              "description": "Specifies the target attribute, used primarily for <a> element types.",
              "anyOf": [
                {
                  "$ref": "#/definitions/expression"
                },
                {
                  "type": "string"
                }
              ]
            },
            "role": {
              "description": "Specifies the role attribute, used accessibility.",
              "anyOf": [
                {
                  "$ref": "#/definitions/expression"
                },
                {
                  "type": "string"
                }
              ]
            },
            "iconName": {
              "description": "Specifies the Fabric icon to display before this element",
              "anyOf": [
                {
                  "$ref": "#/definitions/expression"
                },
                {
                  "type": "string"
                }
              ]
            },
            "d": {
              "description": "Specifies the d attribute. Used primarily for svg path elements",
              "anyOf": [
                {
                  "$ref": "#/definitions/expression"
                },
                {
                  "type": "string"
                }
              ]
            }
          },
          "patternProperties": {
            "^aria\\-[a-z]+$": {
              "description": "Specifies aria- attributes for the element",
              "anyOf": [
                {
                  "$ref": "#/definitions/expression"
                },
                {
                  "type": "string"
                }
              ]
            }
          },
          "additionalProperties": false
        }
      },
      "required": [
        "elmType"
      ]
    }
  },
  "$ref": "#/definitions/elm"
}