← Files YCloud Developer KitARCHIVED FILE

references/generated-project-coverage.schema.json

8.19 KB · Oct 2, 2026 · 00:32 UTC

↓ Download file

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://ycloud.com/schemas/generated-project-coverage.schema.json",
  "title": "YCloud generated-project evidence graph",
  "type": "object",
  "additionalProperties": false,
  "required": ["schemaVersion", "baselineProfile", "adapterProfile", "operations", "scenarios"],
  "properties": {
    "schemaVersion": {"const": 2},
    "baselineProfile": {"type": "string", "minLength": 1},
    "adapterProfile": {"const": "typescript-fastify-vanilla-v1"},
    "operations": {"type": "array", "items": {"$ref": "#/$defs/operationEvidence"}},
    "scenarios": {"type": "array", "items": {"$ref": "#/$defs/scenarioEvidence"}}
  },
  "$defs": {
    "evidenceId": {"type": "string", "minLength": 1, "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"},
    "identifier": {"type": "string", "pattern": "^[A-Za-z_$][A-Za-z0-9_$]*$"},
    "safeRelativePath": {
      "type": "string",
      "minLength": 1,
      "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$)).+$"
    },
    "handler": {
      "oneOf": [
        {"type": "object", "additionalProperties": false, "required": ["kind", "symbol"], "properties": {"kind": {"const": "named"}, "symbol": {"$ref": "#/$defs/identifier"}}},
        {"type": "object", "additionalProperties": false, "required": ["kind"], "properties": {"kind": {"const": "inline"}}}
      ]
    },
    "backendEvidence": {
      "oneOf": [
        {
          "type": "object", "additionalProperties": false,
          "required": ["id", "kind", "path", "method", "route", "handler", "provider"],
          "properties": {
            "id": {"$ref": "#/$defs/evidenceId"}, "kind": {"const": "fastify-route-provider-call"},
            "path": {"$ref": "#/$defs/safeRelativePath"}, "method": {"enum": ["GET", "POST", "PUT", "PATCH", "DELETE"]},
            "route": {"type": "string", "pattern": "^/"}, "handler": {"$ref": "#/$defs/handler"},
            "provider": {"type": "object", "additionalProperties": false, "required": ["path", "symbol", "requestSymbol"], "properties": {"path": {"$ref": "#/$defs/safeRelativePath"}, "symbol": {"$ref": "#/$defs/identifier"}, "requestSymbol": {"$ref": "#/$defs/identifier"}}}
          }
        },
        {
          "type": "object", "additionalProperties": false,
          "required": ["id", "kind", "path", "symbol", "requestSymbol", "headerName"],
          "properties": {"id": {"$ref": "#/$defs/evidenceId"}, "kind": {"const": "trusted-server-api-key-injection"}, "path": {"$ref": "#/$defs/safeRelativePath"}, "symbol": {"$ref": "#/$defs/identifier"}, "requestSymbol": {"$ref": "#/$defs/identifier"}, "headerName": {"const": "X-API-Key"}}
        },
        {
          "type": "object", "additionalProperties": false,
          "required": ["id", "kind", "path", "method", "route", "handler", "verifier"],
          "properties": {"id": {"$ref": "#/$defs/evidenceId"}, "kind": {"const": "fastify-webhook-receiver"}, "path": {"$ref": "#/$defs/safeRelativePath"}, "method": {"const": "POST"}, "route": {"type": "string", "pattern": "^/"}, "handler": {"$ref": "#/$defs/handler"}, "verifier": {"type": "object", "additionalProperties": false, "required": ["path", "symbol"], "properties": {"path": {"$ref": "#/$defs/safeRelativePath"}, "symbol": {"$ref": "#/$defs/identifier"}}}}
        }
      ]
    },
    "uiEvidence": {"oneOf": [
      {"type": "object", "additionalProperties": false, "required": ["id", "kind", "path", "formId", "backendEvidenceId"], "properties": {"id": {"$ref": "#/$defs/evidenceId"}, "kind": {"const": "html-form-action"}, "path": {"$ref": "#/$defs/safeRelativePath"}, "formId": {"type": "string", "minLength": 1}, "backendEvidenceId": {"$ref": "#/$defs/evidenceId"}}},
      {"type": "object", "additionalProperties": false, "required": ["id", "kind", "path", "observerId", "backendEvidenceId"], "properties": {"id": {"$ref": "#/$defs/evidenceId"}, "kind": {"const": "html-receiver-observer"}, "path": {"$ref": "#/$defs/safeRelativePath"}, "observerId": {"type": "string", "minLength": 1}, "backendEvidenceId": {"$ref": "#/$defs/evidenceId"}}}
    ]},
    "testEvidence": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["id", "kind", "path", "testName", "targetEvidenceId", "appSymbol"],
          "properties": {
            "id": {"$ref": "#/$defs/evidenceId"},
            "kind": {"const": "fastify-inject-test"},
            "path": {"$ref": "#/$defs/safeRelativePath"},
            "testName": {"type": "string", "minLength": 1},
            "targetEvidenceId": {"$ref": "#/$defs/evidenceId"},
            "appSymbol": {"$ref": "#/$defs/identifier"},
            "expectedProviderRequest": {
              "type": "object",
              "additionalProperties": false,
              "required": ["method", "path", "contractDigest", "requestBodyPresent", "captureSymbol"],
              "properties": {
                "method": {"enum": ["GET", "POST", "PUT", "PATCH", "DELETE"]},
                "path": {"type": "string", "pattern": "^/"},
                "contractDigest": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
                "requestBodyPresent": {"type": "boolean"},
                "bodyFixtureJson": {"type": "string", "minLength": 1},
                "captureSymbol": {"$ref": "#/$defs/identifier"}
              }
            },
            "expectedProviderResponse": {
              "type": "object",
              "additionalProperties": false,
              "required": ["statusCode", "bodyPresent"],
              "properties": {
                "statusCode": {"type": "string", "pattern": "^2[0-9]{2}$"},
                "contentType": {"type": "string", "minLength": 1},
                "bodyPresent": {"type": "boolean"},
                "bodyFixtureJson": {"type": "string", "minLength": 1}
              }
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["id", "kind", "path", "testName", "targetEvidenceId", "documentSymbol"],
          "properties": {
            "id": {"$ref": "#/$defs/evidenceId"},
            "kind": {"const": "html-form-test"},
            "path": {"$ref": "#/$defs/safeRelativePath"},
            "testName": {"type": "string", "minLength": 1},
            "targetEvidenceId": {"$ref": "#/$defs/evidenceId"},
            "documentSymbol": {"$ref": "#/$defs/identifier"}
          }
        }
        ,{
          "type": "object", "additionalProperties": false,
          "required": ["id", "kind", "path", "testName", "targetEvidenceId", "targetSymbol"],
          "properties": {"id": {"$ref": "#/$defs/evidenceId"}, "kind": {"const": "typescript-function-test"}, "path": {"$ref": "#/$defs/safeRelativePath"}, "testName": {"type": "string", "minLength": 1}, "targetEvidenceId": {"$ref": "#/$defs/evidenceId"}, "targetSymbol": {"$ref": "#/$defs/identifier"}}
        }
      ]
    },
    "scenarioChain": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "kind", "testEvidenceIds"],
      "properties": {
        "id": {"$ref": "#/$defs/evidenceId"},
        "kind": {"const": "scenario-test-chain"},
        "testEvidenceIds": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {"$ref": "#/$defs/evidenceId"}
        }
      }
    },
    "operationEvidence": {
      "type": "object",
      "additionalProperties": false,
      "required": ["operationId", "evidence"],
      "properties": {
        "operationId": {"type": "string", "minLength": 1},
        "evidence": {
          "type": "object",
          "additionalProperties": false,
          "required": ["backend", "ui", "tests"],
          "properties": {
            "backend": {"type": "array", "items": {"$ref": "#/$defs/backendEvidence"}},
            "ui": {"type": "array", "items": {"$ref": "#/$defs/uiEvidence"}},
            "tests": {"type": "array", "items": {"$ref": "#/$defs/testEvidence"}}
          }
        }
      }
    },
    "scenarioEvidence": {
      "type": "object",
      "additionalProperties": false,
      "required": ["scenarioId", "evidence"],
      "properties": {
        "scenarioId": {"type": "string", "minLength": 1},
        "evidence": {"type": "array", "items": {"$ref": "#/$defs/scenarioChain"}}
      }
    }
  }
}

SHA-256: e56eb455937b8cf198d441122dde7fe62426849d4b9bf605756c04508dddde40