openapi: 3.1.1
info:
  title: Catalog
  version: 2.1.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:
    Catalog:
      x-iri: https://schema.nfh.global/Catalog/v2.1
      description: 'Catalog schema for Beckn Protocol v2.0.0


        This schema is part of the Long Term Support of Beckn Protocol V2.0 API specification
        and MUST NOT be extended. Any domain-specific extension must use the property
        of this schema which is of type Attribute.'
      title: Catalog
      type: object
      properties:
        bppId:
          description: BPP (Beckn Protocol Provider) identifier that publishes this
            catalog
          type: string
          example: bpp.example.com
        bppUri:
          description: Beckn Protocol API base URL of the BPP
          type: string
          format: uri
        publishDirectives:
          deprecated: true
          description: Directives controlling publish behavior for master/regular
            catalog flow. Deprecated and planned for removal in a future release.
          type: object
          additionalProperties: false
          required:
          - catalogType
          properties:
            catalogType:
              type: string
              enum:
              - master
              - regular
              description: master = canonical source catalog; regular = seller/provider
                extension catalog
            updateMode:
              type: string
              enum:
              - FULL
              - MERGE
              default: FULL
              description: Used for regular updates. FULL replaces overlay; MERGE
                applies JSON Merge Patch semantics.
            resourceDirectives:
              description: Optional per-resource extension mapping for regular catalogs
              type: array
              items:
                type: object
                additionalProperties: false
                required:
                - resourceId
                - extends
                properties:
                  resourceId:
                    type: string
                    description: Seller/provider resource identifier in this catalog
                  extends:
                    type: object
                    additionalProperties: false
                    required:
                    - masterResourceId
                    properties:
                      masterResourceId:
                        type: string
                        description: Canonical master resource identifier being extended
        descriptor:
          description: Human / Agent-readable description of this catalog
          allOf:
          - $ref: https://schema.nfh.global/Descriptor/v2.1/attributes.yaml#/components/schemas/Descriptor
        id:
          description: Unique identifier for the catalog
          type: string
          example: catalog-electronics-001
        isActive:
          description: Whether the catalog is active
          type: boolean
          default: true
        offers:
          description: Array of offers optionally linked to resources
          type: array
          items:
            $ref: https://schema.nfh.global/Offer/v2.1/attributes.yaml#/components/schemas/Offer
        resources:
          description: Array of generalized Resource entities in this catalog (new
            model)
          type: array
          items:
            $ref: https://schema.nfh.global/Resource/v2.0/attributes.yaml#/components/schemas/Resource
        provider:
          $ref: https://schema.nfh.global/Provider/v2.1/attributes.yaml#/components/schemas/Provider
        validity:
          description: The time period during which this catalog is valid
          $ref: https://schema.nfh.global/TimePeriod/v2.1/attributes.yaml#/components/schemas/TimePeriod
      required:
      - id
      - descriptor
      - provider
      anyOf:
      - required:
        - resources
      - required:
        - offers
      additionalProperties: false
      x-lts: true
