{
  "$id": "https://schema.nfh.global/Performance/v2.0",
  "x-iri": "https://schema.nfh.global/Performance/v2.0",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Generalized execution/performance unit. This is where downstream objects bind: - Fulfillment-like details (where/when/how) - Tracking handles - Support touchpoints - Status updates  A minimal envelope that carries identity, status, and a performanceAttributes bag that holds the concrete domain-specific delivery schema.  Domain specification authors can attach rich context and types via `performanceAttributes`.  For example, Hyperlocal delivery details (pickup/delivery locations, items shipped, agent, etc.) are placed inside performanceAttributes using a well-known domain schema such as HyperlocalDelivery. Use the generic Attributes schema when no well-known domain schema exists.",
  "title": "Fulfillment",
  "x-tags": [
    "common",
    "fulfillment"
  ],
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for this fulfillment record."
    },
    "status": {
      "$ref": "https://schema.nfh.global/Descriptor/v2.1/schema.json",
      "description": "Current status of this fulfillment, expressed as a Descriptor. Use Descriptor.code for machine-readable status values."
    },
    "commitmentIds": {
      "type": "array",
      "items": {
        "$ref": "#/properties/id"
      }
    },
    "performanceAttributes": {
      "description": "Domain-specific extension attributes for this fulfillment. Use beckn:HyperlocalDelivery (aligned with schema:ParcelDelivery) for hyperlocal physical delivery. Use the generic Attributes schema for other fulfillment types where no well-known domain schema exists.",
      "$ref": "https://schema.nfh.global/Attributes/v2.0/schema.json"
    }
  },
  "additionalProperties": false
}
