{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.ishare.eu/v3/trusted-participant/schema.json",
  "title": "Verifiable Credential: Trusted Participant Credential",
  "description": "Verifiable Credential envelope for an iSHARE participant, combining iSHARE framework compliance and dataspace participation information under credentialSubject. This schema describes the unsigned VC payload that can be secured and carried as a W3C EnvelopedVerifiableCredential.",
  "type": "object",
  "properties": {
    "@context": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "prefixItems": [
        {
          "const": "https://www.w3.org/ns/credentials/v2"
        },
        {
          "const": "https://schemas.ishare.eu/v3/trusted-participant/context.jsonld"
        }
      ]
    },
    "id": {
      "type": "string"
    },
    "type": {
      "type": "array",
      "contains": {
        "const": "VerifiableCredential"
      },
      "allOf": [
        {
          "contains": {
            "const": "TrustedParticipantCredential"
          }
        }
      ],
      "minItems": 2,
      "uniqueItems": true
    },
    "issuer": {
      "$ref": "https://schemas.ishare.eu/v3/framework-compliance/schema.json#/$defs/Issuer"
    },
    "validFrom": {
      "type": "string",
      "format": "date-time"
    },
    "validUntil": {
      "type": "string",
      "format": "date-time"
    },
    "credentialStatus": {
      "$ref": "https://schemas.ishare.eu/v3/common/credential-status.json#/$defs/CredentialStatus"
    },
    "credentialSubject": {
      "$ref": "#/$defs/TrustedParticipantSubject"
    }
  },
  "required": [
    "@context",
    "type",
    "issuer",
    "credentialStatus",
    "credentialSubject"
  ],
  "additionalProperties": false,
  "$defs": {
    "TrustedParticipantSubject": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "alsoKnownAs": {
          "type": "array",
          "items": {
            "$ref": "https://schemas.ishare.eu/v3/framework-compliance/schema.json#/$defs/IdentifierAlias"
          },
          "minItems": 1
        },
        "frameworks": {
          "type": "array",
          "items": {
            "$ref": "https://schemas.ishare.eu/v3/framework-compliance/schema.json#/$defs/Framework"
          },
          "minItems": 1
        },
        "dataspaces": {
          "type": "array",
          "items": {
            "$ref": "https://schemas.ishare.eu/v3/dataspace-participant/schema.json#/$defs/Dataspace"
          },
          "minItems": 1
        }
      },
      "required": [
        "id",
        "name"
      ],
      "additionalProperties": false
    }
  }
}
