{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://unvtd.unece.org/preferential-certificate-of-origin-schema.json",
  "title": "Preferential Certificate of Origin",
  "description": "A document certifying that goods meet the rules of origin requirements of a specific preferential trade agreement, entitling them to reduced or zero tariff rates.",
  "type": "object",
  "required": [
    "@context",
    "type",
    "issuer",
    "credentialSubject",
    "credentialSchema"
  ],
  "properties": {
    "@context": {
      "type": "array",
      "description": "JSON-LD contexts: the W3C Verifiable Credentials v2 context, followed by this document's context.",
      "const": [
        "https://www.w3.org/ns/credentials/v2",
        "https://unvtd.unece.org/preferential-certificate-of-origin-context.jsonld"
      ]
    },
    "type": {
      "type": "array",
      "description": "Credential types.",
      "const": [
        "VerifiableCredential",
        "PreferentialCertificateOfOriginCredential"
      ]
    },
    "name": {
      "type": "string",
      "description": "Human-readable name of the credential, for display.",
      "example": "Preferential Certificate of Origin"
    },
    "credentialSchema": {
      "type": "object",
      "description": "Reference to the credential schema for validation",
      "properties": {
        "id": {
          "type": "string",
          "format": "uri",
          "const": "https://unvtd.unece.org/preferential-certificate-of-origin-schema.json",
          "description": "Public location of the schema"
        },
        "type": {
          "type": "string",
          "const": "JsonSchema",
          "description": "Schema type identifier"
        }
      },
      "required": [
        "id",
        "type"
      ]
    },
    "id": {
      "type": "string",
      "format": "uri",
      "description": "Unique identifier for the credential",
      "example": "urn:uuid:f7ac82b1-3ee4-5099-9d55-3646c060380g"
    },
    "validFrom": {
      "example": "2025-03-06T10:00:00.000Z",
      "type": "string",
      "format": "date-time",
      "description": "Credential validity start date"
    },
    "validUntil": {
      "example": "2026-03-06T10:00:00.000Z",
      "type": "string",
      "format": "date-time",
      "description": "Date until which this credential is valid."
    },
    "issuer": {
      "description": "Identifier of the competent authority issuing the preferential certificate of origin (e.g., DID)",
      "type": "string",
      "format": "uri",
      "example": "did:web:chamberofcommerce.example.com"
    },
    "credentialSubject": {
      "description": "Preferential certificate of origin details",
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Type of the business document.",
          "const": "PreferentialCertificateOfOrigin"
        },
        "certificateNumber": {
          "example": "PCOO-2025-AU-001234",
          "type": "string",
          "description": "Reference number to identify a certificate of origin."
        },
        "goodsDeclarationNumber": {
          "example": "GD-2025-AU-009876",
          "type": "string",
          "description": "Reference number, assigned or accepted by Customs, to identify a goods declaration."
        },
        "issueDate": {
          "example": "2025-03-08T00:00:00Z",
          "type": "string",
          "format": "date-time",
          "description": "Date that a document was issued and when appropriate, signed or otherwise authenticated."
        },
        "tradeAgreement": {
          "example": "Australia-United States Free Trade Agreement (AUSFTA)",
          "type": "string",
          "description": "Name of the preferential trade agreement under which origin preference is claimed."
        },
        "exporter": {
          "description": "Party who makes, or on whose behalf the export declaration is made, and who is the owner of the goods or has similar rights of disposal over them at the time when the declaration is accepted.",
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "default": "Party",
              "enum": [
                "Party"
              ]
            },
            "id": {
              "example": "did:web:surfpro.example.com",
              "type": "string",
              "format": "uri",
              "description": "A unique party identifier."
            },
            "name": {
              "example": "SurfPro Manufacturing Inc.",
              "type": "string",
              "description": "Trade party name."
            },
            "postalAddress": {
              "description": "The postal address of the party.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "default": "Address",
                  "enum": [
                    "Address"
                  ]
                },
                "streetAddress": {
                  "example": "150 Industrial Drive",
                  "type": "string",
                  "description": "The street component of the address"
                },
                "addressLocality": {
                  "example": "Gold Coast",
                  "type": "string",
                  "description": "The city component of the address"
                },
                "addressRegion": {
                  "example": "QLD",
                  "type": "string",
                  "description": "The state component of the address"
                },
                "postalCode": {
                  "example": "4217",
                  "type": "string",
                  "description": "Postal code"
                },
                "addressCountry": {
                  "example": "AU",
                  "type": "string",
                  "description": "Country."
                }
              }
            }
          }
        },
        "importer": {
          "description": "Party who makes - or on whose behalf a Customs clearing agent or other authorised person makes - an import declaration.",
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "default": "Party",
              "enum": [
                "Party"
              ]
            },
            "id": {
              "example": "did:web:waveridersupplies.example.com",
              "type": "string",
              "format": "uri",
              "description": "A unique party identifier."
            },
            "name": {
              "example": "Wave Rider Supplies, Inc",
              "type": "string",
              "description": "Trade party name."
            },
            "postalAddress": {
              "description": "The postal address of the party.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "default": "Address",
                  "enum": [
                    "Address"
                  ]
                },
                "streetAddress": {
                  "example": "210 Ocean Boulevard",
                  "type": "string",
                  "description": "The street component of the address"
                },
                "addressLocality": {
                  "example": "Los Angeles",
                  "type": "string",
                  "description": "The city component of the address"
                },
                "addressRegion": {
                  "example": "CA",
                  "type": "string",
                  "description": "The state component of the address"
                },
                "postalCode": {
                  "example": "90001",
                  "type": "string",
                  "description": "Postal code"
                },
                "addressCountry": {
                  "example": "US",
                  "type": "string",
                  "description": "Country."
                }
              }
            }
          }
        },
        "consignee": {
          "description": "Party to which goods are consigned.",
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "default": "Party",
              "enum": [
                "Party"
              ]
            },
            "id": {
              "example": "did:web:waveridersupplies.example.com",
              "type": "string",
              "format": "uri",
              "description": "A unique party identifier."
            },
            "name": {
              "example": "Wave Rider Supplies, Inc",
              "type": "string",
              "description": "Trade party name."
            },
            "postalAddress": {
              "description": "The postal address of the party.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "default": "Address",
                  "enum": [
                    "Address"
                  ]
                },
                "streetAddress": {
                  "example": "210 Ocean Boulevard",
                  "type": "string",
                  "description": "The street component of the address"
                },
                "addressLocality": {
                  "example": "Los Angeles",
                  "type": "string",
                  "description": "The city component of the address"
                },
                "addressRegion": {
                  "example": "CA",
                  "type": "string",
                  "description": "The state component of the address"
                },
                "postalCode": {
                  "example": "90001",
                  "type": "string",
                  "description": "Postal code"
                },
                "addressCountry": {
                  "example": "US",
                  "type": "string",
                  "description": "Country."
                }
              }
            }
          }
        },
        "consignor": {
          "description": "Party consigning goods as stipulated in the transport contract by the party ordering transport.",
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "default": "Party",
              "enum": [
                "Party"
              ]
            },
            "id": {
              "example": "did:web:surfpro.example.com",
              "type": "string",
              "format": "uri",
              "description": "A unique party identifier."
            },
            "name": {
              "example": "SurfPro Manufacturing Inc.",
              "type": "string",
              "description": "Trade party name."
            },
            "postalAddress": {
              "description": "The postal address of the party.",
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "default": "Address",
                  "enum": [
                    "Address"
                  ]
                },
                "streetAddress": {
                  "example": "150 Industrial Drive",
                  "type": "string",
                  "description": "The street component of the address"
                },
                "addressLocality": {
                  "example": "Gold Coast",
                  "type": "string",
                  "description": "The city component of the address"
                },
                "addressRegion": {
                  "example": "QLD",
                  "type": "string",
                  "description": "The state component of the address"
                },
                "postalCode": {
                  "example": "4217",
                  "type": "string",
                  "description": "Postal code"
                },
                "addressCountry": {
                  "example": "AU",
                  "type": "string",
                  "description": "Country."
                }
              }
            }
          }
        },
        "placeOfIssue": {
          "description": "Location where a document was issued and when appropriate, signed or otherwise authenticated.",
          "type": "object",
          "properties": {
            "addressLocality": {
              "example": "Barton",
              "type": "string",
              "description": "City where issued"
            },
            "addressRegion": {
              "example": "ACT",
              "type": "string",
              "description": "State where issued"
            },
            "addressCountry": {
              "example": "AU",
              "type": "string",
              "description": "Country where issued"
            }
          }
        },
        "placeOfDeparture": {
          "description": "Name of the port, airport or other type of location from which a means of transport is scheduled to depart or has departed.",
          "type": "object",
          "properties": {
            "name": {
              "example": "Port of Brisbane",
              "type": "string",
              "description": "Location name"
            },
            "addressLocality": {
              "example": "Brisbane",
              "type": "string",
              "description": "City"
            },
            "addressRegion": {
              "example": "QLD",
              "type": "string",
              "description": "State"
            },
            "addressCountry": {
              "example": "AU",
              "type": "string",
              "description": "Country"
            },
            "unLocode": {
              "example": "https://service.unece.org/trade/locode/au.htm#AUBNE",
              "type": "string",
              "format": "uri",
              "description": "UN/LOCODE identifier"
            }
          }
        },
        "originCountry": {
          "description": "Name of the country in which the goods have been produced or manufactured, according to criteria laid down for the application of preferential treatment.",
          "type": "object",
          "properties": {
            "addressCountry": {
              "example": "AU",
              "type": "string",
              "description": "ISO country code"
            },
            "name": {
              "example": "Australia",
              "type": "string",
              "description": "Country name"
            }
          }
        },
        "destinationCountry": {
          "description": "Country to which a consignment of goods is to be or has been delivered.",
          "type": "object",
          "properties": {
            "addressCountry": {
              "example": "US",
              "type": "string",
              "description": "ISO country code"
            },
            "name": {
              "example": "United States of America",
              "type": "string",
              "description": "Country name"
            }
          }
        },
        "transportContractNumber": {
          "example": "BKG123456789",
          "type": "string",
          "description": "Reference number to identify a document evidencing a transport contract."
        },
        "invoiceNumber": {
          "example": "INV-2025-031-001",
          "type": "string",
          "description": "Reference number to identify an invoice."
        },
        "contractNumber": {
          "example": "CTR-2025-SURF-001",
          "type": "string",
          "description": "Identifier of a contract concluded between parties."
        },
        "issuingAuthority": {
          "description": "Name, signature and seal of the party issuing the preferential certificate of origin.",
          "type": "object",
          "properties": {
            "name": {
              "example": "Australian Chamber of Commerce and Industry",
              "type": "string",
              "description": "Name of the issuing authority."
            },
            "streetAddress": {
              "example": "24 Brisbane Avenue",
              "type": "string",
              "description": "Street address."
            },
            "addressLocality": {
              "example": "Barton",
              "type": "string",
              "description": "City."
            },
            "addressRegion": {
              "example": "ACT",
              "type": "string",
              "description": "State."
            },
            "addressCountry": {
              "example": "AU",
              "type": "string",
              "description": "Country."
            }
          }
        },
        "competentAuthority": {
          "description": "Name, address, national seal/stamp and country of the management or competent authority overseeing origin certification.",
          "type": "object",
          "properties": {
            "name": {
              "example": "Department of Foreign Affairs and Trade",
              "type": "string",
              "description": "Name of the competent authority."
            },
            "addressCountry": {
              "example": "AU",
              "type": "string",
              "description": "Country of the competent authority."
            }
          }
        },
        "numberOfPackages": {
          "example": 18,
          "type": "number",
          "description": "Total number of packages in the consignment."
        },
        "certification": {
          "example": "The undersigned hereby certifies, to the best of our knowledge and belief, that the goods listed in this certificate originate in Australia and meet the rules of origin requirements of the Australia-United States Free Trade Agreement",
          "type": "string",
          "description": "Text of official certification."
        },
        "authentication": {
          "example": "Certified and stamped by the Australian Chamber of Commerce and Industry",
          "type": "string",
          "description": "Proof that a document has been authenticated."
        },
        "goods": {
          "description": "Goods covered by the preferential certificate of origin",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "description": {
                "example": "Professional Longboard - Ocean Series, 9'6\" length",
                "type": "string",
                "description": "Plain language description of the nature of a goods item."
              },
              "hsCode": {
                "example": "950630",
                "type": "string",
                "description": "Code specifying a type of goods for Customs purposes."
              },
              "originCriteria": {
                "example": "WO",
                "type": "string",
                "description": "Code identifying the rule of origin criterion satisfied for this goods item under the applicable trade agreement (e.g. WO = Wholly Obtained, PE = Produced Exclusively from originating materials, PSR = Product Specific Rule)."
              },
              "quantity": {
                "description": "Number of units",
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "default": "Quantity",
                    "enum": [
                      "Quantity"
                    ]
                  },
                  "amount": {
                    "example": 25,
                    "type": "number",
                    "description": "Quantity amount"
                  },
                  "unit": {
                    "example": "Units",
                    "type": "string",
                    "description": "Unit of measure"
                  }
                }
              },
              "netWeight": {
                "description": "Total net weight of the goods.",
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "default": "Quantity",
                    "enum": [
                      "Quantity"
                    ]
                  },
                  "amount": {
                    "example": 187.5,
                    "type": "number",
                    "format": "float",
                    "description": "Weight amount"
                  },
                  "unit": {
                    "example": "KGS",
                    "type": "string",
                    "description": "Weight unit"
                  }
                }
              },
              "grossWeight": {
                "description": "Total gross weight including packaging.",
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "default": "Quantity",
                    "enum": [
                      "Quantity"
                    ]
                  },
                  "amount": {
                    "example": 200,
                    "type": "number",
                    "format": "float",
                    "description": "Weight amount"
                  },
                  "unit": {
                    "example": "KGS",
                    "type": "string",
                    "description": "Weight unit"
                  }
                }
              },
              "value": {
                "description": "Value of the goods",
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "default": "MonetaryAmount",
                    "enum": [
                      "MonetaryAmount"
                    ]
                  },
                  "amount": {
                    "example": 18750,
                    "type": "number",
                    "format": "float",
                    "description": "Monetary amount"
                  },
                  "currency": {
                    "example": "USD",
                    "type": "string",
                    "description": "Currency code"
                  }
                }
              },
              "countryOfOrigin": {
                "example": "AU",
                "type": "string",
                "description": "Country where the goods were produced or manufactured."
              }
            },
            "description": "A specific goods item covered by the preferential certificate of origin."
          }
        }
      },
      "required": [
        "type",
        "certificateNumber",
        "goodsDeclarationNumber",
        "issueDate",
        "tradeAgreement",
        "exporter",
        "originCountry",
        "issuingAuthority",
        "competentAuthority",
        "numberOfPackages",
        "goods"
      ],
      "additionalProperties": true
    }
  },
  "additionalProperties": true
}
