1#%RAML 0.8
2title: Spotify Web API
3version: v1
4baseUri: https://api.spotify.com/{version}
5mediaType: application/json
6documentation:
7  - title: Spotify Web API Docs
8    content: |
9      Welcome to the _Spotify Web API_ specification. For more information about
10      how to use the API, check out the [Spotify's developer site](https://developer.spotify.com/web-api/).
11resourceTypes:
12  - base:
13      get?: &common
14        headers:
15          Accept:
16            description: It is used to set specified media type.
17            type: string
18          EmptyAccept:
19          EmptyAcceptParams:
20            description:
21        responses:
22          429:
23            description: |
24              API rate limit exceeded. See http://developer.spotify.com/web-api/user-guide/#rate-limiting for details.
25          430:
26      post?: *common
27      put?: *common
28      delete?: *common
29  - item:
30      type: base
31      get?:
32securitySchemes:
33  - oauth_2_0:
34      description: |
35          Spotify supports OAuth 2.0 for authenticating all API requests.
36      type: OAuth 2.0
37      describedBy:
38        headers:
39          Authorization:
40            description: |
41              Used to send a valid OAuth 2 access token.
42            type: string
43        responses:
44          401:
45            description: |
46              Bad or expired token. This can happen if the user revoked a token or
47              the access token has expired. You should re-authenticate the user.
48          403:
49            description: |
50              Bad OAuth request (access token without necessary scope).
51      settings:
52        authorizationUri: https://accounts.spotify.com/authorize
53        accessTokenUri: https://accounts.spotify.com/api/token
54        authorizationGrants: [ code, token ]
55        scopes:
56          - "user-library-read"
57          - "user-library-modify"
58          - "user-read-private"
59          - "user-read-birthdate"
60          - "user-read-email"
61          - "user-follow-read"
62          - "user-follow-modify"
63          - "playlist-read-collaborative"
64          - "playlist-read-private"
65          - "playlist-modify-public"
66          - "playlist-modify-private"
67traits:
68  - emptyTrait:
69  - filterable:
70      queryParameters:
71        fields:
72          description: A comma-separated list of fields to filter query
73          type: string
74          example: items(added_by.id,track(name,href,album(name,href)))
75          displayName: Fields
76  - paged:
77      queryParameters:
78        limit:
79          displayName: Limit
80          description: The maximum number of items to return
81          type: integer
82          example: 10
83          minimum: 0
84          default: 20
85          maximum: 50
86          required: false
87        offset:
88          displayName: Offset
89          description: The index of the first item to return
90          type: integer
91          example: 5
92          default: 0
93          required: false
94/me:
95  displayName: current-user
96  securedBy: [ oauth_2_0: {scopes: ["user-read-private", "user-read-birthdate", "user-read-email"]} ]
97  /tracks:
98    displayName: current-user-saved-tracks
99    type: collection
100    put:
101      description: |
102        [Save Tracks for Current User](https://developer.spotify.com/web-api/save-tracks-user/)
103      securedBy: [ oauth_2_0: {scopes: ["user-library-modify"]}]
104      queryParameters:
105        ids:
106          displayName: Spotify Track IDs
107          type: string
108          description: A comma-separated list of IDs
109          required: true
110          example: "7ouMYWpwJ422jRcDASZB7P,4VqPOruhp5EdPBeR92t6lQ,2takcwOaAZWiXQijPHIx7B"
111