{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://schema.twindev.org/w3c-did/DidVerifiableCredentialCommon",
    "title": "DidVerifiableCredentialCommon",
    "description": "Common properties shared by all verifiable credential versions.",
    "type": "object",
    "properties": {
        "id": {
            "type": "string",
            "description": "The identifier for the verifiable credential."
        },
        "type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            ],
            "description": "The types of the data stored in the verifiable credential."
        },
        "credentialSubject": {
            "anyOf": [
                {
                    "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
                },
                {
                    "type": "array",
                    "items": {
                        "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
                    }
                }
            ],
            "description": "The data for the verifiable credential."
        },
        "credentialStatus": {
            "anyOf": [
                {
                    "$ref": "https://schema.twindev.org/w3c-did/DidCredentialStatus"
                },
                {
                    "type": "array",
                    "items": {
                        "$ref": "https://schema.twindev.org/w3c-did/DidCredentialStatus"
                    }
                }
            ],
            "description": "Used to discover information about the current status of the\nverifiable credential, such as whether it is suspended or revoked."
        },
        "credentialSchema": {
            "anyOf": [
                {
                    "$ref": "https://schema.twindev.org/w3c-did/DidCredentialSchema"
                },
                {
                    "type": "array",
                    "items": {
                        "$ref": "https://schema.twindev.org/w3c-did/DidCredentialSchema"
                    }
                }
            ],
            "description": "Annotate type definitions or lock them to specific versions of the vocabulary."
        },
        "issuer": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "object",
                    "properties": {
                        "id": {
                            "type": "string"
                        },
                        "name": {
                            "anyOf": [
                                {
                                    "type": "string"
                                },
                                {
                                    "type": "array",
                                    "items": {
                                        "$ref": "https://schema.twindev.org/w3c-did/DidLabel"
                                    }
                                }
                            ]
                        },
                        "description": {
                            "anyOf": [
                                {
                                    "type": "string"
                                },
                                {
                                    "type": "array",
                                    "items": {
                                        "$ref": "https://schema.twindev.org/w3c-did/DidLabel"
                                    }
                                }
                            ]
                        }
                    },
                    "required": [
                        "id"
                    ]
                }
            ],
            "description": "The issuing identity."
        },
        "name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "$ref": "https://schema.twindev.org/w3c-did/DidLabel"
                    }
                }
            ],
            "description": "The name of the credential."
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "$ref": "https://schema.twindev.org/w3c-did/DidLabel"
                    }
                }
            ],
            "description": "The description of the credential."
        },
        "evidence": {
            "anyOf": [
                {
                    "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
                },
                {
                    "type": "array",
                    "items": {
                        "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
                    }
                }
            ],
            "description": "Evidence associated with the Credential."
        },
        "proof": {
            "anyOf": [
                {
                    "$ref": "https://schema.twindev.org/w3c-did/Proof"
                },
                {
                    "type": "array",
                    "items": {
                        "$ref": "https://schema.twindev.org/w3c-did/Proof"
                    }
                }
            ],
            "description": "Proofs that the verifiable credential is valid.\nOptional if a different proof method is used, such as JWT."
        }
    },
    "required": [
        "type"
    ]
}
