{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schema.govfresh.com/v1/procurement/party.schema.json",
  "title": "Party",
  "description": "A non-government organization taking part in a contracting process - a tenderer, a supplier, a funder - with the roles it plays. Government participants are NOT duplicated here: the buyer and procuring entity are _core GovernmentOrganizations, referenced directly from the process, so one body never becomes two entities. A scheme-qualified identifier is required: a supplier known only by name cannot be joined across contracts or to a company register, and unjoinable supplier data is the main reason procurement transparency fails in practice.",
  "standards": [
    "ocds"
  ],
  "type": "object",
  "properties": {
    "@id": {
      "type": "string",
      "format": "iri",
      "description": "This party's own dereferenceable identifier."
    },
    "@type": {
      "const": "Organization",
      "description": "Always `Organization`, a real schema.org type - `Party` is schemaGov's name for this role, not a minted type schema.org needs to know about."
    },
    "name": {
      "type": "string",
      "description": "The party's legal or trading name."
    },
    "identifier": {
      "type": "array",
      "items": {
        "$ref": "../_core/identifier.schema.json"
      },
      "minItems": 1,
      "description": "At least one. Use an org-id.guide prefix for the national company register (org-id:GB-COH, org-id:US-EIN) or an LEI. This is the same pattern OCDS uses, so it crosswalks without transformation."
    },
    "role": {
      "type": "array",
      "description": "termCode(s) from the `PartyRole` code list.",
      "items": {
        "type": "string",
        "enum": [
          "buyer",
          "procuringEntity",
          "supplier",
          "tenderer",
          "payer",
          "payee",
          "reviewBody",
          "funder"
        ]
      },
      "minItems": 1
    },
    "address": {
      "type": "object",
      "description": "schema:PostalAddress for this party."
    },
    "contactPoint": {
      "type": "object",
      "description": "How to reach this party."
    },
    "url": {
      "type": "string",
      "format": "iri",
      "description": "The party's own website, where one exists."
    }
  },
  "required": [
    "@id",
    "@type",
    "name",
    "identifier",
    "role"
  ],
  "additionalProperties": true
}
