naftiko: 1.0.0-alpha2 info: label: 7digital API — Artists description: '7digital API — Artists. 10 operations. Lead operation: 7digital Browse Artists. Self-contained Naftiko capability covering one 7digital / MassiveMusic business surface.' tags: - 7digital / MassiveMusic - Music - Artists created: '2026-05-28' modified: '2026-05-28' binds: - namespace: env keys: SEVENDIGITAL_CONSUMER_KEY: SEVENDIGITAL_CONSUMER_KEY SEVENDIGITAL_CONSUMER_SECRET: SEVENDIGITAL_CONSUMER_SECRET capability: consumes: - type: http namespace: api-artists baseUri: https://api.7digital.com/1.2 description: 7digital API — Artists business capability. Self-contained, no shared references. authentication: type: apikey key: oauth_consumer_key value: '{{env.SEVENDIGITAL_CONSUMER_KEY}}' placement: query resources: - name: artist-browse path: /artist/browse operations: - name: browseArtists method: GET description: 7digital Browse Artists inputParameters: - name: letter in: query type: string required: true description: The starting letter or letters to browse by (e.g. `A`, `Be`). - name: page in: query type: integer required: false description: 1-based page number for paged endpoints. - name: pageSize in: query type: integer required: false description: Number of items per page. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: artist-chart path: /artist/chart operations: - name: getArtistChart method: GET description: 7digital Get Artist Chart inputParameters: - name: country in: query type: string required: false description: ISO 3166-1 alpha-2 country code for the sales territory. - name: period in: query type: string required: false description: Chart period — typically `day`, `week`, `month`, `year`. - name: page in: query type: integer required: false description: 1-based page number for paged endpoints. - name: pageSize in: query type: integer required: false description: Number of items per page. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: artist-details path: /artist/details operations: - name: getArtistDetails method: GET description: 7digital Get Artist Details inputParameters: - name: artistId in: query type: string required: true description: 7digital artist id. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: artist-releases path: /artist/releases operations: - name: getArtistReleases method: GET description: 7digital Get Artist Releases inputParameters: - name: artistId in: query type: string required: true description: 7digital artist id. - name: type in: query type: string required: false description: Release type filter. - name: page in: query type: integer required: false description: 1-based page number for paged endpoints. - name: pageSize in: query type: integer required: false description: Number of items per page. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: artist-similar path: /artist/similar operations: - name: getSimilarArtists method: GET description: 7digital Get Similar Artists inputParameters: - name: artistId in: query type: string required: true description: 7digital artist id. - name: page in: query type: integer required: false description: 1-based page number for paged endpoints. - name: pageSize in: query type: integer required: false description: Number of items per page. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: artist-search path: /artist/search operations: - name: searchArtists method: GET description: 7digital Search Artists inputParameters: - name: q in: query type: string required: true description: Free-text search query. - name: page in: query type: integer required: false description: 1-based page number for paged endpoints. - name: pageSize in: query type: integer required: false description: Number of items per page. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: artist-toptracks path: /artist/topTracks operations: - name: getArtistTopTracks method: GET description: 7digital Get Artist Top Tracks inputParameters: - name: artistId in: query type: string required: true description: 7digital artist id. - name: page in: query type: integer required: false description: 1-based page number for paged endpoints. - name: pageSize in: query type: integer required: false description: Number of items per page. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: artist-tags path: /artist/tags operations: - name: getArtistTags method: GET description: 7digital Get Artist Tags inputParameters: - name: artistId in: query type: string required: true description: 7digital artist id. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: artist-match-byid path: /artist/match/byId operations: - name: matchArtistById method: GET description: 7digital Match Artist By Id inputParameters: - name: id in: query type: string required: true description: External artist identifier to match. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: artist-bytag-top path: /artist/bytag/top operations: - name: getTopArtistsByTags method: GET description: 7digital Get Top Artists By Tags inputParameters: - name: tags in: query type: string required: true description: One or more tag identifiers, comma-separated. - name: country in: query type: string required: false description: ISO 3166-1 alpha-2 country code for the sales territory. - name: page in: query type: integer required: false description: 1-based page number for paged endpoints. - name: pageSize in: query type: integer required: false description: Number of items per page. outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest namespace: api-artists-rest port: 8080 description: REST adapter for 7digital API — Artists. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/artist/browse name: artist-browse description: REST surface for artist-browse. operations: - method: GET name: browseArtists description: 7digital Browse Artists call: api-artists.browseArtists with: letter: rest.letter page: rest.page pageSize: rest.pageSize outputParameters: - type: object mapping: $. - path: /v1/artist/chart name: artist-chart description: REST surface for artist-chart. operations: - method: GET name: getArtistChart description: 7digital Get Artist Chart call: api-artists.getArtistChart with: country: rest.country period: rest.period page: rest.page pageSize: rest.pageSize outputParameters: - type: object mapping: $. - path: /v1/artist/details name: artist-details description: REST surface for artist-details. operations: - method: GET name: getArtistDetails description: 7digital Get Artist Details call: api-artists.getArtistDetails with: artistId: rest.artistId outputParameters: - type: object mapping: $. - path: /v1/artist/releases name: artist-releases description: REST surface for artist-releases. operations: - method: GET name: getArtistReleases description: 7digital Get Artist Releases call: api-artists.getArtistReleases with: artistId: rest.artistId type: rest.type page: rest.page pageSize: rest.pageSize outputParameters: - type: object mapping: $. - path: /v1/artist/similar name: artist-similar description: REST surface for artist-similar. operations: - method: GET name: getSimilarArtists description: 7digital Get Similar Artists call: api-artists.getSimilarArtists with: artistId: rest.artistId page: rest.page pageSize: rest.pageSize outputParameters: - type: object mapping: $. - path: /v1/artist/search name: artist-search description: REST surface for artist-search. operations: - method: GET name: searchArtists description: 7digital Search Artists call: api-artists.searchArtists with: q: rest.q page: rest.page pageSize: rest.pageSize outputParameters: - type: object mapping: $. - path: /v1/artist/top-tracks name: artist-top-tracks description: REST surface for artist-top-tracks. operations: - method: GET name: getArtistTopTracks description: 7digital Get Artist Top Tracks call: api-artists.getArtistTopTracks with: artistId: rest.artistId page: rest.page pageSize: rest.pageSize outputParameters: - type: object mapping: $. - path: /v1/artist/tags name: artist-tags description: REST surface for artist-tags. operations: - method: GET name: getArtistTags description: 7digital Get Artist Tags call: api-artists.getArtistTags with: artistId: rest.artistId outputParameters: - type: object mapping: $. - path: /v1/artist/match/by-id name: artist-match-by-id description: REST surface for artist-match-by-id. operations: - method: GET name: matchArtistById description: 7digital Match Artist By Id call: api-artists.matchArtistById with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/artist/bytag/top name: artist-bytag-top description: REST surface for artist-bytag-top. operations: - method: GET name: getTopArtistsByTags description: 7digital Get Top Artists By Tags call: api-artists.getTopArtistsByTags with: tags: rest.tags country: rest.country page: rest.page pageSize: rest.pageSize outputParameters: - type: object mapping: $. - type: mcp namespace: api-artists-mcp port: 9090 transport: http description: MCP adapter for 7digital API — Artists. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: browse-artists description: 7digital Browse Artists hints: readOnly: true destructive: false idempotent: true call: api-artists.browseArtists with: letter: tools.letter page: tools.page pageSize: tools.pageSize outputParameters: - type: object mapping: $. - name: get-artist-chart description: 7digital Get Artist Chart hints: readOnly: true destructive: false idempotent: true call: api-artists.getArtistChart with: country: tools.country period: tools.period page: tools.page pageSize: tools.pageSize outputParameters: - type: object mapping: $. - name: get-artist-details description: 7digital Get Artist Details hints: readOnly: true destructive: false idempotent: true call: api-artists.getArtistDetails with: artistId: tools.artistId outputParameters: - type: object mapping: $. - name: get-artist-releases description: 7digital Get Artist Releases hints: readOnly: true destructive: false idempotent: true call: api-artists.getArtistReleases with: artistId: tools.artistId type: tools.type page: tools.page pageSize: tools.pageSize outputParameters: - type: object mapping: $. - name: get-similar-artists description: 7digital Get Similar Artists hints: readOnly: true destructive: false idempotent: true call: api-artists.getSimilarArtists with: artistId: tools.artistId page: tools.page pageSize: tools.pageSize outputParameters: - type: object mapping: $. - name: search-artists description: 7digital Search Artists hints: readOnly: true destructive: false idempotent: true call: api-artists.searchArtists with: q: tools.q page: tools.page pageSize: tools.pageSize outputParameters: - type: object mapping: $. - name: get-artist-top-tracks description: 7digital Get Artist Top Tracks hints: readOnly: true destructive: false idempotent: true call: api-artists.getArtistTopTracks with: artistId: tools.artistId page: tools.page pageSize: tools.pageSize outputParameters: - type: object mapping: $. - name: get-artist-tags description: 7digital Get Artist Tags hints: readOnly: true destructive: false idempotent: true call: api-artists.getArtistTags with: artistId: tools.artistId outputParameters: - type: object mapping: $. - name: match-artist-id description: 7digital Match Artist By Id hints: readOnly: true destructive: false idempotent: true call: api-artists.matchArtistById with: id: tools.id outputParameters: - type: object mapping: $. - name: get-top-artists-tags description: 7digital Get Top Artists By Tags hints: readOnly: true destructive: false idempotent: true call: api-artists.getTopArtistsByTags with: tags: tools.tags country: tools.country page: tools.page pageSize: tools.pageSize outputParameters: - type: object mapping: $.