naftiko: 1.0.0-alpha2 info: label: fabric Offers — Promotions description: 'fabric Offers — Promotions. 8 operations. Lead operation: Get All Promotions. Self-contained Naftiko capability covering one fabric business surface.' tags: - Fabric - Promotions created: '2026-05-25' modified: '2026-05-25' binds: - namespace: env keys: FABRIC_ACCESS_TOKEN: FABRIC_ACCESS_TOKEN capability: consumes: - type: http namespace: offers-promotions baseUri: https://api.fabric.inc/v3 description: fabric Offers — Promotions consumed operations from fabric-offers-promotions-openapi.yml. resources: - name: promotions path: /promotions operations: - name: get-all-promotions method: GET description: 'Get All Promotions' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-promotion method: POST description: 'Create Promotion' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: promotions-promotionid path: /promotions/{promotionId} operations: - name: update-a-specific-promotion method: PUT description: 'Update a Specific Promotion' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: promotionId in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: get-a-specific-promotion method: GET description: 'Get a Specific Promotion' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: promotionId in: path type: string required: true - name: delete-a-specific-promotion method: DELETE description: 'Delete a Specific Promotion' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: promotionId in: path type: string required: true - name: promotions-promotionid-actions-toggle path: /promotions/{promotionId}/actions/toggle operations: - name: enable-or-disable-a-promotion method: POST description: 'Enable or Disable a Promotion' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: promotionId in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: promotions-promotionid-actions-end path: /promotions/{promotionId}/actions/end operations: - name: end-a-promotion method: POST description: 'End a Promotion' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: promotionId in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: promotions-search path: /promotions/search operations: - name: search-for-promotions method: POST description: 'Search for Promotions' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer value: '{{env.FABRIC_ACCESS_TOKEN}}' placement: header exposes: - type: rest namespace: offers-promotions-rest port: 8080 description: REST adapter for fabric Offers — Promotions. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/promotions name: promotions description: REST surface for promotions. operations: - method: GET name: get-all-promotions description: 'Get All Promotions' call: offers-promotions.get-all-promotions outputParameters: - type: object mapping: $. - method: POST name: create-promotion description: 'Create Promotion' call: offers-promotions.create-promotion with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/promotions/{promotionId} name: promotions-promotionid description: REST surface for promotions-promotionid. operations: - method: PUT name: update-a-specific-promotion description: 'Update a Specific Promotion' call: offers-promotions.update-a-specific-promotion with: promotionId: rest.path.promotionId body: rest.body outputParameters: - type: object mapping: $. - method: GET name: get-a-specific-promotion description: 'Get a Specific Promotion' call: offers-promotions.get-a-specific-promotion with: promotionId: rest.path.promotionId outputParameters: - type: object mapping: $. - method: DELETE name: delete-a-specific-promotion description: 'Delete a Specific Promotion' call: offers-promotions.delete-a-specific-promotion with: promotionId: rest.path.promotionId outputParameters: - type: object mapping: $. - path: /v1/promotions/{promotionId}/actions/toggle name: promotions-promotionid-actions-toggle description: REST surface for promotions-promotionid-actions-toggle. operations: - method: POST name: enable-or-disable-a-promotion description: 'Enable or Disable a Promotion' call: offers-promotions.enable-or-disable-a-promotion with: promotionId: rest.path.promotionId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/promotions/{promotionId}/actions/end name: promotions-promotionid-actions-end description: REST surface for promotions-promotionid-actions-end. operations: - method: POST name: end-a-promotion description: 'End a Promotion' call: offers-promotions.end-a-promotion with: promotionId: rest.path.promotionId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/promotions/search name: promotions-search description: REST surface for promotions-search. operations: - method: POST name: search-for-promotions description: 'Search for Promotions' call: offers-promotions.search-for-promotions with: body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: offers-promotions-mcp port: 9090 transport: http description: MCP adapter for fabric Offers — Promotions. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: fabric-get-all-promotions description: 'Get All Promotions' hints: readOnly: true destructive: false idempotent: true call: offers-promotions.get-all-promotions outputParameters: - type: object mapping: $. - name: fabric-create-promotion description: 'Create Promotion' hints: readOnly: false destructive: false idempotent: false call: offers-promotions.create-promotion with: body: tools.body outputParameters: - type: object mapping: $. - name: fabric-update-a-specific-promotion description: 'Update a Specific Promotion' hints: readOnly: false destructive: false idempotent: true call: offers-promotions.update-a-specific-promotion with: promotionId: tools.promotionId body: tools.body outputParameters: - type: object mapping: $. - name: fabric-get-a-specific-promotion description: 'Get a Specific Promotion' hints: readOnly: true destructive: false idempotent: true call: offers-promotions.get-a-specific-promotion with: promotionId: tools.promotionId outputParameters: - type: object mapping: $. - name: fabric-delete-a-specific-promotion description: 'Delete a Specific Promotion' hints: readOnly: false destructive: true idempotent: true call: offers-promotions.delete-a-specific-promotion with: promotionId: tools.promotionId outputParameters: - type: object mapping: $. - name: fabric-enable-or-disable-a-promotion description: 'Enable or Disable a Promotion' hints: readOnly: false destructive: false idempotent: false call: offers-promotions.enable-or-disable-a-promotion with: promotionId: tools.promotionId body: tools.body outputParameters: - type: object mapping: $. - name: fabric-end-a-promotion description: 'End a Promotion' hints: readOnly: false destructive: false idempotent: false call: offers-promotions.end-a-promotion with: promotionId: tools.promotionId body: tools.body outputParameters: - type: object mapping: $. - name: fabric-search-for-promotions description: 'Search for Promotions' hints: readOnly: false destructive: false idempotent: false call: offers-promotions.search-for-promotions with: body: tools.body outputParameters: - type: object mapping: $.