{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/zaraz_zaraz-config-base",
  "title": "zaraz_zaraz-config-base",
  "description": "Zaraz configuration",
  "example": {
    "consent": {
      "cookieName": "zaraz-consent",
      "customIntroDisclaimerDismissed": true,
      "enabled": false
    },
    "dataLayer": true,
    "debugKey": "my-debug-key",
    "settings": {
      "autoInjectScript": true,
      "ecommerce": true,
      "initPath": "/i"
    },
    "tools": {
      "aJvt": {
        "actions": {
          "hrnc": {
            "actionType": "pageview",
            "blockingTriggers": [],
            "data": {
              "__zaraz_setting_name": "Page view",
              "ev": "PageView"
            },
            "firingTriggers": [
              "Pageview"
            ]
          }
        },
        "component": "facebook-pixel",
        "defaultFields": {
          "testKey": "TEST123456"
        },
        "enabled": true,
        "name": "Facebook Pixel",
        "permissions": [
          "access_client_kv"
        ],
        "settings": {
          "accessToken": "ABcdEFg",
          "ecommerce": true,
          "property": "12345"
        },
        "type": "component"
      }
    },
    "triggers": {
      "ktBn": {
        "Pageview": {
          "clientRules": [],
          "description": "All page loads",
          "excludeRules": [],
          "loadRules": [
            {
              "match": "{{ client.__zarazTrack }}",
              "op": "EQUALS",
              "value": "Pageview"
            }
          ],
          "name": "Pageview",
          "system": "pageload"
        }
      }
    },
    "variables": {
      "Autd": {
        "name": "ip",
        "type": "string",
        "value": "{{ system.device.ip }}"
      }
    },
    "zarazVersion": 43
  },
  "properties": {
    "consent": {
      "description": "Consent management configuration.",
      "properties": {
        "buttonTextTranslations": {
          "properties": {
            "accept_all": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Object where keys are language codes",
              "type": "object"
            },
            "confirm_my_choices": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Object where keys are language codes",
              "type": "object"
            },
            "reject_all": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Object where keys are language codes",
              "type": "object"
            }
          },
          "required": [
            "accept_all",
            "reject_all",
            "confirm_my_choices"
          ],
          "type": "object"
        },
        "companyEmail": {
          "type": "string"
        },
        "companyName": {
          "type": "string"
        },
        "companyStreetAddress": {
          "type": "string"
        },
        "consentModalIntroHTML": {
          "type": "string"
        },
        "consentModalIntroHTMLWithTranslations": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Object where keys are language codes",
          "type": "object"
        },
        "cookieName": {
          "type": "string"
        },
        "customCSS": {
          "type": "string"
        },
        "customIntroDisclaimerDismissed": {
          "type": "boolean"
        },
        "defaultLanguage": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "hideModal": {
          "type": "boolean"
        },
        "purposes": {
          "additionalProperties": {
            "properties": {
              "description": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "description"
            ],
            "type": "object"
          },
          "description": "Object where keys are purpose alpha-numeric IDs",
          "type": "object"
        },
        "purposesWithTranslations": {
          "additionalProperties": {
            "properties": {
              "description": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object where keys are language codes",
                "type": "object"
              },
              "name": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Object where keys are language codes",
                "type": "object"
              },
              "order": {
                "type": "integer"
              }
            },
            "required": [
              "name",
              "description",
              "order"
            ],
            "type": "object"
          },
          "description": "Object where keys are purpose alpha-numeric IDs",
          "type": "object"
        },
        "tcfCompliant": {
          "type": "boolean"
        }
      },
      "required": [
        "enabled"
      ],
      "type": "object"
    },
    "dataLayer": {
      "description": "Data layer compatibility mode enabled.",
      "type": "boolean"
    },
    "debugKey": {
      "description": "The key for Zaraz debug mode.",
      "type": "string"
    },
    "historyChange": {
      "description": "Single Page Application support enabled.",
      "type": "boolean"
    },
    "settings": {
      "description": "General Zaraz settings.",
      "properties": {
        "autoInjectScript": {
          "description": "Automatic injection of Zaraz scripts enabled.",
          "type": "boolean"
        },
        "contextEnricher": {
          "description": "Details of the worker that receives and edits Zaraz Context object.",
          "properties": {
            "escapedWorkerName": {
              "type": "string"
            },
            "workerTag": {
              "type": "string"
            }
          },
          "required": [
            "escapedWorkerName",
            "workerTag"
          ],
          "type": "object"
        },
        "cookieDomain": {
          "description": "The domain Zaraz will use for writing and reading its cookies.",
          "type": "string"
        },
        "ecommerce": {
          "description": "Ecommerce API enabled.",
          "type": "boolean"
        },
        "eventsApiPath": {
          "description": "Custom endpoint for server-side track events.",
          "type": "string"
        },
        "hideExternalReferer": {
          "description": "Hiding external referrer URL enabled.",
          "type": "boolean"
        },
        "hideIPAddress": {
          "description": "Trimming IP address enabled.",
          "type": "boolean"
        },
        "hideQueryParams": {
          "description": "Removing URL query params enabled.",
          "type": "boolean"
        },
        "hideUserAgent": {
          "description": "Removing sensitive data from User Aagent string enabled.",
          "type": "boolean"
        },
        "initPath": {
          "description": "Custom endpoint for Zaraz init script.",
          "type": "string"
        },
        "injectIframes": {
          "description": "Injection of Zaraz scripts into iframes enabled.",
          "type": "boolean"
        },
        "mcRootPath": {
          "description": "Custom path for Managed Components server functionalities.",
          "type": "string"
        },
        "scriptPath": {
          "description": "Custom endpoint for Zaraz main script.",
          "type": "string"
        },
        "trackPath": {
          "description": "Custom endpoint for Zaraz tracking requests.",
          "type": "string"
        }
      },
      "required": [
        "autoInjectScript"
      ],
      "type": "object"
    },
    "triggers": {
      "additionalProperties": {
        "properties": {
          "description": {
            "description": "Trigger description.",
            "type": "string"
          },
          "excludeRules": {
            "description": "Rules defining when the trigger is not fired.",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/zaraz_load-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_click-listener-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_timer-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_form-submission-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_variable-match-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_scroll-depth-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_element-visibility-rule"
                }
              ]
            },
            "type": "array"
          },
          "loadRules": {
            "description": "Rules defining when the trigger is fired.",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/zaraz_load-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_click-listener-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_timer-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_form-submission-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_variable-match-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_scroll-depth-rule"
                },
                {
                  "$ref": "#/components/schemas/zaraz_element-visibility-rule"
                }
              ]
            },
            "type": "array"
          },
          "name": {
            "description": "Trigger name.",
            "type": "string"
          },
          "system": {
            "enum": [
              "pageload"
            ],
            "type": "string"
          }
        },
        "required": [
          "name",
          "loadRules",
          "excludeRules"
        ],
        "type": "object"
      },
      "description": "Triggers set up under Zaraz configuration, where key is the trigger alpha-numeric ID and value is the trigger configuration.",
      "type": "object"
    },
    "variables": {
      "additionalProperties": {
        "anyOf": [
          {
            "properties": {
              "name": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "string",
                  "secret"
                ],
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "type",
              "value"
            ],
            "type": "object"
          },
          {
            "properties": {
              "name": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "worker"
                ],
                "type": "string"
              },
              "value": {
                "properties": {
                  "escapedWorkerName": {
                    "type": "string"
                  },
                  "workerTag": {
                    "type": "string"
                  }
                },
                "required": [
                  "escapedWorkerName",
                  "workerTag"
                ],
                "type": "object"
              }
            },
            "required": [
              "name",
              "type",
              "value"
            ],
            "type": "object"
          }
        ]
      },
      "description": "Variables set up under Zaraz configuration, where key is the variable alpha-numeric ID and value is the variable configuration. Values of variables of type secret are not included.",
      "type": "object"
    },
    "zarazVersion": {
      "description": "Zaraz internal version of the config.",
      "type": "integer"
    }
  },
  "required": [
    "tools",
    "triggers",
    "variables",
    "settings",
    "dataLayer",
    "debugKey",
    "zarazVersion"
  ],
  "type": "object"
}