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.nfh.global/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.nfh.global/Error/v2.0/attributes.yaml#/components/schemas/Error
