← Files VeraARCHIVED FILE

modules/presenza-digitale-studio/schemas/sites_delivery.schema.json

4.29 KB · Oct 4, 2026 · 12:28 UTC

↓ Download file

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://mparanza.com/schemas/presenza-digitale-studio/sites-delivery-v2.json",
  "title": "Sites publication receipt",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "provider",
    "kind",
    "destination",
    "project_id",
    "commit_sha",
    "archive_path",
    "archive_sha256",
    "binding_member",
    "site_payload_member",
    "site_payload_sha256",
    "site_version_id",
    "deployment_id",
    "deployment_status",
    "access_level",
    "access_approved_by_user",
    "deployed_url",
    "browser_review",
    "site_digest",
    "validation_digest",
    "quality_assessment_digest",
    "reviews_digest",
    "package_digest"
  ],
  "properties": {
    "schema_version": {"const": 2},
    "provider": {"const": "sites"},
    "kind": {"enum": ["preview", "release"]},
    "destination": {"type": "string", "minLength": 1},
    "project_id": {"type": "string", "minLength": 1},
    "commit_sha": {"type": "string", "pattern": "^[0-9a-f]{40,64}$"},
    "archive_path": {"type": "string", "minLength": 1},
    "archive_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "binding_member": {"type": "string", "pattern": "(^|/)dist/\\.openai/vera-release-binding\\.json$"},
    "site_payload_member": {"type": "string", "pattern": "(^|/)dist/\\.openai/vera-site-package\\.zip$"},
    "site_payload_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "site_version_id": {"type": "string", "minLength": 1},
    "deployment_id": {"type": "string", "minLength": 1},
    "deployment_status": {"const": "succeeded"},
    "access_level": {"enum": ["private", "shared", "public"]},
    "access_approved_by_user": {"type": "boolean"},
    "deployed_url": {"type": "string", "format": "uri", "pattern": "^https://"},
    "browser_review": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "reviewed_url",
        "deployment_id",
        "viewports",
        "console_issues"
      ],
      "properties": {
        "reviewed_url": {"type": "string", "format": "uri", "pattern": "^https://"},
        "deployment_id": {"type": "string", "minLength": 1},
        "viewports": {
          "type": "array",
          "minItems": 2,
          "uniqueItems": true,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name",
              "width",
              "height",
              "full_page_reviewed",
              "screenshot_path",
              "screenshot_sha256",
              "issues"
            ],
            "properties": {
              "name": {"type": "string", "minLength": 1},
              "width": {"type": "integer", "minimum": 280},
              "height": {"type": "integer", "minimum": 400},
              "full_page_reviewed": {"const": true},
              "screenshot_path": {
                "type": "string",
                "pattern": "^reviews/sites/.+\\.(png|jpe?g)$"
              },
              "screenshot_sha256": {
                "type": "string",
                "pattern": "^[0-9a-f]{64}$"
              },
              "issues": {"type": "array", "maxItems": 0}
            }
          },
          "allOf": [
            {"contains": {"properties": {"width": {"maximum": 600}}}},
            {"contains": {"properties": {"width": {"minimum": 1024}}}}
          ]
        },
        "console_issues": {"type": "array", "maxItems": 0}
      }
    },
    "site_digest": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "validation_digest": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "quality_assessment_digest": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "reviews_digest": {
      "oneOf": [
        {"type": "null"},
        {"type": "string", "pattern": "^[0-9a-f]{64}$"}
      ]
    },
    "package_digest": {"type": "string", "pattern": "^[0-9a-f]{64}$"}
  },
  "allOf": [
    {
      "if": {"properties": {"access_level": {"enum": ["shared", "public"]}}},
      "then": {"properties": {"access_approved_by_user": {"const": true}}}
    },
    {
      "if": {"properties": {"kind": {"const": "release"}}},
      "then": {"properties": {"reviews_digest": {"type": "string"}}},
      "else": {"properties": {"reviews_digest": {"type": "null"}}}
    }
  ]
}

SHA-256: fa7e55c67e1138dd91d2f2c7a6656405c0c304affa963e889638c54b6a5c667c