openapi: 3.1.1 info: title: NackDiscretionary version: 2.0.0 description: Container schemas fetched from beckn.yaml. This cannot be extended as it is a reserved schema in beckn protocol. Any additional properties added to this schema can only be made using its *Attributes property license: name: CC-BY-NC-SA 4.0 International contact: name: Beckn Labs url: https://beckn.io components: schemas: NackDiscretionary: x-iri: https://schema.beckn.io/NackDiscretionary/v2.0 description: 'The synchronous rejection body returned when a responding NP exercises its protocol-level agency to decline engagement for policy-governed reasons — insufficient caller trust, capacity limits, scheduled inactivity, or general refusal — without an underlying exception in the received message. The caller MUST NOT expect an on_* callback. NackDiscretionary appears as the response body for 403 responses on action endpoints. The responding NP produces it; the calling NP MUST treat it as a terminal response for the current request. NFOs MAY restrict or prohibit discretionary NACKs for specific actions, domain contexts, or transaction lifecycle stages per CON-008-20 in NFH-008. Relationship: Extends the Ack schema with status constrained to NACK and adds an error field whose code MUST be one of the POL_ENGAGEMENT_* discretionary refusal codes.' type: object required: - message properties: message: type: object required: - status - messageId - error properties: status: type: string const: NACK messageId: type: string format: uuid error: $ref: https://schema.beckn.io/Error/v2.0/attributes.yaml#/components/schemas/Error