naftiko: 1.0.0-alpha2 info: label: Spotify Web API — Episodes description: 'Spotify Web API — Episodes. 7 operations. Lead operation: Get Several Episodes. Self-contained Naftiko capability covering one Spotify business surface.' tags: - Spotify - Episodes created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SPOTIFY_API_KEY: SPOTIFY_API_KEY capability: consumes: - type: http namespace: spotify-episodes baseUri: https://api.spotify.com/v1 description: Spotify Web API — Episodes business capability. Self-contained, no shared references. resources: - name: episodes path: /episodes operations: - name: getmultipleepisodes method: GET description: Get Several Episodes outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ids in: query type: string required: true - name: episodes-id path: /episodes/{id} operations: - name: getanepisode method: GET description: Get Episode outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string required: true - name: me-episodes path: /me/episodes operations: - name: getuserssavedepisodes method: GET description: Get User's Saved Episodes outputRawFormat: json outputParameters: - name: result type: object value: $. - name: saveepisodesuser method: PUT description: Save Episodes for Current User outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ids in: query type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: removeepisodesuser method: DELETE description: Remove User's Saved Episodes outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: me-episodes-contains path: /me/episodes/contains operations: - name: checkuserssavedepisodes method: GET description: Check User's Saved Episodes outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ids in: query type: string required: true - 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-episodes-rest port: 8080 description: REST adapter for Spotify Web API — Episodes. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/episodes name: episodes description: REST surface for episodes. operations: - method: GET name: getmultipleepisodes description: Get Several Episodes call: spotify-episodes.getmultipleepisodes with: ids: rest.ids outputParameters: - type: object mapping: $. - path: /v1/episodes/{id} name: episodes-id description: REST surface for episodes-id. operations: - method: GET name: getanepisode description: Get Episode call: spotify-episodes.getanepisode with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/me/episodes name: me-episodes description: REST surface for me-episodes. operations: - method: GET name: getuserssavedepisodes description: Get User's Saved Episodes call: spotify-episodes.getuserssavedepisodes outputParameters: - type: object mapping: $. - method: PUT name: saveepisodesuser description: Save Episodes for Current User call: spotify-episodes.saveepisodesuser with: ids: rest.ids body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: removeepisodesuser description: Remove User's Saved Episodes call: spotify-episodes.removeepisodesuser with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/me/episodes/contains name: me-episodes-contains description: REST surface for me-episodes-contains. operations: - method: GET name: checkuserssavedepisodes description: Check User's Saved Episodes call: spotify-episodes.checkuserssavedepisodes with: ids: rest.ids 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-episodes.getashowsepisodes outputParameters: - type: object mapping: $. - type: mcp namespace: spotify-episodes-mcp port: 9090 transport: http description: MCP adapter for Spotify Web API — Episodes. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-several-episodes description: Get Several Episodes hints: readOnly: true destructive: false idempotent: true call: spotify-episodes.getmultipleepisodes with: ids: tools.ids outputParameters: - type: object mapping: $. - name: get-episode description: Get Episode hints: readOnly: true destructive: false idempotent: true call: spotify-episodes.getanepisode with: id: tools.id outputParameters: - type: object mapping: $. - name: get-user-s-saved-episodes description: Get User's Saved Episodes hints: readOnly: true destructive: false idempotent: true call: spotify-episodes.getuserssavedepisodes outputParameters: - type: object mapping: $. - name: save-episodes-current-user description: Save Episodes for Current User hints: readOnly: false destructive: false idempotent: true call: spotify-episodes.saveepisodesuser with: ids: tools.ids body: tools.body outputParameters: - type: object mapping: $. - name: remove-user-s-saved-episodes description: Remove User's Saved Episodes hints: readOnly: false destructive: true idempotent: true call: spotify-episodes.removeepisodesuser with: body: tools.body outputParameters: - type: object mapping: $. - name: check-user-s-saved-episodes description: Check User's Saved Episodes hints: readOnly: true destructive: false idempotent: true call: spotify-episodes.checkuserssavedepisodes with: ids: tools.ids outputParameters: - type: object mapping: $. - name: get-show-episodes description: Get Show Episodes hints: readOnly: true destructive: false idempotent: true call: spotify-episodes.getashowsepisodes outputParameters: - type: object mapping: $.