{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "additionalProperties": true,
  "properties": {
    "type": {
      "type": "array",
      "readOnly": true,
      "default": [
        "DigitalCorporateRecord",
        "VerifiableCredential"
      ],
      "items": {
        "type": "string"
      },
      "allOf": [
        {
          "contains": {
            "const": "DigitalCorporateRecord",
            "minContains": 1
          }
        },
        {
          "contains": {
            "const": "VerifiableCredential",
            "minContains": 1
          }
        }
      ]
    },
    "@context": {
      "example": [
        "https://www.w3.org/ns/credentials/v2",
        "https://vocabulary.uncefact.org/untp/0.8.0/context/"
      ],
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "A list of JSON-LD context URIs that define the semantic meaning of properties within the credential. ",
      "readOnly": true,
      "prefixItems": [
        {
          "const": "https://www.w3.org/ns/credentials/v2",
          "type": "string"
        },
        {
          "const": "https://vocabulary.uncefact.org/untp/0.8.0/context/",
          "type": "string"
        }
      ],
      "default": [
        "https://www.w3.org/ns/credentials/v2",
        "https://vocabulary.uncefact.org/untp/0.8.0/context/"
      ],
      "minItems": 2,
      "uniqueItems": true
    },
    "id": {
      "example": "https://example-company.com/credentials/2a423366-a0d6-4855-ba65-2e0c926d09b0",
      "type": "string",
      "format": "uri",
      "description": "A unique identifier (URI) assigned to this verifiable credential."
    },
    "issuer": {
      "$ref": "#/$defs/IssuerParty",
      "description": "The organisation that is the issuer of this VC. Note that the \"id\" property MUST be a W3C DID.  Other identifiers such as tax registration numbers can be listed in the \"otherIdentifiers\" property."
    },
    "validFrom": {
      "example": "2024-03-15T12:00:00Z",
      "type": "string",
      "format": "date-time",
      "description": "The date and time from which the credential is valid."
    },
    "validUntil": {
      "example": "2034-03-15T12:00:00Z",
      "type": "string",
      "format": "date-time",
      "description": "The expiry date (if applicable) of this verifiable credential."
    },
    "name": {
      "example": "Digital Corporate Record - Sample Copper Holdings Pty Ltd",
      "type": "string",
      "description": "Name of this verifiable credential instance (eg the title of a digital product passport, facility record, lifecycle event, or conformity credential)"
    },
    "credentialStatus": {
      "oneOf": [
        {
          "$ref": "#/$defs/BitstringStatusListEntry"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BitstringStatusListEntry"
          },
          "minItems": 1
        }
      ],
      "description": "A W3C VCDM2.0 compliant object, or array of such objects, containing credential status information."
    },
    "renderMethod": {
      "oneOf": [
        {
          "$ref": "#/$defs/RenderMethod"
        },
        {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/RenderMethod"
          }
        }
      ],
      "description": "Human rendering information for this credential. A single render method or an array of them. UNTP recommends SuiteRenderMethod but accepts any render method type, so each render method only needs a type, and a SuiteRenderMethod also needs a renderSuite."
    },
    "credentialSubject": {
      "$ref": "#/$defs/CorporateRecord",
      "description": "The legal entity that is the subject of this digital corporate record."
    },
    "issuingSoftware": {
      "$ref": "#/$defs/IssuingSoftware",
      "description": "Optional metadata identifying the software product (and its vendor) that issued this credential. Useful for vendor traceability and conformity testing. Issuers MAY omit this property."
    }
  },
  "description": "A W3C Verifiable Credential that carries a Digital Corporate Record - a verifiable description of a legal entity, the facilities it operates, the entities it owns, and the claims it makes.",
  "required": [
    "@context",
    "id",
    "issuer",
    "validFrom",
    "name",
    "credentialSubject"
  ],
  "$defs": {
    "IssuerParty": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "type": {
          "type": "array",
          "readOnly": true,
          "default": [
            "Party"
          ],
          "items": {
            "type": "string"
          },
          "allOf": [
            {
              "contains": {
                "const": "Party",
                "minContains": 1
              }
            }
          ]
        },
        "id": {
          "example": "did:web:identifiers.example-company.com:12345",
          "type": "string",
          "format": "uri",
          "description": "The W3C DID of the issuer - should be a did:web or did:webvh"
        },
        "name": {
          "example": "Example Company Pty Ltd",
          "type": "string",
          "description": "The name of the issuer person or organisation"
        },
        "alsoKnownAs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "array",
                "readOnly": true,
                "default": [
                  "Party"
                ],
                "items": {
                  "type": "string"
                },
                "allOf": [
                  {
                    "contains": {
                      "const": "Party",
                      "minContains": 1
                    }
                  }
                ]
              },
              "id": {
                "example": "https://sample-business-register.gov/123456789",
                "type": "string",
                "format": "uri",
                "description": "Globally unique identifier of this party. Typically represented as a URI identifierScheme/Identifier URI"
              },
              "name": {
                "example": "Sample Company Ltd",
                "type": "string",
                "description": "Legal registered name of this party."
              },
              "registeredId": {
                "example": 90664869327,
                "type": "string",
                "description": "The registration number (alphanumeric) of the Party within the register. Unique within the register."
              }
            },
            "required": [
              "id",
              "name"
            ]
          },
          "description": "An optional list of other registered identifiers for this credential issuer "
        }
      },
      "description": "The issuer party (person or organisation) of a verifiable credential.",
      "required": [
        "id",
        "name"
      ]
    },
    "BitstringStatusListEntry": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "BitstringStatusListEntry"
          ],
          "example": "BitstringStatusListEntry",
          "description": "The type of status list - must be set to \"The type property MUST be BitstringStatusListEntry.\""
        },
        "id": {
          "example": "https://example-cab.com/credentials/status/3#94567",
          "type": "string",
          "format": "uri",
          "description": "optional identifier of this status list entry."
        },
        "statusPurpose": {
          "type": "string",
          "examples": [
            "refresh",
            "revocation",
            "suspension",
            "message"
          ],
          "description": "Status purpose drawn from a standard list but extensible as per w3c bitstring status list specification."
        },
        "statusListIndex": {
          "example": "94567",
          "type": "string",
          "pattern": "^[0-9]+$",
          "description": "The statusListIndex property MUST be an arbitrary size integer greater than or equal to 0, expressed as a string in base 10. The value identifies the position of the status of the verifiable credential."
        },
        "statusListCredential": {
          "example": "https://example-cab.com/credentials/status/4",
          "type": "string",
          "format": "uri",
          "description": "The statusListCredential property MUST be a URL to a verifiable credential. When the URL is dereferenced, the resulting verifiable credential MUST have type property that includes the BitstringStatusListCredential value."
        },
        "statusSize": {
          "type": "integer",
          "minimum": 1
        },
        "statusMessage": {
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "object",
            "required": [
              "status",
              "message"
            ],
            "properties": {
              "status": {
                "type": "string",
                "pattern": "^0x[0-9a-fA-F]+$"
              },
              "message": {
                "type": "string"
              }
            }
          }
        },
        "statusReference": {
          "oneOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uri"
              }
            }
          ]
        }
      },
      "description": "A privacy-preserving, space-efficient, and high-performance mechanism for publishing status information such as suspension or revocation of Verifiable Credentials through use of bitstrings.  See https://www.w3.org/TR/vc-bitstring-status-list/ for full details.",
      "required": [
        "type",
        "statusPurpose",
        "statusListIndex",
        "statusListCredential"
      ],
      "allOf": [
        {
          "if": {
            "type": "object",
            "required": [
              "statusSize"
            ],
            "properties": {
              "statusSize": {
                "type": "integer",
                "minimum": 2
              }
            }
          },
          "then": {
            "type": "object",
            "required": [
              "statusMessage"
            ],
            "properties": {
              "statusMessage": {
                "type": "array"
              }
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "statusSize": {
                "type": "integer",
                "const": 1
              }
            }
          },
          "then": {
            "type": "object",
            "properties": {
              "statusMessage": {
                "type": "array",
                "maxItems": 2
              }
            }
          }
        }
      ]
    },
    "RenderMethod": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "minItems": 1,
              "items": {
                "type": "string"
              }
            }
          ],
          "description": "The type of render method, for example SuiteRenderMethod."
        }
      },
      "required": [
        "type"
      ],
      "if": {
        "properties": {
          "type": {
            "const": "SuiteRenderMethod"
          }
        },
        "required": [
          "type"
        ]
      },
      "then": {
        "$ref": "#/$defs/SuiteRenderMethod"
      },
      "description": "A render method as reserved by the W3C Verifiable Credentials Data Model v2.0. Any render method type is accepted. A render method whose type is SuiteRenderMethod is also checked against SuiteRenderMethod."
    },
    "SuiteRenderMethod": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "type": {
          "type": "string",
          "example": "SuiteRenderMethod",
          "description": "The type of render method. The W3C Working Draft of 6 October 2026 uses SuiteRenderMethod."
        },
        "id": {
          "example": "https://example-company.com/templates/dpp/1.0.0-render-method.json",
          "description": "Optional URL that dereferences to a hosted render method document."
        },
        "renderSuite": {
          "example": "html",
          "type": "string",
          "description": "Identifies the render suite, the set of algorithms used to produce the rendering. UNTP recommends html (an HTML fragment rendered in a sandbox). W3C also defines summary (a JSON template for wallet displays) and static (a pre-rendered payload such as an image, PDF or NFC message). Renderers ignore render methods whose suite they do not support."
        },
        "name": {
          "example": "Digital Product Passport - web view",
          "description": "Human-readable name that helps a person choose between render methods."
        },
        "description": {
          "description": "Human-readable description of when this render method is useful."
        },
        "renderProperty": {
          "example": [
            "/issuer/name",
            "/credentialSubject/name"
          ],
          "description": "JSON pointers (RFC 6901) to the credential properties exposed to the template. If omitted, the whole credential is exposed."
        },
        "template": {
          "description": "The template used to render the credential: a URL (a data: URL embeds the template inline), or an object with the template's id, mediaType and digestMultibase."
        },
        "deliveryMode": {
          "example": "nfc",
          "description": "The intended delivery method for a static render suite payload, for example nfc for transmission over NFC. Used by the static render suite only."
        },
        "digestMultibase": {
          "example": "uEiAsZMszMc45xiwf_IEpEQXL0gg4Fy3y_ngstaxUTC501Q",
          "description": "A multibase-encoded multihash (base64url with the 'u' prefix, SHA-256) of the render method document referenced by id. Renderers check the fetched content against this value, so a pinned render method cannot be changed without reissuing the credential. See https://www.w3.org/TR/2026/WD-vc-render-method-20261006/#suiterendermethod"
        },
        "outputPreference": {
          "description": "Optional hints about the preferred output, such as accessMode, mediaType and style."
        }
      },
      "description": "A render method as defined by the W3C Verifiable Credential Rendering Methods Working Draft of 6 October 2026. Only type and renderSuite are checked here; the W3C specification defines the remaining properties. See https://www.w3.org/TR/2026/WD-vc-render-method-20261006/#suiterendermethod",
      "required": [
        "type",
        "renderSuite"
      ]
    },
    "IssuingSoftware": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "example": "https://example.com/.well-known/untp/software/yourproduct/2026.04.1",
          "type": "string",
          "format": "uri",
          "description": "A resolvable identifier for the specific version of the software product that issued this credential."
        },
        "name": {
          "example": "Your Product Name",
          "type": "string",
          "description": "The name of the software product that issued this credential."
        },
        "version": {
          "example": "2026.04.1",
          "type": "string",
          "description": "The version of the software product that issued this credential."
        },
        "vendor": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "id": {
              "example": "did:web:example.com",
              "type": "string",
              "format": "uri",
              "description": "The decentralised identifier (DID) or other resolvable identifier of the software vendor."
            },
            "name": {
              "example": "Your Vendor Name",
              "type": "string",
              "description": "The name of the software vendor."
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "The vendor of the software product that issued this credential."
        }
      },
      "required": [
        "id",
        "name",
        "version",
        "vendor"
      ],
      "description": "Optional metadata identifying the software product (and its vendor) that issued the parent credential. When present, all listed sub-properties MUST be populated; when absent, the credential is still valid (verifiers MUST treat the property as optional)."
    },
    "CorporateRecord": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": "array",
          "readOnly": true,
          "default": [
            "Party"
          ],
          "items": {
            "type": "string"
          },
          "allOf": [
            {
              "contains": {
                "const": "Party",
                "minContains": 1
              }
            }
          ]
        },
        "id": {
          "example": "https://sample-business-register.gov/123456789",
          "type": "string",
          "format": "uri",
          "description": "Globally unique identifier of this party. Typically represented as a URI identifierScheme/Identifier URI"
        },
        "name": {
          "example": "Sample Company Ltd",
          "type": "string",
          "description": "Legal registered name of this party."
        },
        "description": {
          "type": "string",
          "description": "Description of the party including function and other names."
        },
        "registeredId": {
          "example": 90664869327,
          "type": "string",
          "description": "The registration number (alphanumeric) of the Party within the register. Unique within the register."
        },
        "idScheme": {
          "type": "object",
          "properties": {
            "type": {
              "type": "array",
              "readOnly": true,
              "default": [
                "IdentifierScheme"
              ],
              "items": {
                "type": "string"
              },
              "allOf": [
                {
                  "contains": {
                    "const": "IdentifierScheme",
                    "minContains": 1
                  }
                }
              ]
            },
            "id": {
              "type": "string",
              "format": "uri",
              "description": "The URI of this identifier scheme"
            },
            "name": {
              "example": "Global Identifier Scheme Name",
              "type": "string",
              "description": "The name of the identifier scheme. "
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "The identifier scheme of the party.  Typically a national business register or a global scheme such as GLEIF. "
        },
        "registrationCountry": {
          "$ref": "#/$defs/Country",
          "description": "the country in which this organisation is registered - using ISO-3166 code and name."
        },
        "partyAddress": {
          "$ref": "#/$defs/Address",
          "description": "The address of the party"
        },
        "organisationWebsite": {
          "example": "https://example-company.com",
          "type": "string",
          "format": "uri",
          "description": "Website for this organisation"
        },
        "industryCategory": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Classification"
          },
          "description": "The industry categories for this organisation.  Recommend use of UNCPC as the category scheme. for example - unstats.un.org/isic/1030"
        },
        "alsoKnownAs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "array",
                "readOnly": true,
                "default": [
                  "Party"
                ],
                "items": {
                  "type": "string"
                },
                "allOf": [
                  {
                    "contains": {
                      "const": "Party",
                      "minContains": 1
                    }
                  }
                ]
              },
              "id": {
                "example": "https://sample-business-register.gov/123456789",
                "type": "string",
                "format": "uri",
                "description": "Globally unique identifier of this party. Typically represented as a URI identifierScheme/Identifier URI"
              },
              "name": {
                "example": "Sample Company Ltd",
                "type": "string",
                "description": "Legal registered name of this party."
              },
              "registeredId": {
                "example": 90664869327,
                "type": "string",
                "description": "The registration number (alphanumeric) of the Party within the register. Unique within the register."
              },
              "idScheme": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "array",
                    "readOnly": true,
                    "default": [
                      "IdentifierScheme"
                    ],
                    "items": {
                      "type": "string"
                    },
                    "allOf": [
                      {
                        "contains": {
                          "const": "IdentifierScheme",
                          "minContains": 1
                        }
                      }
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uri",
                    "description": "The URI of this identifier scheme"
                  },
                  "name": {
                    "example": "Global Identifier Scheme Name",
                    "type": "string",
                    "description": "The name of the identifier scheme. "
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "description": "The identifier scheme of the party.  Typically a national business register or a global scheme such as GLEIF. "
              }
            },
            "required": [
              "id",
              "name"
            ]
          },
          "description": "Additional registered identifiers for this entity in other schemes - for example a tax or VAT number, a DUNS number, or a GLN - each carrying the scheme that issued it."
        },
        "foundingDate": {
          "type": "string",
          "format": "date",
          "example": "1998-07-14",
          "description": "The date on which this entity was incorporated or first registered."
        },
        "recognitionScope": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/RecognitionScope"
          },
          "description": "What the register recognises this entity as, and under what mandate - its legal form, class or licence category, the standards or schemes the recognition rests on, the actions it covers, and any territorial limit. Each entry references a definition the register itself publishes. This is the same property, with the same shape and meaning, as `recognitionScope` on the Digital Identity Anchor, so a verifier reads legal form the same way whether or not an anchor is available. Replaces the v0.8.0 `registrationScope`, which was a bare URI array and conflated these aspects."
        },
        "immediateParent": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "type": {
              "type": "array",
              "readOnly": true,
              "default": [
                "Party"
              ],
              "items": {
                "type": "string"
              },
              "allOf": [
                {
                  "contains": {
                    "const": "Party",
                    "minContains": 1
                  }
                }
              ]
            },
            "id": {
              "type": "string",
              "format": "uri",
              "example": "did:web:sample-holdings.example.com",
              "description": "Resolvable identifier of the related entity - a DID where the entity is a UNTP participant, otherwise any resolvable URI."
            },
            "name": {
              "type": "string",
              "example": "Sample Copper Holdings Pty Ltd",
              "description": "Registered name of the related entity."
            },
            "registeredId": {
              "type": "string",
              "example": "90664869327",
              "description": "Registered identifier of the related entity within its identifier scheme."
            },
            "idScheme": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "array",
                  "readOnly": true,
                  "default": [
                    "IdentifierScheme"
                  ],
                  "items": {
                    "type": "string"
                  },
                  "allOf": [
                    {
                      "contains": {
                        "const": "IdentifierScheme",
                        "minContains": 1
                      }
                    }
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uri",
                  "description": "The URI of this identifier scheme"
                },
                "name": {
                  "example": "Global Identifier Scheme Name",
                  "type": "string",
                  "description": "The name of the identifier scheme. "
                }
              },
              "required": [
                "id",
                "name"
              ],
              "description": "The identifier scheme of the party.  Typically a national business register or a global scheme such as GLEIF. "
            }
          },
          "required": [
            "id"
          ],
          "description": "The entity that directly controls or owns this entity."
        },
        "ultimateParent": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "type": {
              "type": "array",
              "readOnly": true,
              "default": [
                "Party"
              ],
              "items": {
                "type": "string"
              },
              "allOf": [
                {
                  "contains": {
                    "const": "Party",
                    "minContains": 1
                  }
                }
              ]
            },
            "id": {
              "type": "string",
              "format": "uri",
              "example": "did:web:sample-holdings.example.com",
              "description": "Resolvable identifier of the related entity - a DID where the entity is a UNTP participant, otherwise any resolvable URI."
            },
            "name": {
              "type": "string",
              "example": "Sample Copper Holdings Pty Ltd",
              "description": "Registered name of the related entity."
            },
            "registeredId": {
              "type": "string",
              "example": "90664869327",
              "description": "Registered identifier of the related entity within its identifier scheme."
            },
            "idScheme": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "array",
                  "readOnly": true,
                  "default": [
                    "IdentifierScheme"
                  ],
                  "items": {
                    "type": "string"
                  },
                  "allOf": [
                    {
                      "contains": {
                        "const": "IdentifierScheme",
                        "minContains": 1
                      }
                    }
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uri",
                  "description": "The URI of this identifier scheme"
                },
                "name": {
                  "example": "Global Identifier Scheme Name",
                  "type": "string",
                  "description": "The name of the identifier scheme. "
                }
              },
              "required": [
                "id",
                "name"
              ],
              "description": "The identifier scheme of the party.  Typically a national business register or a global scheme such as GLEIF. "
            }
          },
          "required": [
            "id"
          ],
          "description": "The entity at the top of this entity's ownership chain."
        },
        "subsidiaryRecords": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "type": "array",
                "readOnly": true,
                "default": [
                  "Party"
                ],
                "items": {
                  "type": "string"
                },
                "allOf": [
                  {
                    "contains": {
                      "const": "Party",
                      "minContains": 1
                    }
                  }
                ]
              },
              "id": {
                "type": "string",
                "format": "uri",
                "example": "did:web:sample-holdings.example.com",
                "description": "Resolvable identifier of the related entity - a DID where the entity is a UNTP participant, otherwise any resolvable URI."
              },
              "name": {
                "type": "string",
                "example": "Sample Copper Holdings Pty Ltd",
                "description": "Registered name of the related entity."
              },
              "registeredId": {
                "type": "string",
                "example": "90664869327",
                "description": "Registered identifier of the related entity within its identifier scheme."
              },
              "idScheme": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "array",
                    "readOnly": true,
                    "default": [
                      "IdentifierScheme"
                    ],
                    "items": {
                      "type": "string"
                    },
                    "allOf": [
                      {
                        "contains": {
                          "const": "IdentifierScheme",
                          "minContains": 1
                        }
                      }
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uri",
                    "description": "The URI of this identifier scheme"
                  },
                  "name": {
                    "example": "Global Identifier Scheme Name",
                    "type": "string",
                    "description": "The name of the identifier scheme. "
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "description": "The identifier scheme of the party.  Typically a national business register or a global scheme such as GLEIF. "
              }
            },
            "required": [
              "id"
            ]
          },
          "description": "Entities controlled or owned by this entity, each optionally linking to its own Digital Corporate Record so that a corporate structure can be traversed."
        },
        "relatedFacility": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "type": "array",
                "readOnly": true,
                "default": [
                  "Facility"
                ],
                "items": {
                  "type": "string"
                },
                "allOf": [
                  {
                    "contains": {
                      "const": "Facility",
                      "minContains": 1
                    }
                  }
                ]
              },
              "id": {
                "type": "string",
                "format": "uri",
                "example": "https://sample-refinery.example.com/facilities/fac-002",
                "description": "Resolvable identifier of the facility, as used in its Digital Facility Record."
              },
              "name": {
                "type": "string",
                "example": "Sample Copper Refinery",
                "description": "Name of the facility."
              },
              "registeredId": {
                "type": "string",
                "example": "JP-44-SM-0021",
                "description": "Registered identifier of the facility within its identifier scheme."
              },
              "idScheme": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "array",
                    "readOnly": true,
                    "default": [
                      "IdentifierScheme"
                    ],
                    "items": {
                      "type": "string"
                    },
                    "allOf": [
                      {
                        "contains": {
                          "const": "IdentifierScheme",
                          "minContains": 1
                        }
                      }
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uri",
                    "description": "The URI of this identifier scheme"
                  },
                  "name": {
                    "example": "Global Identifier Scheme Name",
                    "type": "string",
                    "description": "The name of the identifier scheme. "
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "description": "The identifier scheme of the party.  Typically a national business register or a global scheme such as GLEIF. "
              }
            },
            "required": [
              "id"
            ]
          },
          "description": "Facilities this entity owns or operates, each identified as it is in its Digital Facility Record."
        },
        "performanceClaim": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Claim"
          },
          "description": "Claims made at the corporate level - for example a group-wide emissions or labour standards claim - against a defined criterion, with links to supporting evidence and conformity credentials."
        }
      },
      "description": "A legal entity - a company, holding company, or operating subsidiary - described as the subject of a Digital Corporate Record. The subject is a UNTP Party profiled as an organisation, so the entity can be linked to the facilities it operates, the entities it owns, and the claims it makes.",
      "required": [
        "id",
        "name",
        "registeredId",
        "idScheme",
        "registrationCountry"
      ]
    },
    "Country": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "countryCode": {
          "type": "string",
          "x-external-enumeration": "https://vocabulary.uncefact.org/CountryId#",
          "description": "ISO 3166 country code\n\n    This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL:  https://vocabulary.uncefact.org/CountryId#\n    "
        },
        "countryName": {
          "type": "string",
          "description": "Country Name as defined in ISO 3166"
        }
      },
      "description": "Country Code and Name from ISO 3166",
      "required": [
        "countryCode"
      ]
    },
    "Classification": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": "array",
          "readOnly": true,
          "default": [
            "Classification"
          ],
          "items": {
            "type": "string"
          },
          "allOf": [
            {
              "contains": {
                "const": "Classification",
                "minContains": 1
              }
            }
          ]
        },
        "id": {
          "type": "string",
          "format": "uri",
          "example": "https://unstats.un.org/unsd/classifications/Econ/cpc/code/46410",
          "description": "OPTIONAL resolvable URI for this classification value within its scheme."
        },
        "code": {
          "example": "46410",
          "type": "string",
          "description": "classification code within the scheme"
        },
        "name": {
          "example": "Primary cells and primary batteries",
          "type": "string",
          "description": "Name of the classification represented by the code"
        },
        "definition": {
          "type": "string",
          "description": "A rich definition of this classification code."
        },
        "idScheme": {
          "$ref": "#/$defs/IdentifierScheme",
          "description": "The classification scheme this code is drawn from."
        }
      },
      "description": "A classification scheme and code / name representing a category value for a product, entity, or facility.",
      "required": [
        "code",
        "name",
        "idScheme"
      ]
    },
    "Address": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "streetAddress": {
          "example": "level 11, 15 London Circuit",
          "type": "string",
          "description": "the street address as an unstructured string."
        },
        "postalCode": {
          "example": 2601,
          "type": "string",
          "description": "The postal code or zip code for this address."
        },
        "addressLocality": {
          "example": "Acton",
          "type": "string",
          "description": "The city, suburb or township name."
        },
        "addressRegion": {
          "example": "ACT",
          "type": "string",
          "description": "The state or territory or province"
        },
        "addressCountry": {
          "$ref": "#/$defs/Country",
          "description": "The address country as an ISO-3166 two letter country code and name."
        }
      },
      "description": "A postal address.",
      "required": [
        "streetAddress",
        "postalCode",
        "addressLocality",
        "addressRegion",
        "addressCountry"
      ]
    },
    "Link": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "linkURL": {
          "example": "https://files.example-certifier.com/1234567.json",
          "type": "string",
          "format": "uri",
          "description": "The URL of the target resource.  "
        },
        "linkName": {
          "type": "string",
          "description": "Display name for this link."
        },
        "digestMultibase": {
          "example": "abc123-example-digest-invalid",
          "type": "string",
          "description": "An optional multi-base encoded digest to ensure the content of the link has not changed. See https://www.w3.org/TR/vc-data-integrity/#resource-integrity for more information."
        },
        "mediaType": {
          "example": "application/ld+json",
          "type": "string",
          "description": "The media type of the target resource."
        },
        "linkType": {
          "example": "https://test.uncefact.org/vocabulary/link-type/dcc",
          "type": "string",
          "description": "A business classification of the target resource, as a URI drawn from a well-governed vocabulary. Distinct from mediaType, which carries the IANA media type of the target. SHOULD be drawn from a published vocabulary - UNTP's own link types, or an ecosystem vocabulary such as the [GS1 link types](https://ref.gs1.org/voc/?show=linktypes); failing that a type the issuer publishes itself at a dereferenceable URI. An [IANA link relation](https://www.iana.org/assignments/link-relations/link-relations.xhtml) is valid where the link expresses a relationship rather than a document class. UNTP does not mandate a particular vocabulary, but the URI MUST identify a definition a reader can look up.",
          "format": "uri"
        }
      },
      "description": "A structure to provide a URL link plus metadata associated with the link.",
      "required": [
        "linkURL",
        "linkName"
      ]
    },
    "Claim": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "type": {
          "type": "array",
          "readOnly": true,
          "default": [
            "Claim"
          ],
          "items": {
            "type": "string"
          },
          "allOf": [
            {
              "contains": {
                "const": "Claim",
                "minContains": 1
              }
            }
          ]
        },
        "id": {
          "example": "https://sample-company.com/claim/e78dab5d-b6f6-4bc4-a458-7feb039f6cb3",
          "type": "string",
          "format": "uri",
          "description": "Globally unique identifier of this claim. Typically represented as a URI companyURL/claimID URI or a UUID"
        },
        "name": {
          "example": "Sample company Forced Labour claim",
          "type": "string",
          "description": "Name of this claim - typically similar or the same as the referenced criterion name."
        },
        "description": {
          "type": "string",
          "description": "Description of this conformity claim"
        },
        "referenceCriteria": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "array",
                "readOnly": true,
                "default": [
                  "Criterion"
                ],
                "items": {
                  "type": "string"
                },
                "allOf": [
                  {
                    "contains": {
                      "const": "Criterion",
                      "minContains": 1
                    }
                  }
                ]
              },
              "criteriaType": {
                "type": "string",
                "enum": [
                  "scheme-criterion",
                  "scheme-profile",
                  "published-standard",
                  "regulation",
                  "other-published-document"
                ],
                "example": "scheme-criterion",
                "description": "A code for the kind of normative source this reference points at. A criterion is not always drawn from a registered scheme, and scheme-profile indicates a reference to a whole conformity profile rather than to a single criterion."
              },
              "id": {
                "example": "https://vocabulary.sample-scheme.org/criterion/lb/v1.0",
                "type": "string",
                "format": "uri",
                "description": "The identifier of this criterion or set of criteria, typically represented by a URI managed by the owner or publisher of the criteria, such as a SchemeOwner/CriterionID URI."
              },
              "name": {
                "example": "Forced labour assessment criterion",
                "type": "string",
                "description": "Name of this criterion as defined by the publisher."
              },
              "conformityTopic": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#/$defs/ConformityTopic"
                },
                "description": "The UNTP conformity topic that classifies what this criterion is about. Carried by the criterion rather than by the assessment or claim that references it, so that one assessment may reference criteria on different topics."
              },
              "requiredPerformance": {
                "type": "array",
                "items": {
                  "$ref": "#/$defs/Performance"
                },
                "description": "The performance threshold this criterion requires. Optional, because a criterion drawn from a published scheme vocabulary already carries its threshold there; populate it where the scheme or standard owner has not published a fine-grained vocabulary."
              }
            },
            "required": [
              "id",
              "name",
              "criteriaType",
              "conformityTopic"
            ]
          },
          "description": "The criterion against which the claim is made."
        },
        "referenceRegulation": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "array",
                "readOnly": true,
                "default": [
                  "Regulation"
                ],
                "items": {
                  "type": "string"
                },
                "allOf": [
                  {
                    "contains": {
                      "const": "Regulation",
                      "minContains": 1
                    }
                  }
                ]
              },
              "id": {
                "example": "https://regulations.country.gov/ABC-12345",
                "type": "string",
                "format": "uri",
                "description": "Globally unique identifier of this standard. Typically represented as a URI government/regulation URI"
              },
              "name": {
                "example": "Due Diligence Directove",
                "type": "string",
                "description": "Name of this regulation as defined by the regulator."
              }
            },
            "required": [
              "id",
              "name"
            ]
          },
          "description": "List of references to regulation to which conformity is claimed claimed for this product"
        },
        "referenceStandard": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "array",
                "readOnly": true,
                "default": [
                  "Standard"
                ],
                "items": {
                  "type": "string"
                },
                "allOf": [
                  {
                    "contains": {
                      "const": "Standard",
                      "minContains": 1
                    }
                  }
                ]
              },
              "id": {
                "example": "https://sample-standards.org/A1234",
                "type": "string",
                "format": "uri",
                "description": "Globally unique identifier of this standard. Typically represented as a URI issuer/standard URI"
              },
              "name": {
                "example": "Labour rights standard",
                "type": "string",
                "description": "Name for this standard"
              }
            },
            "required": [
              "id",
              "name"
            ]
          },
          "description": "List of references to standards to which conformity is claimed claimed for this product"
        },
        "claimDate": {
          "type": "string",
          "format": "date",
          "description": "That date on which the claimed performance is applicable."
        },
        "applicablePeriod": {
          "$ref": "#/$defs/Period",
          "description": "The applicable reporting period for this facility record."
        },
        "claimedPerformance": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/Performance"
          },
          "description": "The claimed performance level "
        },
        "evidence": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Link"
          },
          "description": "A URI pointing to the evidence supporting the claim. SHOULD be a URL to a UNTP Digital Conformity Credential (DCC)"
        }
      },
      "description": "A performance claim about a product, facility, or organisation that is made against a well defined criterion.",
      "required": [
        "id",
        "name",
        "referenceCriteria",
        "claimDate",
        "claimedPerformance"
      ]
    },
    "Performance": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "metric": {
          "type": "object",
          "properties": {
            "type": {
              "type": "array",
              "readOnly": true,
              "default": [
                "PerformanceMetric"
              ],
              "items": {
                "type": "string"
              },
              "allOf": [
                {
                  "contains": {
                    "const": "PerformanceMetric",
                    "minContains": 1
                  }
                }
              ]
            },
            "id": {
              "example": "https://authority.gov/schemeABC/123456789",
              "type": "string",
              "format": "uri",
              "description": "Globally unique identifier of this reporting metric. "
            },
            "name": {
              "example": "emissions intensity",
              "type": "string",
              "description": "A human readable name for this metric (for example \"water usage per Kg of material\")"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "The metric (eg material emissions intensity CO2e/Kg or percentage of young workers) that is measured."
        },
        "measure": {
          "$ref": "#/$defs/Measure",
          "description": "The measured performance value"
        },
        "score": {
          "$ref": "#/$defs/Score",
          "description": "A performance score (eg \"AA\") drawn from a scoring framework defined by the scheme or criterion."
        },
        "determination": {
          "type": "string",
          "enum": [
            "pass",
            "fail",
            "conditional",
            "indeterminate"
          ],
          "example": "pass",
          "description": "The conformity outcome, from the UN/CEFACT [conformity-determination code list](https://test.uncefact.org/vocabulary/conformity-determination/)."
        },
        "qualitativeFinding": {
          "type": "string",
          "example": "No dangerous chemicals found.",
          "description": "The outcome stated in words, where it does not reduce to a measure, score, classification or determination."
        }
      },
      "description": "A claimed, assessed, or required performance level. The outcome may be stated as a numeric measure, a score from a scheme-defined scale, a determination drawn from the UN/CEFACT conformity-determination code list, or a finding in words. Any one of these is sufficient and they may be combined. When a numeric measure is provided, the metric classifying the measurement is required. When only a score is provided, the scoring framework is discoverable via the conformity scheme or criterion.",
      "dependentRequired": {
        "measure": [
          "metric"
        ]
      }
    },
    "Score": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "code": {
          "type": "string",
          "description": "The coded value for this score (eg \"AAA\")"
        },
        "rank": {
          "type": "integer",
          "description": "The ranking of this score within the scoring framework - using an integer where \"1\" is the highest rank."
        },
        "definition": {
          "type": "string",
          "description": "A description of the meaning of this score."
        }
      },
      "description": "A single score within a scoring framework. ",
      "required": [
        "code"
      ]
    },
    "ConformityTopic": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": "array",
          "readOnly": true,
          "default": [
            "ConformityTopic"
          ],
          "items": {
            "type": "string"
          },
          "allOf": [
            {
              "contains": {
                "const": "ConformityTopic",
                "minContains": 1
              }
            }
          ]
        },
        "id": {
          "type": "string",
          "format": "uri",
          "description": "The unique identifier for this conformity topic"
        },
        "name": {
          "example": "forced-labour",
          "type": "string",
          "description": "The human readable name for this conformity topic."
        },
        "definition": {
          "type": "string",
          "description": "The rich definition of this conformity topic."
        }
      },
      "description": "The UNTP standard classification scheme for conformity topic.  see https://test.uncefact.org/vocabulary/conformity-topics/",
      "required": [
        "id",
        "name"
      ]
    },
    "Measure": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "example": 10,
          "type": "number",
          "description": "The numeric value of the measure"
        },
        "upperTolerance": {
          "type": "number",
          "description": "The upper tolerance associated with this measure expressed in the same units as the measure.  For example value=10, upperTolerance=0.1, unit=KGM would mean that this measure is 10kg + 0.1kg"
        },
        "lowerTolerance": {
          "type": "number",
          "description": "The lower tolerance associated with this measure expressed in the same units as the measure.  For example value=10, lowerTolerance=0.1, unit=KGM would mean that this measure is 10kg - 0.1kg"
        },
        "unit": {
          "type": "string",
          "x-external-enumeration": "https://vocabulary.uncefact.org/UnitMeasureCode#",
          "description": "Unit of measure drawn from the UNECE Rec20 measure code list.\n\n    This is an enumerated value, but the list of valid values are too big, or change too often to include here. You can access the list of allowable values at this URL:  https://vocabulary.uncefact.org/UnitMeasureCode#\n    "
        }
      },
      "description": "The measure class defines a numeric measured value (eg 10) and a coded unit of measure (eg KG).  There is an optional upper and lower tolerance which can be used to specify uncertainty in the measure.  ",
      "required": [
        "value",
        "unit"
      ]
    },
    "Period": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "startDate": {
          "type": "string",
          "format": "date",
          "description": "The period start date"
        },
        "endDate": {
          "type": "string",
          "format": "date",
          "description": "The period end date"
        },
        "periodInformation": {
          "type": "string",
          "description": "Additional information relevant to this reporting period"
        }
      },
      "description": "A period of time, typically a month, quarter or a year, which defines the context boundary for reported facts.",
      "required": [
        "startDate",
        "endDate"
      ]
    },
    "IdentifierScheme": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": "array",
          "readOnly": true,
          "default": [
            "IdentifierScheme"
          ],
          "items": {
            "type": "string"
          },
          "allOf": [
            {
              "contains": {
                "const": "IdentifierScheme",
                "minContains": 1
              }
            }
          ]
        },
        "id": {
          "type": "string",
          "format": "uri",
          "description": "The URI of this identifier scheme"
        },
        "name": {
          "example": "Global Identifier Scheme Name",
          "type": "string",
          "description": "The name of the identifier scheme. "
        }
      },
      "description": "An identifier registration scheme for products, facilities, or organisations. Typically operated by a state, national or global authority.",
      "required": [
        "id",
        "name"
      ]
    },
    "RecognitionScope": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": "array",
          "readOnly": true,
          "default": [
            "RecognitionScope"
          ],
          "items": {
            "type": "string"
          },
          "allOf": [
            {
              "contains": {
                "const": "RecognitionScope",
                "minContains": 1
              }
            }
          ]
        },
        "scopeCode": {
          "type": "string",
          "enum": [
            "legal-form",
            "entity-class",
            "assessed-against",
            "action",
            "territory"
          ],
          "example": "legal-form",
          "description": "OPTIONAL discoverability hint identifying which aspect of the recognition this entry expresses, from the UN/CEFACT [recognition-scope code list](https://test.uncefact.org/vocabulary/recognition-scope/). Omit when no value fits; there is no 'other' value. The `id` remains the authoritative meaning."
        },
        "id": {
          "type": "string",
          "format": "uri",
          "example": "https://abr.business.gov.au/Help/EntityTypeDescription?Id=19",
          "description": "The registrar's own definition of this class, mandate, action or territory, as a resolvable URI. Authority stays with the register; UNTP maintains no list of the world's legal forms."
        },
        "name": {
          "type": "string",
          "example": "Australian Private Company",
          "description": "The value as the register names it, in the register's own language."
        },
        "scheme": {
          "$ref": "#/$defs/IdentifierScheme",
          "description": "OPTIONAL reference to the controlled list this value is drawn from. Useful because one registrar commonly publishes several lists and the value URI alone does not say which."
        },
        "geoBoundary": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Coordinate"
          },
          "description": "The ordered coordinates that define a closed polygon bounding this recognition scope. The first and last coordinates must match, closing the boundary. Only meaningful where the scope is territorial: it bounds what the registrar recognises, such as the area a land title covers or the territory a licence is valid in, rather than where the entity is located."
        }
      },
      "required": [
        "id",
        "name"
      ],
      "description": "One aspect of what a registrar recognises about an entity."
    },
    "Coordinate": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "latitude": {
          "maximum": 90,
          "minimum": -90,
          "example": -33.87,
          "type": "number",
          "description": "latitude: Angular distance north or south of the equator, expressed in decimal degrees.Valid range: −90.0 to +90.0."
        },
        "longitude": {
          "maximum": 180,
          "minimum": -180,
          "example": -151.21,
          "type": "number",
          "description": "longitude: Angular distance east or west of the Prime Meridian, expressed in decimal degrees.Valid range: −180.0 to +180.0."
        }
      },
      "description": "A geographic point defined by latitude and longitude using the WGS84 geodetic coordinate reference system (EPSG:4326). Latitude and longitude are expressed in decimal degrees as floating-point numbers. Coordinates follow the conventional order (latitude, longitude) and represent a point on the Earth’s surface.",
      "required": [
        "latitude",
        "longitude"
      ]
    }
  }
}
