{
  "formatVersion": 2,
  "category": "credential-family-definition",
  "fixture": {
    "id": "example.employee",
    "version": "1.0.0",
    "name": "Employee credential",
    "description": "Identifies an employee within an organization.",
    "schema": {
      "id": "urn:example:employee",
      "version": "1.0.0",
      "name": "Employee credential schema",
      "description": "Claims issued to an employee.",
      "credentialTypes": ["VerifiableCredential", "EmployeeCredential"],
      "claims": [
        {
          "id": "employeeId",
          "path": ["credentialSubject", "employeeId"],
          "disclosure": "selective",
          "required": true,
          "valueType": "string"
        },
        {
          "id": "department",
          "path": ["credentialSubject", "department"],
          "disclosure": "public",
          "required": false
        }
      ]
    }
  },
  "positive": [
    {
      "id": "model-valid-credential-family-definition",
      "patches": []
    },
    {
      "id": "model-valid-omitted-optional-metadata",
      "patches": [
        { "op": "remove", "path": "/name" },
        { "op": "remove", "path": "/description" },
        { "op": "remove", "path": "/schema/name" },
        { "op": "remove", "path": "/schema/description" }
      ]
    },
    {
      "id": "model-valid-prerelease-and-build-versions",
      "patches": [
        { "path": "/version", "value": "1.2.3-rc.1+build.7" },
        { "path": "/schema/version", "value": "2.0.0+schema.4" }
      ]
    },
    {
      "id": "model-valid-committed-disclosure",
      "patches": [
        {
          "path": "/schema/claims/0/disclosure",
          "value": "committed"
        }
      ]
    },
    {
      "id": "model-valid-predicate-only-disclosure",
      "patches": [
        {
          "path": "/schema/claims/0/disclosure",
          "value": "predicate-only"
        }
      ]
    },
    {
      "id": "model-valid-empty-claims",
      "patches": [{ "path": "/schema/claims", "value": [] }]
    }
  ],
  "negative": [
    {
      "id": "model-reject-null-definition",
      "input": null,
      "error": { "code": "INVALID_DESCRIPTOR", "path": "definition" }
    },
    {
      "id": "model-reject-array-definition",
      "input": [],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "definition" }
    },
    {
      "id": "model-reject-null-schema",
      "patches": [{ "path": "/schema", "value": null }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "schema" }
    },
    {
      "id": "model-reject-array-schema",
      "patches": [{ "path": "/schema", "value": [] }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "schema" }
    },
    {
      "id": "model-reject-untrimmed-family-id",
      "patches": [{ "path": "/id", "value": " example.employee" }],
      "error": { "code": "INVALID_IDENTIFIER", "path": "id" }
    },
    {
      "id": "model-reject-malformed-family-version",
      "patches": [{ "path": "/version", "value": "1.0" }],
      "error": { "code": "INVALID_VERSION", "path": "version" }
    },
    {
      "id": "model-reject-empty-family-name",
      "patches": [{ "path": "/name", "value": "" }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "name" }
    },
    {
      "id": "model-reject-untrimmed-family-name",
      "patches": [{ "path": "/name", "value": " Employee credential" }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "name" }
    },
    {
      "id": "model-reject-non-string-family-name",
      "patches": [{ "path": "/name", "value": 7 }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "name" }
    },
    {
      "id": "model-reject-empty-family-description",
      "patches": [{ "path": "/description", "value": "" }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "description" }
    },
    {
      "id": "model-reject-untrimmed-family-description",
      "patches": [{ "path": "/description", "value": "Description " }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "description" }
    },
    {
      "id": "model-reject-non-string-family-description",
      "patches": [{ "path": "/description", "value": false }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "description" }
    },
    {
      "id": "model-reject-empty-schema-id",
      "patches": [{ "path": "/schema/id", "value": "" }],
      "error": { "code": "INVALID_IDENTIFIER", "path": "schema.id" }
    },
    {
      "id": "model-reject-leading-zero-schema-version",
      "patches": [{ "path": "/schema/version", "value": "01.0.0" }],
      "error": { "code": "INVALID_VERSION", "path": "schema.version" }
    },
    {
      "id": "model-reject-empty-schema-name",
      "patches": [{ "path": "/schema/name", "value": "" }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "schema.name" }
    },
    {
      "id": "model-reject-untrimmed-schema-name",
      "patches": [{ "path": "/schema/name", "value": " Schema name" }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "schema.name" }
    },
    {
      "id": "model-reject-non-string-schema-name",
      "patches": [{ "path": "/schema/name", "value": {} }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "schema.name" }
    },
    {
      "id": "model-reject-empty-schema-description",
      "patches": [{ "path": "/schema/description", "value": "" }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "schema.description" }
    },
    {
      "id": "model-reject-untrimmed-schema-description",
      "patches": [
        { "path": "/schema/description", "value": "Description " }
      ],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "schema.description" }
    },
    {
      "id": "model-reject-non-string-schema-description",
      "patches": [{ "path": "/schema/description", "value": 7 }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "schema.description" }
    },
    {
      "id": "model-reject-empty-credential-types",
      "patches": [{ "path": "/schema/credentialTypes", "value": [] }],
      "error": {
        "code": "INVALID_DESCRIPTOR",
        "path": "schema.credentialTypes"
      }
    },
    {
      "id": "model-reject-invalid-credential-type",
      "patches": [
        { "path": "/schema/credentialTypes/1", "value": " Credential" }
      ],
      "error": {
        "code": "INVALID_IDENTIFIER",
        "path": "schema.credentialTypes[1]"
      }
    },
    {
      "id": "model-reject-non-array-claims",
      "patches": [{ "path": "/schema/claims", "value": {} }],
      "error": { "code": "INVALID_DESCRIPTOR", "path": "schema.claims" }
    },
    {
      "id": "model-reject-null-claim",
      "patches": [{ "path": "/schema/claims/0", "value": null }],
      "error": {
        "code": "INVALID_DESCRIPTOR",
        "path": "schema.claims[0]"
      }
    },
    {
      "id": "model-reject-array-claim",
      "patches": [{ "path": "/schema/claims/0", "value": [] }],
      "error": {
        "code": "INVALID_DESCRIPTOR",
        "path": "schema.claims[0]"
      }
    },
    {
      "id": "model-reject-empty-claim-id",
      "patches": [{ "path": "/schema/claims/0/id", "value": "" }],
      "error": {
        "code": "INVALID_IDENTIFIER",
        "path": "schema.claims[0].id"
      }
    },
    {
      "id": "model-reject-duplicate-claim-id",
      "patches": [
        { "path": "/schema/claims/1/id", "value": "employeeId" }
      ],
      "error": { "code": "DUPLICATE_ID", "path": "schema.claims[1].id" }
    },
    {
      "id": "model-reject-empty-claim-path",
      "patches": [{ "path": "/schema/claims/0/path", "value": [] }],
      "error": {
        "code": "INVALID_DESCRIPTOR",
        "path": "schema.claims[0].path"
      }
    },
    {
      "id": "model-reject-invalid-claim-path-segment",
      "patches": [
        { "path": "/schema/claims/0/path/1", "value": " employeeId" }
      ],
      "error": {
        "code": "INVALID_IDENTIFIER",
        "path": "schema.claims[0].path[1]"
      }
    },
    {
      "id": "model-reject-unknown-disclosure",
      "patches": [
        { "path": "/schema/claims/0/disclosure", "value": "private" }
      ],
      "error": {
        "code": "INVALID_DESCRIPTOR",
        "path": "schema.claims[0].disclosure"
      }
    },
    {
      "id": "model-reject-non-boolean-required-flag",
      "patches": [
        { "path": "/schema/claims/0/required", "value": "true" }
      ],
      "error": {
        "code": "INVALID_DESCRIPTOR",
        "path": "schema.claims[0].required"
      }
    },
    {
      "id": "model-reject-empty-value-type",
      "patches": [{ "path": "/schema/claims/0/valueType", "value": "" }],
      "error": {
        "code": "INVALID_IDENTIFIER",
        "path": "schema.claims[0].valueType"
      }
    }
  ]
}
