← Files VeraARCHIVED FILE

modules/esg-reporting-assurance/schemas/foundation.schema.json

13.8 KB · Oct 3, 2026 · 06:30 UTC

↓ Download file

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:vera:esg:foundation:v1",
  "$defs": {
    "period": {
      "type": "object",
      "properties": {
        "start": {
          "type": "string",
          "format": "date"
        },
        "end": {
          "type": "string",
          "format": "date"
        }
      },
      "required": [
        "start",
        "end"
      ],
      "additionalProperties": false
    },
    "reference": {
      "type": "object",
      "properties": {
        "client_id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "engagement_id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "case_id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "kind": {
          "enum": [
            "case",
            "source",
            "evidence",
            "decision",
            "artifact"
          ]
        },
        "id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "version": {
          "type": "integer",
          "minimum": 1
        },
        "sha256": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        }
      },
      "required": [
        "client_id",
        "engagement_id",
        "case_id",
        "kind",
        "id",
        "version",
        "sha256"
      ],
      "additionalProperties": false
    },
    "case": {
      "type": "object",
      "properties": {
        "service": {
          "enum": [
            "preparation",
            "review",
            "assurance"
          ]
        },
        "reporting_basis": {
          "enum": [
            "voluntary",
            "mandatory",
            "unresolved"
          ]
        },
        "period": {
          "$ref": "#/$defs/period"
        },
        "jurisdiction": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "framework_version": {
          "type": [
            "string",
            "null"
          ]
        },
        "assurance_level": {
          "enum": [
            "not_applicable",
            "limited",
            "reasonable"
          ]
        },
        "synthetic": {
          "type": "boolean"
        }
      },
      "required": [
        "service",
        "reporting_basis",
        "period",
        "jurisdiction",
        "framework_version",
        "assurance_level",
        "synthetic"
      ],
      "additionalProperties": false,
      "allOf": [
        {
          "if": {
            "properties": {
              "service": {
                "const": "assurance"
              }
            }
          },
          "then": {
            "properties": {
              "assurance_level": {
                "enum": [
                  "limited",
                  "reasonable"
                ]
              }
            }
          },
          "else": {
            "properties": {
              "assurance_level": {
                "const": "not_applicable"
              }
            }
          }
        }
      ]
    },
    "observation": {
      "type": "object",
      "properties": {
        "status": {
          "enum": [
            "observed",
            "not_available",
            "not_applicable"
          ]
        },
        "value": {
          "anyOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]+)?$"
            }
          ]
        },
        "unit": {
          "type": [
            "string",
            "null"
          ]
        },
        "rationale": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "disclosure_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "metric_id": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "status",
        "value",
        "unit",
        "rationale",
        "disclosure_id",
        "metric_id"
      ],
      "additionalProperties": false,
      "allOf": [
        {
          "if": {
            "properties": {
              "status": {
                "const": "observed"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "type": "string"
              }
            }
          },
          "else": {
            "properties": {
              "value": {
                "type": "null"
              }
            }
          }
        }
      ]
    },
    "locator": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "row": {
              "type": "integer",
              "minimum": 1
            },
            "column": {
              "type": "string",
              "minLength": 1,
              "pattern": "\\S"
            }
          },
          "required": [
            "row",
            "column"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "line": {
              "type": "integer",
              "minimum": 1
            }
          },
          "required": [
            "line"
          ],
          "additionalProperties": false
        }
      ]
    },
    "evidence": {
      "type": "object",
      "properties": {
        "client_id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "engagement_id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "input_id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "sha256": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        "source_relative_path": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "locator": {
          "$ref": "#/$defs/locator"
        },
        "excerpt": {
          "type": "string"
        },
        "observation": {
          "$ref": "#/$defs/observation"
        }
      },
      "required": [
        "client_id",
        "engagement_id",
        "input_id",
        "sha256",
        "source_relative_path",
        "locator",
        "excerpt",
        "observation"
      ],
      "additionalProperties": false
    },
    "source": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "publisher": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "pattern": "^https://"
        },
        "version": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "applicability_period": {
          "$ref": "#/$defs/period"
        },
        "review_status": {
          "enum": [
            "unverified_seed",
            "needs_review"
          ]
        },
        "catalogue_complete": {
          "type": "boolean"
        },
        "legal_review_approved": {
          "type": "boolean"
        },
        "locator": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "rationale": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        }
      },
      "required": [
        "title",
        "publisher",
        "url",
        "version",
        "applicability_period",
        "review_status",
        "catalogue_complete",
        "legal_review_approved",
        "locator",
        "rationale"
      ],
      "additionalProperties": false
    },
    "decision": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "scope",
            "applicability",
            "materiality",
            "independence",
            "estimate",
            "conclusion",
            "delivery"
          ]
        },
        "decided_by": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "decided_on": {
          "type": "string",
          "format": "date"
        },
        "outcome": {
          "enum": [
            "approved",
            "rejected",
            "noted"
          ]
        },
        "decision": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "rationale": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        }
      },
      "required": [
        "type",
        "decided_by",
        "decided_on",
        "outcome",
        "decision",
        "rationale"
      ],
      "additionalProperties": false
    },
    "artifact": {
      "type": "object",
      "properties": {
        "claim": {
          "const": "partial_draft"
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "audience": {
          "const": "professional"
        },
        "content": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "limitations": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "pattern": "\\S"
          },
          "minItems": 1
        }
      },
      "required": [
        "claim",
        "title",
        "audience",
        "content",
        "limitations"
      ],
      "additionalProperties": false
    },
    "start_case": {
      "type": "object",
      "properties": {
        "idempotency_key": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "case_id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "record": {
          "$ref": "#/$defs/case"
        },
        "previous_context": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "idempotency_key",
        "case_id",
        "record",
        "previous_context"
      ],
      "additionalProperties": false
    },
    "bind_evidence": {
      "type": "object",
      "properties": {
        "idempotency_key": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "expected_state_sha256": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        "id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "input_id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "locator": {
          "$ref": "#/$defs/locator"
        },
        "observation": {
          "$ref": "#/$defs/observation"
        }
      },
      "required": [
        "idempotency_key",
        "expected_state_sha256",
        "id",
        "input_id",
        "locator",
        "observation"
      ],
      "additionalProperties": false
    },
    "register_source": {
      "type": "object",
      "properties": {
        "idempotency_key": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "expected_state_sha256": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        "id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "record": {
          "$ref": "#/$defs/source"
        }
      },
      "required": [
        "idempotency_key",
        "expected_state_sha256",
        "id",
        "record"
      ],
      "additionalProperties": false
    },
    "record_decision": {
      "type": "object",
      "properties": {
        "idempotency_key": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "expected_state_sha256": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        "id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "record": {
          "$ref": "#/$defs/decision"
        },
        "dependencies": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/reference"
          },
          "uniqueItems": true
        }
      },
      "required": [
        "idempotency_key",
        "expected_state_sha256",
        "id",
        "record",
        "dependencies"
      ],
      "additionalProperties": false
    },
    "build_deliverables": {
      "type": "object",
      "properties": {
        "idempotency_key": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "expected_state_sha256": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        "id": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "content": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "claim": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "dependencies": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/reference"
          },
          "uniqueItems": true
        }
      },
      "required": [
        "idempotency_key",
        "expected_state_sha256",
        "id",
        "title",
        "content",
        "claim",
        "dependencies"
      ],
      "additionalProperties": false
    }
  }
}

SHA-256: 903dd3ebf227ca2b291d21c188517fb67367a0f28775f9df904811e5a4d834d4