# description
A Dispute is a formal disagreement raised by one node (the claimant) against another (the respondent) over any piece of information published on the network. Anything can be disputed — a Contract, an Invoice, a Settlement, a Performance, a Consideration, contract terms, or any other published object. A dispute itemises one or more cases, each backed by a reason and supporting evidence, and tracks its lifecycle from unresolved through to resolved or withdrawn. Resolution is a tri-party process: the claimant and respondent agree on a neutral online dispute resolution (ODR) provider. A Dispute is exchanged over the dispute / on_dispute endpoints, wrapped in a DisputeAction. It may be created, updated, status-tracked, and cancelled (withdrawn).

# properties.id.description
Stable dispute identifier (system id). While the chances of a UUID collision are rare, a combination of claimant identity and this id is recommended for global uniqueness.

# properties.raisedAt.description
Timestamp at which the dispute was raised.

# properties.descriptor.description
Describes the nature of the dispute in human / agent readable terms.

# properties.status.description
The lifecycle state of the dispute expressed as a Descriptor whose code MUST be one of the standard dispute state values. WITHDRAWN represents a dispute cancelled by the claimant.

# properties.respondent.description
The party against whom the dispute is raised.

# properties.odrProvider.description
The agreed online dispute resolution (ODR) provider — a neutral third party (e.g. a legal services organisation or the network facilitator organisation) that helps resolve the dispute. Dispute resolution is a tri-party arrangement; the claimant and respondent must agree on this provider, which may happen after the dispute is raised. The descriptor.code identifies the resolution role played.

# properties.odrProvider.allOf[].properties.descriptor.properties.code.description
The dispute-resolution role played by this provider.

# properties.supportCases.description
The support cases (tickets) that underpin this dispute. A dispute MUST NOT be raised until at least one unresolved support case is attached — i.e. the parties are expected to have attempted support resolution first. Enforced by the contains constraint requiring at least one element whose status.code is UNRESOLVED.

# properties.cases.description
The disputed matters that make up this dispute. Each entry pairs a case — the disputed subject with its reason and supporting evidence — with its own resolution status. Any piece of information published on the network can be a case subject.

# properties.cases.items.properties.case.description
A single disputed matter: what is being disputed, why, and the evidence backing it.

# properties.cases.items.properties.case.properties.subject.description
The piece of information under dispute, carried as a JSON-LD object whose @type identifies what it is — e.g. a Contract, Invoice, Settlement, Performance, Consideration, or ContractTerms. The object may be embedded inline or referenced by URL within the container.

# properties.cases.items.properties.case.properties.reason.description
The reason this subject is disputed. The code categorises the reason; the name / shortDesc / longDesc carry the narrative. Required — a dispute must be backed by a reason.

# properties.cases.items.properties.case.properties.evidence.description
Supporting evidence and proofs backing the dispute. Each item is a Document that may be machine-readable (e.g. a verifiable credential, via its standard/security fields) or human-readable — images, audio recordings, videos, chat histories, emails, or artifacts shared outside the network — distinguished by mimeType. A case without any attached proof, even circumstantial, may be rejected at the respondent's discretion.

# properties.cases.items.properties.status.description
The resolution state of this individual case.

# properties.disputeAttributes.description
Domain-specific extension attributes for this dispute.