naftiko: 1.0.0-alpha2 info: label: Shuffle API — Apps description: 'Shuffle API — Apps. 9 operations. Lead operation: List Apps. Self-contained Naftiko capability covering one Shuffle business surface.' tags: - Shuffle - Apps created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SHUFFLE_API_KEY: SHUFFLE_API_KEY capability: consumes: - type: http namespace: shuffle-apps baseUri: https://shuffler.io/api/v1 description: Shuffle API — Apps business capability. Self-contained, no shared references. resources: - name: apps path: /apps operations: - name: listapps method: GET description: List Apps outputRawFormat: json outputParameters: - name: result type: object value: $. - name: apps-authentication path: /apps/authentication operations: - name: listappauthentications method: GET description: List App Authentications outputRawFormat: json outputParameters: - name: result type: object value: $. - name: createappauthentication method: PUT description: Create App Authentication outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: apps-authentication-id path: /apps/authentication/{id} operations: - name: deleteappauthentication method: DELETE description: Delete App Authentication outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Authentication ID required: true - name: apps-categories path: /apps/categories operations: - name: listappcategories method: GET description: List App Categories outputRawFormat: json outputParameters: - name: result type: object value: $. - name: apps-categories-run path: /apps/categories/run operations: - name: runappcategory method: POST description: Run App Category Action outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: apps-search path: /apps/search operations: - name: searchapps method: POST description: Search Apps outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: apps-upload path: /apps/upload operations: - name: uploadapp method: POST description: Upload App outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: apps-id path: /apps/{id} operations: - name: deleteapp method: DELETE description: Delete App outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: App ID required: true authentication: type: bearer token: '{{env.SHUFFLE_API_KEY}}' exposes: - type: rest namespace: shuffle-apps-rest port: 8080 description: REST adapter for Shuffle API — Apps. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/apps name: apps description: REST surface for apps. operations: - method: GET name: listapps description: List Apps call: shuffle-apps.listapps outputParameters: - type: object mapping: $. - path: /v1/apps/authentication name: apps-authentication description: REST surface for apps-authentication. operations: - method: GET name: listappauthentications description: List App Authentications call: shuffle-apps.listappauthentications outputParameters: - type: object mapping: $. - method: PUT name: createappauthentication description: Create App Authentication call: shuffle-apps.createappauthentication with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/apps/authentication/{id} name: apps-authentication-id description: REST surface for apps-authentication-id. operations: - method: DELETE name: deleteappauthentication description: Delete App Authentication call: shuffle-apps.deleteappauthentication with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/apps/categories name: apps-categories description: REST surface for apps-categories. operations: - method: GET name: listappcategories description: List App Categories call: shuffle-apps.listappcategories outputParameters: - type: object mapping: $. - path: /v1/apps/categories/run name: apps-categories-run description: REST surface for apps-categories-run. operations: - method: POST name: runappcategory description: Run App Category Action call: shuffle-apps.runappcategory with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/apps/search name: apps-search description: REST surface for apps-search. operations: - method: POST name: searchapps description: Search Apps call: shuffle-apps.searchapps with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/apps/upload name: apps-upload description: REST surface for apps-upload. operations: - method: POST name: uploadapp description: Upload App call: shuffle-apps.uploadapp with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/apps/{id} name: apps-id description: REST surface for apps-id. operations: - method: DELETE name: deleteapp description: Delete App call: shuffle-apps.deleteapp with: id: rest.id outputParameters: - type: object mapping: $. - type: mcp namespace: shuffle-apps-mcp port: 9090 transport: http description: MCP adapter for Shuffle API — Apps. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-apps description: List Apps hints: readOnly: true destructive: false idempotent: true call: shuffle-apps.listapps outputParameters: - type: object mapping: $. - name: list-app-authentications description: List App Authentications hints: readOnly: true destructive: false idempotent: true call: shuffle-apps.listappauthentications outputParameters: - type: object mapping: $. - name: create-app-authentication description: Create App Authentication hints: readOnly: false destructive: false idempotent: true call: shuffle-apps.createappauthentication with: body: tools.body outputParameters: - type: object mapping: $. - name: delete-app-authentication description: Delete App Authentication hints: readOnly: false destructive: true idempotent: true call: shuffle-apps.deleteappauthentication with: id: tools.id outputParameters: - type: object mapping: $. - name: list-app-categories description: List App Categories hints: readOnly: true destructive: false idempotent: true call: shuffle-apps.listappcategories outputParameters: - type: object mapping: $. - name: run-app-category-action description: Run App Category Action hints: readOnly: false destructive: false idempotent: false call: shuffle-apps.runappcategory with: body: tools.body outputParameters: - type: object mapping: $. - name: search-apps description: Search Apps hints: readOnly: true destructive: false idempotent: false call: shuffle-apps.searchapps with: body: tools.body outputParameters: - type: object mapping: $. - name: upload-app description: Upload App hints: readOnly: false destructive: false idempotent: false call: shuffle-apps.uploadapp with: body: tools.body outputParameters: - type: object mapping: $. - name: delete-app description: Delete App hints: readOnly: false destructive: true idempotent: true call: shuffle-apps.deleteapp with: id: tools.id outputParameters: - type: object mapping: $.