naftiko: 1.0.0-alpha2 info: label: Spotify Web API — Shows description: 'Spotify Web API — Shows. 7 operations. Lead operation: Get User''s Saved Shows. Self-contained Naftiko capability covering one Spotify business surface.' tags: - Spotify - Shows created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SPOTIFY_API_KEY: SPOTIFY_API_KEY capability: consumes: - type: http namespace: spotify-shows baseUri: https://api.spotify.com/v1 description: Spotify Web API — Shows business capability. Self-contained, no shared references. resources: - name: me-shows path: /me/shows operations: - name: getuserssavedshows method: GET description: Get User's Saved Shows outputRawFormat: json outputParameters: - name: result type: object value: $. - name: saveshowsuser method: PUT description: Save Shows for Current User outputRawFormat: json outputParameters: - name: result type: object value: $. - name: removeshowsuser method: DELETE description: Remove User's Saved Shows outputRawFormat: json outputParameters: - name: result type: object value: $. - name: me-shows-contains path: /me/shows/contains operations: - name: checkuserssavedshows method: GET description: Check User's Saved Shows outputRawFormat: json outputParameters: - name: result type: object value: $. - name: shows path: /shows operations: - name: getmultipleshows method: GET description: Get Several Shows outputRawFormat: json outputParameters: - name: result type: object value: $. - name: shows-id path: /shows/{id} operations: - name: getashow method: GET description: Get Show outputRawFormat: json outputParameters: - name: result type: object value: $. - name: shows-id-episodes path: /shows/{id}/episodes operations: - name: getashowsepisodes method: GET description: Get Show Episodes outputRawFormat: json outputParameters: - name: result type: object value: $. authentication: type: bearer token: '{{env.SPOTIFY_API_KEY}}' exposes: - type: rest namespace: spotify-shows-rest port: 8080 description: REST adapter for Spotify Web API — Shows. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/me/shows name: me-shows description: REST surface for me-shows. operations: - method: GET name: getuserssavedshows description: Get User's Saved Shows call: spotify-shows.getuserssavedshows outputParameters: - type: object mapping: $. - method: PUT name: saveshowsuser description: Save Shows for Current User call: spotify-shows.saveshowsuser outputParameters: - type: object mapping: $. - method: DELETE name: removeshowsuser description: Remove User's Saved Shows call: spotify-shows.removeshowsuser outputParameters: - type: object mapping: $. - path: /v1/me/shows/contains name: me-shows-contains description: REST surface for me-shows-contains. operations: - method: GET name: checkuserssavedshows description: Check User's Saved Shows call: spotify-shows.checkuserssavedshows outputParameters: - type: object mapping: $. - path: /v1/shows name: shows description: REST surface for shows. operations: - method: GET name: getmultipleshows description: Get Several Shows call: spotify-shows.getmultipleshows outputParameters: - type: object mapping: $. - path: /v1/shows/{id} name: shows-id description: REST surface for shows-id. operations: - method: GET name: getashow description: Get Show call: spotify-shows.getashow outputParameters: - type: object mapping: $. - path: /v1/shows/{id}/episodes name: shows-id-episodes description: REST surface for shows-id-episodes. operations: - method: GET name: getashowsepisodes description: Get Show Episodes call: spotify-shows.getashowsepisodes outputParameters: - type: object mapping: $. - type: mcp namespace: spotify-shows-mcp port: 9090 transport: http description: MCP adapter for Spotify Web API — Shows. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-user-s-saved-shows description: Get User's Saved Shows hints: readOnly: true destructive: false idempotent: true call: spotify-shows.getuserssavedshows outputParameters: - type: object mapping: $. - name: save-shows-current-user description: Save Shows for Current User hints: readOnly: false destructive: false idempotent: true call: spotify-shows.saveshowsuser outputParameters: - type: object mapping: $. - name: remove-user-s-saved-shows description: Remove User's Saved Shows hints: readOnly: false destructive: true idempotent: true call: spotify-shows.removeshowsuser outputParameters: - type: object mapping: $. - name: check-user-s-saved-shows description: Check User's Saved Shows hints: readOnly: true destructive: false idempotent: true call: spotify-shows.checkuserssavedshows outputParameters: - type: object mapping: $. - name: get-several-shows description: Get Several Shows hints: readOnly: true destructive: false idempotent: true call: spotify-shows.getmultipleshows outputParameters: - type: object mapping: $. - name: get-show description: Get Show hints: readOnly: true destructive: false idempotent: true call: spotify-shows.getashow outputParameters: - type: object mapping: $. - name: get-show-episodes description: Get Show Episodes hints: readOnly: true destructive: false idempotent: true call: spotify-shows.getashowsepisodes outputParameters: - type: object mapping: $.