Last active
March 25, 2024 03:24
-
-
Save tobq/bcf074d15bb8c97b552340b3454244e4 to your computer and use it in GitHub Desktop.
Revisions
-
tobq revised this gist
Mar 25, 2024 . 1 changed file with 132 additions and 99 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -8,6 +8,7 @@ info: termsOfService: https://developers.soundcloud.com/docs/api/terms-of-use servers: - url: https://api.soundcloud.com tags: - name: oauth description: Authentication and Authorization Endpoints. @@ -55,6 +56,8 @@ paths: /oauth2/token: post: summary: This endpoint accepts POST requests and is used to provision access tokens once a user has authorized your application. security: - AuthHeader: [ ] tags: - oauth requestBody: @@ -74,6 +77,34 @@ paths: examples: ExpiringToken: $ref: '#/components/examples/ExpiringToken' schema: title: Token type: object properties: access_token: type: string description: Access token expires_in: type: integer description: Time in seconds until the token expires example: 3600 refresh_token: type: string description: Refresh token scope: type: string description: Scope of the token example: non-expiring token_type: type: string description: Type of the token example: bearer required: - access_token - expires_in - refresh_token - scope - token_type '400': description: Bad Request content: @@ -111,7 +142,7 @@ paths: tags: - me security: - AuthHeader: [ ] responses: '200': $ref: '#/components/responses/Me' @@ -123,7 +154,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' @@ -138,7 +169,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' @@ -153,7 +184,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' @@ -168,7 +199,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/access_explicit' @@ -184,7 +215,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/linked_partitioning' @@ -199,7 +230,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' @@ -214,7 +245,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' @@ -231,7 +262,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' responses: @@ -246,7 +277,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id_to_follow' responses: @@ -263,7 +294,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id_to_follow' responses: @@ -286,7 +317,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/limit' responses: @@ -301,7 +332,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/follower_id' responses: @@ -316,7 +347,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/show_tracks' - $ref: '#/components/parameters/linked_partitioning' @@ -334,7 +365,7 @@ paths: tags: - me security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/linked_partitioning' @@ -349,7 +380,7 @@ paths: tags: - search security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/q' - $ref: '#/components/parameters/ids' @@ -395,7 +426,7 @@ paths: - track[title] - track[asset_data] security: - AuthHeader: [ ] responses: '201': $ref: '#/components/responses/Track' @@ -411,7 +442,7 @@ paths: tags: - search security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/q' - $ref: '#/components/parameters/access' @@ -431,7 +462,7 @@ paths: tags: - playlists security: - AuthHeader: [ ] requestBody: description: Create Playlist request content: @@ -441,15 +472,17 @@ paths: examples: default: $ref: '#/components/examples/CreateUpdatePlaylistRequest' # TODO: bug with OpenApi generator (wrong type name used), leading to broken build # multipart/form-data: # schema: # allOf: # - $ref: '#/components/schemas/CreateUpdatePlaylistFormRequest' # - required: # - playlist[title] # - title: Create Playlist Form # examples: # default: # $ref: '#/components/examples/CreateUpdatePlaylistFormRequest' responses: '201': $ref: '#/components/responses/Playlist' @@ -463,7 +496,7 @@ paths: tags: - search security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/q' - $ref: '#/components/parameters/ids' @@ -483,7 +516,7 @@ paths: tags: - playlists security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/playlist_id' - $ref: '#/components/parameters/secret_token' @@ -501,7 +534,7 @@ paths: tags: - playlists security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/fake_playlist_id' requestBody: @@ -525,7 +558,7 @@ paths: tags: - playlists security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/fake_playlist_id' responses: @@ -539,7 +572,7 @@ paths: tags: - playlists security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/playlist_id' - $ref: '#/components/parameters/secret_token' @@ -558,7 +591,7 @@ paths: tags: - playlists security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/playlist_id' - $ref: '#/components/parameters/limit' @@ -575,7 +608,7 @@ paths: tags: - tracks security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/secret_token' @@ -591,7 +624,7 @@ paths: tags: - tracks security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/track_id' requestBody: @@ -618,7 +651,7 @@ paths: tags: - tracks security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/track_id' responses: @@ -632,7 +665,7 @@ paths: tags: - tracks security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/secret_token' @@ -649,7 +682,7 @@ paths: tags: - tracks security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/limit' @@ -667,7 +700,7 @@ paths: tags: - tracks security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/track_id' requestBody: @@ -706,7 +739,7 @@ paths: tags: - tracks security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/limit' @@ -724,7 +757,7 @@ paths: tags: - tracks security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/limit' @@ -741,7 +774,7 @@ paths: tags: - tracks security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/access' @@ -761,7 +794,7 @@ paths: tags: - miscellaneous security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/url' responses: @@ -775,7 +808,7 @@ paths: tags: - users security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' responses: @@ -792,7 +825,7 @@ paths: tags: - users security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/limit' @@ -809,7 +842,7 @@ paths: tags: - users security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/limit' @@ -825,7 +858,7 @@ paths: tags: - users security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/limit' @@ -842,7 +875,7 @@ paths: tags: - users security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/following_id' @@ -859,7 +892,7 @@ paths: tags: - users security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/access' @@ -877,7 +910,7 @@ paths: tags: - users security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/access' @@ -894,7 +927,7 @@ paths: tags: - users security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/limit' @@ -909,7 +942,7 @@ paths: tags: - users security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/access' @@ -930,7 +963,7 @@ paths: tags: - users security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/limit' @@ -950,7 +983,7 @@ paths: tags: - likes security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/test_track_id' responses: @@ -969,7 +1002,7 @@ paths: tags: - likes security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/test_track_id' responses: @@ -985,7 +1018,7 @@ paths: tags: - likes security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/playlist_id' responses: @@ -1004,7 +1037,7 @@ paths: tags: - likes security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/playlist_id' responses: @@ -1020,7 +1053,7 @@ paths: tags: - reposts security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/test_track_id' responses: @@ -1035,7 +1068,7 @@ paths: tags: - reposts security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/test_track_id' responses: @@ -1051,7 +1084,7 @@ paths: tags: - reposts security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/repost_playlist_id' responses: @@ -1066,7 +1099,7 @@ paths: tags: - reposts security: - AuthHeader: [ ] parameters: - $ref: '#/components/parameters/repost_playlist_id' responses: @@ -1258,7 +1291,7 @@ components: - playable - preview - blocked default: [ playable,preview ] description: | Filters content by level of access the user (logged in or anonymous) has to the track. The result list will include only tracks with the specified access. Include all options if you'd like to see all possible tracks. See `Track#access` schema for more details. style: form @@ -1274,7 +1307,7 @@ components: - playable - preview - blocked default: [ playable,preview,blocked ] description: | Filters content by level of access the user (logged in or anonymous) has to the track. The result list will include only tracks with the specified access. Include all options if you'd like to see all possible tracks. See `Track#access` schema for more details. style: form @@ -1381,6 +1414,8 @@ components: type: apiKey name: Authorization description: 'The string "OAuth" followed by the user’s token: OAuth ACCESS_TOKEN' bearerFormat: OAuth ACCESS_TOKEN # TODO: soundcloud using non-standard Oauth bearer token header implementation -- incompatible with OpenAPI Clients (and basically any OAuth client) schemas: OAuthToken: type: object @@ -1744,11 +1779,12 @@ components: type: string created_at: description: profile creation datetime # format: date-time TODO: soundcloud uses non-standard date format YYYY/MM/DD HH:MM:SS Z type: string last_modified: description: last modified datetime # format: date-time TODO: soundcloud uses non-standard date format YYYY/MM/DD HH:MM:SS Z # format: date-time type: string last_name: description: last name @@ -1794,24 +1830,22 @@ components: description: a list subscriptions associated with the user deprecated: true items: type: object description: subscription properties: product: description: product properties: id: description: subscription id instance. type: string name: description: subscription name instance. type: string type: object recurring: description: if the subscription is recurring or not type: boolean Me: type: object description: SoundCloud Me object @@ -1918,26 +1952,25 @@ components: description: number of reposts from user type: integer subscriptions: type: array description: a list subscriptions associated with the user items: type: object description: subscription properties: product: description: product properties: id: description: subscription id instance. type: string name: description: subscription name instance. type: string type: object recurring: description: if the subscription is recurring or not type: boolean track_count: description: number of public tracks. type: integer @@ -2918,4 +2951,4 @@ components: status: Status(200) - OK TrackMetadataRequest: value: track[title]: Updated Test Track -
tobq created this gist
Mar 25, 2024 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,2921 @@ openapi: 3.0.4 info: title: SoundCloud Public API Specification contact: name: API issue tracker url: https://github.com/soundcloud/api version: 1.0.0 termsOfService: https://developers.soundcloud.com/docs/api/terms-of-use servers: - url: https://api.soundcloud.com tags: - name: oauth description: Authentication and Authorization Endpoints. - name: me description: Own User Endpoints. - name: search description: Search Endpoints. - name: playlists description: Playlists Endpoints. - name: tracks description: Tracks Endpoints. - name: users description: SoundCloud Users Endpoints. - name: likes description: Liking Tracks & Playlists. - name: reposts description: Reposting Tracks & Playlists. - name: miscellaneous description: Miscellaneous Endpoints. paths: /connect: get: summary: The OAuth2 authorization endpoint. Your app redirects a user to this endpoint, allowing them to delegate access to their account. description: | <h3>Security Advice</h3> * [OAuth Authorization Code flow](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics-16#section-2.1.1) (`response_type=code`) is the only allowed method of authorization. * Use the `state` parameter for [CSRF protection](https://tools.ietf.org/html/draft-ietf-oauth-security-topics-16#section-4.7). Pass a sufficient random nonce here and verify this nonce again after retrieving the token. tags: - oauth parameters: - $ref: '#/components/parameters/client_id' - $ref: '#/components/parameters/redirect_uri' - $ref: '#/components/parameters/response_type' - $ref: '#/components/parameters/state' responses: '302': description: Redirect to connect portal headers: Location: description: Redirect to connect poral "https://secure.soundcloud.com/connect" schema: type: string '401': $ref: '#/components/responses/Unauthorized' /oauth2/token: post: summary: This endpoint accepts POST requests and is used to provision access tokens once a user has authorized your application. tags: - oauth requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OAuthToken' multipart/form-data: schema: $ref: '#/components/schemas/OAuthToken' responses: '200': description: Success content: application/json; charset=utf-8: examples: ExpiringToken: $ref: '#/components/examples/ExpiringToken' '400': description: Bad Request content: application/json: schema: oneOf: - $ref: '#/components/schemas/Error' examples: ErrorInvalidGrant: $ref: '#/components/examples/ErrorInvalidGrant' ErrorUnsupportedGrant: $ref: '#/components/examples/ErrorUnsupportedGrant' BadRequest: $ref: '#/components/examples/BadRequest' '401': description: Unauthorized content: application/json: schema: oneOf: - $ref: '#/components/schemas/Error' examples: ErrorInvalidGrant: value: code: 401 message: invalid_grant link: https://developers.soundcloud.com/docs/api/guide#authentication ErrorInvalidScope: $ref: '#/components/examples/ErrorInvalidScope' ErrorInvalidClient: $ref: '#/components/examples/ErrorInvalidClient' /me: get: summary: Returns the authenticated user’s information. tags: - me security: - AuthHeader: [] responses: '200': $ref: '#/components/responses/Me' '401': $ref: '#/components/responses/Unauthorized' /me/activities: get: summary: Returns the authenticated user's activities. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/Activities' '401': $ref: '#/components/responses/Unauthorized' /me/activities/all/own: get: summary: Recent the authenticated user's activities. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/Activities' '401': $ref: '#/components/responses/Unauthorized' /me/activities/tracks: get: summary: Returns the authenticated user's recent track related activities. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/Activities' '401': $ref: '#/components/responses/Unauthorized' /me/likes/tracks: get: summary: Returns a list of favorited or liked tracks of the authenticated user. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/access_explicit' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Tracks' '401': $ref: '#/components/responses/Unauthorized' /me/likes/playlists: get: summary: Returns a list of favorited or liked playlists of the authenticated user. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Playlists' '401': $ref: '#/components/responses/Unauthorized' /me/followings: get: summary: Returns a list of users who are followed by the authenticated user. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' responses: '200': $ref: '#/components/responses/Users' '401': $ref: '#/components/responses/Unauthorized' /me/followings/tracks: get: summary: Returns a list of recent tracks from users followed by the authenticated user. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' responses: '200': $ref: '#/components/responses/TracksList' '401': $ref: '#/components/responses/Unauthorized' /me/followings/{user_id}: get: summary: Returns a user who is followed by the authenticated user. (use /users/{user_id} instead, to fetch the user details) deprecated: true tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' responses: '200': $ref: '#/components/responses/User' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: summary: Follows a user. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id_to_follow' responses: '200': $ref: '#/components/responses/Successful' '201': $ref: '#/components/responses/User' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: summary: Deletes a user who is followed by the authenticated user. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id_to_follow' responses: '200': description: Success content: application/json; charset=utf-8: examples: '200': $ref: '#/components/examples/OK' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' /me/followers: get: summary: Returns a list of users who are following the authenticated user. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/Users' '401': $ref: '#/components/responses/Unauthorized' /me/followers/{follower_id}: get: summary: Returns a user who is following the authenticated user. (use /users/{user_id} instead, to fetch the user details) deprecated: true tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/follower_id' responses: '200': $ref: '#/components/responses/User' '401': $ref: '#/components/responses/Unauthorized' /me/playlists: get: summary: Returns user’s playlists (sets). description: Returns playlist info, playlist tracks and tracks owner info. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/show_tracks' - $ref: '#/components/parameters/linked_partitioning' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/Playlists' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /me/tracks: get: summary: Returns a list of user's tracks. tags: - me security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Tracks' '401': $ref: '#/components/responses/Unauthorized' /tracks: get: summary: Performs a track search based on a query tags: - search security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/q' - $ref: '#/components/parameters/ids' - $ref: '#/components/parameters/genres' - $ref: '#/components/parameters/tags' - $ref: '#/components/parameters/bpm' - $ref: '#/components/parameters/duration' - $ref: '#/components/parameters/created_at' - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Tracks' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '500': description: Internal Server Error post: summary: Uploads a new track. tags: - tracks requestBody: content: multipart/form-data: schema: allOf: - $ref: '#/components/schemas/TrackDataRequest' - required: - track[title] - track[asset_data] examples: default: $ref: '#/components/examples/TrackDataRequest' multipart/x-www-form-urlencoded: schema: allOf: - $ref: '#/components/schemas/TrackDataRequest' - required: - track[title] - track[asset_data] security: - AuthHeader: [] responses: '201': $ref: '#/components/responses/Track' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' /playlists: get: summary: Performs a playlist search based on a query tags: - search security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/q' - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/show_tracks' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Playlists' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' post: summary: Creates a playlist. tags: - playlists security: - AuthHeader: [] requestBody: description: Create Playlist request content: application/json: schema: $ref: '#/components/schemas/CreateUpdatePlaylistRequest' examples: default: $ref: '#/components/examples/CreateUpdatePlaylistRequest' multipart/form-data: schema: allOf: - $ref: '#/components/schemas/CreateUpdatePlaylistFormRequest' - required: - playlist[title] examples: default: $ref: '#/components/examples/CreateUpdatePlaylistFormRequest' responses: '201': $ref: '#/components/responses/Playlist' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /users: get: summary: Performs a user search based on a query tags: - search security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/q' - $ref: '#/components/parameters/ids' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Users' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /playlists/{playlist_id}: get: summary: Returns a playlist. tags: - playlists security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/playlist_id' - $ref: '#/components/parameters/secret_token' - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/show_tracks' responses: '200': $ref: '#/components/responses/Playlist' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' put: summary: Updates a playlist. tags: - playlists security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/fake_playlist_id' requestBody: description: Playlist payload content: application/json: schema: $ref: '#/components/schemas/CreateUpdatePlaylistRequest' examples: default: $ref: '#/components/examples/CreateUpdatePlaylistRequest' responses: '200': $ref: '#/components/responses/Playlist' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: summary: Deletes a playlist. tags: - playlists security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/fake_playlist_id' responses: '200': description: Success '404': $ref: '#/components/responses/NotFound' /playlists/{playlist_id}/tracks: get: summary: Returns tracks under a playlist. tags: - playlists security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/playlist_id' - $ref: '#/components/parameters/secret_token' - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Tracks' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /playlists/{playlist_id}/reposters: get: summary: Returns a collection of playlist's reposters. tags: - playlists security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/playlist_id' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/Users' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /tracks/{track_id}: get: summary: Returns a track. tags: - tracks security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/secret_token' responses: '200': $ref: '#/components/responses/Track' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: summary: Updates a track's information. tags: - tracks security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/track_id' requestBody: description: Track payload content: application/json: schema: $ref: '#/components/schemas/TrackMetadataRequest' multipart/form-data: schema: $ref: '#/components/schemas/TrackDataRequest' multipart/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TrackDataRequest' responses: '200': $ref: '#/components/responses/Track' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' delete: summary: Deletes a track. tags: - tracks security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/track_id' responses: '200': description: Success '404': $ref: '#/components/responses/NotFound' /tracks/{track_id}/streams: get: summary: Returns a track's streamable URLs tags: - tracks security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/secret_token' responses: '200': $ref: '#/components/responses/Streams' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /tracks/{track_id}/comments: get: summary: Returns the comments posted on the track(track_id). tags: - tracks security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Comments' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' post: summary: Returns the newly created comment on success tags: - tracks security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/track_id' requestBody: description: | Body of a comment required: true content: application/json; charset=utf-8: schema: type: object properties: comment: type: object properties: body: type: string description: Comment's content example: test comment timestamp: description: Timestamp of a comment. String or float representation is supported oneOf: - type: string - type: number required: - body responses: '201': $ref: '#/components/responses/Comment' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' /tracks/{track_id}/favoriters: get: summary: Returns a list of users who have favorited or liked the track. tags: - tracks security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Users' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /tracks/{track_id}/reposters: get: summary: Returns a collection of track's reposters. tags: - tracks security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/Users' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /tracks/{track_id}/related: get: summary: Returns all related tracks of track on SoundCloud. tags: - tracks security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Tracks' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /resolve: get: summary: Resolves soundcloud.com and on.soundcloud.com URLs to Resource URLs to use with the API. tags: - miscellaneous security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/url' responses: '302': $ref: '#/components/responses/Found' '404': $ref: '#/components/responses/NotFound' /users/{user_id}: get: summary: Returns a user. tags: - users security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' responses: '200': $ref: '#/components/responses/User' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /users/{user_id}/favorites: get: summary: Returns a list of user's favorited or liked tracks. (use /users/:userId/likes/tracks instead, to fetch a user's likes) deprecated: true tags: - users security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Tracks' '401': $ref: '#/components/responses/Unauthorized' /users/{user_id}/followers: get: summary: Returns a list of user’s followers. description: Returns a list of users that follows (user_id). tags: - users security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/Users' '401': $ref: '#/components/responses/Unauthorized' /users/{user_id}/followings: get: summary: Returns a list of user’s followings. description: Returns list of users that (user_id) follows. tags: - users security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/Users' '401': $ref: '#/components/responses/Unauthorized' /users/{user_id}/followings/{following_id}: get: summary: Returns a user's following. (use /users/{user_id} instead, to fetch the user details) description: Returns (following_id) that is followed by (user_id). deprecated: true tags: - users security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/following_id' responses: '200': $ref: '#/components/responses/User' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /users/{user_id}/playlists: get: summary: Returns a list of user's playlists. tags: - users security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/show_tracks' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Playlists' '401': $ref: '#/components/responses/Unauthorized' /users/{user_id}/tracks: get: summary: Returns a list of user's tracks. tags: - users security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Tracks' '401': $ref: '#/components/responses/Unauthorized' /users/{user_id}/web-profiles: get: summary: Returns list of user's links added to their profile (website, facebook, instagram). tags: - users security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/WebProfiles' '401': $ref: '#/components/responses/Unauthorized' /users/{user_id}/likes/tracks: get: summary: Returns a list of user's liked tracks. tags: - users security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/access' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Tracks' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /users/{user_id}/likes/playlists: get: summary: Returns a list of user's liked playlists. tags: - users security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/user_id' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/linked_partitioning' responses: '200': $ref: '#/components/responses/Playlists' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /likes/tracks/{track_id}: post: summary: Likes a track. tags: - likes security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/test_track_id' responses: '200': $ref: '#/components/responses/Success' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' delete: summary: Unlikes a track. tags: - likes security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/test_track_id' responses: '200': $ref: '#/components/responses/Success' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' /likes/playlists/{playlist_id}: post: summary: Likes a playlist. tags: - likes security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/playlist_id' responses: '200': $ref: '#/components/responses/Success' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' delete: summary: Unlikes a playlist. tags: - likes security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/playlist_id' responses: '200': $ref: '#/components/responses/Success' '400': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/NotFound' /reposts/tracks/{track_id}: post: summary: Reposts a track as the authenticated user tags: - reposts security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/test_track_id' responses: '201': description: Created '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: summary: Removes a repost on a track as the authenticated user tags: - reposts security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/test_track_id' responses: '200': description: Success '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /reposts/playlists/{playlist_id}: post: summary: Reposts a playlist as the authenticated user tags: - reposts security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/repost_playlist_id' responses: '201': description: Created '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: summary: Removes a repost on a playlist as the authenticated user tags: - reposts security: - AuthHeader: [] parameters: - $ref: '#/components/parameters/repost_playlist_id' responses: '200': description: Success '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: parameters: bpm: in: query name: bpm description: Return tracks with a specified bpm[from], bpm[to] required: false style: deepObject schema: type: object properties: from: type: integer description: Return tracks with at least this bpm value example: 123 to: type: integer description: Return tracks with at most this bpm value example: 456 client_id: in: query name: client_id required: true schema: type: string description: The client id belonging to your application example: some client created_at: in: query name: created_at description: (yyyy-mm-dd hh:mm:ss) return tracks created within the specified dates required: false style: deepObject schema: type: object properties: from: type: string description: (yyyy-mm-dd hh:mm:ss) return tracks created at this date or later example: '2020-12-24 00:00:00' to: type: string description: (yyyy-mm-dd hh:mm:ss) return tracks created at this date or earlier example: '2020-12-26 00:00:00' duration: in: query name: duration description: Return tracks within a specified duration range required: false style: deepObject schema: type: object properties: from: type: integer description: Return tracks with at least this duration value example: 123456 to: type: integer description: Return tracks with at most this duration value example: 456789 genres: in: query name: genres required: false schema: type: string description: A comma separated list of genres example: Pop,House ids: in: query name: ids required: false schema: type: string description: A comma separated list of track ids to filter on example: 1,2,3 limit: in: query name: limit required: false schema: type: integer minimum: 1 maximum: 200 default: 50 description: Number of results to return in the collection. example: 2 offset: deprecated: true in: query name: offset required: false schema: type: integer default: 0 description: Offset of first result. Deprecated, use `linked_partitioning` instead. example: 0 q: in: query name: q required: false schema: type: string description: search example: hello redirect_uri: in: query name: redirect_uri required: true schema: type: string description: The redirect uri you have configured for your application example: https://soundcloud.com response_type: in: query name: response_type required: true schema: type: string enum: - code description: Support only the Authorization Code Flow example: code scope: in: query name: scope required: true schema: type: string description: Scope. Leave blank by default example: default state: in: query name: state required: false schema: type: string description: Any value included here will be appended to the redirect URI. Use this for CSRF protection. example: encrypted_session_info tags: in: query name: tags required: false schema: type: string description: A comma separated list of tags example: test url: in: query name: url required: true schema: type: string description: SoundCloud URL example: https://soundcloud.com/user-434241656 linked_partitioning: in: query name: linked_partitioning required: false schema: type: boolean description: Returns paginated collection of items (recommended, returning a list without pagination is deprecated and should not be used) example: true secret_token: in: query name: secret_token required: false schema: type: string description: A secret token to fetch private playlists/tracks access: in: query name: access schema: type: array items: type: string enum: - playable - preview - blocked default: playable,preview description: | Filters content by level of access the user (logged in or anonymous) has to the track. The result list will include only tracks with the specified access. Include all options if you'd like to see all possible tracks. See `Track#access` schema for more details. style: form explode: false access_explicit: in: query name: access schema: type: array items: type: string enum: - playable - preview - blocked default: playable,preview,blocked description: | Filters content by level of access the user (logged in or anonymous) has to the track. The result list will include only tracks with the specified access. Include all options if you'd like to see all possible tracks. See `Track#access` schema for more details. style: form explode: false show_tracks: in: query name: show_tracks required: false schema: type: boolean description: A boolean flag to request a playlist with or without tracks. Default is `true`. example: true comment_id: in: path name: comment_id required: true schema: type: integer description: SoundCloud comment id example: 123456 follower_id: in: path name: follower_id required: true schema: type: integer description: SoundCloud User id to denote a Follower example: 743372812 following_id: in: path name: following_id required: true schema: type: integer description: SoundCloud User id to denote a Following of a user example: 25219981 playlist_id: in: path name: playlist_id required: true schema: type: integer description: SoundCloud playlist id example: 1212781357 fake_playlist_id: in: path name: playlist_id required: true schema: type: integer description: SoundCloud playlist id example: 10 repost_playlist_id: in: path name: playlist_id required: true schema: type: integer description: SoundCloud playlist id example: 1205584273 tag: in: path name: tag required: true schema: type: string description: tag example: some tag track_id: in: path name: track_id required: true schema: type: integer description: SoundCloud Track id example: 308946187 test_track_id: in: path name: track_id required: true schema: type: integer description: SoundCloud Track id example: 1015448728 user_id: in: path name: user_id required: true schema: type: integer description: SoundCloud User id example: 948745750 user_id_to_follow: in: path name: user_id required: true schema: type: integer description: SoundCloud User id example: 743372812 securitySchemes: AuthHeader: in: header type: apiKey name: Authorization description: 'The string "OAuth" followed by the user’s token: OAuth ACCESS_TOKEN' schemas: OAuthToken: type: object properties: grant_type: type: string description: One of `authorization_code`, `client_credentials`, `refresh_token` example: authorization_code enum: - authorization_code - refresh_token - client_credentials client_id: type: string description: Client ID example: CLIENT_ID client_secret: type: string description: Client secret example: CLIENT_SECRET code: type: string description: Authorization code. Required on `grant_type = authorization_code`. example: 1-123456-12345678-FAbcfbe9ir2wdj0 redirect_uri: type: string description: Redirect URI. Required on `grant_type = (authorization_code|refresh_token)`. example: https://mywebsite/auth/soundcloud refresh_token: type: string description: Refresh token. Required on `grant_type = refresh_token`. example: 1234c331329477150e7b6056ff212345 required: - grant_type - client_id - client_secret TrackMetadataRequest: type: object properties: track: type: object properties: title: type: string permalink: type: string sharing: type: string enum: - public - private default: public embeddable_by: type: string enum: - all - me - none description: who can embed this track "all", "me", or "none" purchase_url: type: string description: type: string genre: type: string tag_list: type: string description: 'The tag_list property contains a list of tags separated by spaces. Multiword tags are quoted in double quotes. We also support machine tags that follow the pattern NAMESPACE:KEY=VALUE. For example: geo:lat=43.555 camel:size=medium “machine:tag=with space” Machine tags are not revealed to the user on the track pages.' label_name: type: string release: type: string release_date: title: write only! type: string description: string, formatted as yyyy-mm-dd, representing release date streamable: type: boolean default: true downloadable: type: boolean default: true license: type: string enum: - no-rights-reserved - all-rights-reserved - cc-by - cc-by-nc - cc-by-nd - cc-by-sa - cc-by-nc-nd - cc-by-nc-sa description: 'Possible values: no-rights-reserved, all-rights-reserved, cc-by, cc-by-nc, cc-by-nd, cc-by-sa, cc-by-nc-nd, cc-by-nc-sa' commentable: type: boolean default: true isrc: type: string CreateUpdatePlaylistRequest: type: object properties: playlist: type: object properties: title: description: Title of the playlist type: string description: description: Description of the playlist type: string sharing: description: public or private type: string enum: - public - private tracks: description: List of tracks to add to playlist type: array items: type: object required: - id properties: id: description: SoundCloud track id type: string artwork_data: title: Only for POST type: string format: binary ean: description: The European Article Number type: string genre: description: Playlist's genre type: string label_name: description: Label name type: string license: description: License number type: string permalink: description: Playlist's permalink type: string permalink_url: description: Full permalink URL type: string purchase_title: description: Purchase title type: string purchase_url: description: Purchase URL type: string release: description: Playlist's release type: string release_date: description: Release date type: string set_type: description: Playlist or album type type: string enum: - album - playlist tag_list: description: A comma-separated list of tags type: string CreateUpdatePlaylistFormRequest: type: object properties: playlist[title]: type: string playlist[sharing]: type: string enum: - public - private default: public playlist[description]: type: string playlist[tracks][][id]: type: string description: To pass multiple tracks, pass multiple comma-separated values, e.g. -F "playlist[tracks][][id]=111,222" playlist[artwork_data]: title: The playlist artwork in binary format. Supported formats are gif, jpeg and png type: string format: binary playlist[ean]: type: string playlist[genre]: type: string playlist[label_name]: type: string playlist[license]: type: string playlist[permalink]: type: string playlist[permalink_url]: type: string playlist[purchase_title]: type: string playlist[purchase_url]: type: string playlist[release]: type: string playlist[release_date]: type: string playlist[set_type]: type: string enum: - album - playlist playlist[tag_list]: type: string TrackDataRequest: type: object properties: track[title]: type: string track[asset_data]: title: Only for uploading type: string format: binary track[permalink]: type: string track[sharing]: type: string enum: - public - private default: public track[embeddable_by]: type: string enum: - all - me - none description: who can embed this track "all", "me", or "none" track[purchase_url]: type: string track[description]: type: string track[genre]: type: string track[tag_list]: type: string description: 'The tag_list property contains a list of tags separated by spaces. Multiword tags are quoted in double quotes. We also support machine tags that follow the pattern NAMESPACE:KEY=VALUE. For example: geo:lat=43.555 camel:size=medium “machine:tag=with space” Machine tags are not revealed to the user on the track pages.' track[label_name]: type: string track[release]: type: string track[release_date]: title: write only! type: string description: string, formatted as yyyy-mm-dd, representing release date track[streamable]: type: boolean default: true track[downloadable]: type: boolean default: true track[license]: type: string enum: - no-rights-reserved - all-rights-reserved - cc-by - cc-by-nc - cc-by-nd - cc-by-sa - cc-by-nc-nd - cc-by-nc-sa description: 'Possible values: no-rights-reserved, all-rights-reserved, cc-by, cc-by-nc, cc-by-nd, cc-by-sa, cc-by-nc-nd, cc-by-nc-sa' track[commentable]: type: boolean default: true track[isrc]: type: string track[artwork_data]: title: Only for uploading, for PRO users type: string format: binary Found: type: object properties: status: type: string description: Status code. location: type: string description: Location URL of the resource. Error: type: object properties: code: type: integer message: type: string link: type: string error: type: string deprecated: true nullable: true errors: type: array deprecated: true items: type: string status: type: string deprecated: true TooManyRequests: allOf: - $ref: '#/components/schemas/Error' - type: object properties: spam_warning_urn: type: string User: type: object nullable: true description: SoundCloud User object properties: avatar_url: description: URL to a JPEG image type: string city: description: city type: string country: description: country type: string description: description: description type: string discogs_name: description: discogs name type: string first_name: description: first name type: string followers_count: description: number of followers type: integer followings_count: description: number of followed users type: integer full_name: description: first and last name type: string id: description: unique identifier type: integer kind: description: kind of resource type: string created_at: description: profile creation datetime format: date-time type: string last_modified: description: last modified datetime format: date-time type: string last_name: description: last name type: string myspace_name: description: myspace name type: string deprecated: true permalink: description: permalink of the resource type: string permalink_url: description: URL to the SoundCloud.com page type: string plan: description: subscription plan of the user type: string playlist_count: description: number of public playlists type: integer public_favorites_count: description: number of favorited public tracks type: integer reposts_count: description: number of reposts from user type: integer track_count: description: number of public tracks type: integer uri: description: API resource URL type: string username: description: username type: string website: description: a URL to the website type: string website_title: description: a custom title for the website type: string subscriptions: description: a list subscriptions associated with the user deprecated: true items: type: array anyOf: - description: subscription properties: product: description: product properties: id: description: subscription id instance. type: string name: description: subscription name instance. type: string type: object recurring: description: if the subscription is recurring or not type: boolean type: object Me: type: object description: SoundCloud Me object properties: avatar_url: description: URL to a JPEG image. type: string city: description: city. type: string comments_count: description: comments count. From now on, the field always has a `0` value. type: integer deprecated: true country: description: country. type: string created_at: description: created at date type: string description: description: description. type: string discogs_name: description: discogs name. type: string first_name: description: first name. type: string followers_count: description: number of followers. type: integer followings_count: description: number of followed users. type: integer full_name: description: first and last name. type: string id: description: unique identifier type: integer kind: description: kind of resource. type: string last_modified: description: last modified timestamp. type: string last_name: description: last name. type: string likes_count: description: likes count. type: integer locale: description: locale. type: string nullable: true online: description: online. type: boolean myspace_name: description: myspace name type: string deprecated: true permalink: description: permalink of the resource. type: string permalink_url: description: URL to the SoundCloud.com page. type: string plan: description: subscription plan of the user. type: string playlist_count: description: number of public playlists. type: integer primary_email_confirmed: description: boolean if email is confirmed. type: boolean private_playlists_count: description: number of private playlists. type: integer private_tracks_count: description: number of private tracks. type: integer public_favorites_count: description: number of favorited public tracks type: integer quota: description: user's upload quota properties: unlimited_upload_quota: description: unlimited upload quota. type: boolean upload_seconds_used: description: upload seconds used. type: integer upload_seconds_left: description: upload seconds left. type: integer nullable: true type: object reposts_count: description: number of reposts from user type: integer subscriptions: description: a list subscriptions associated with the user items: type: array anyOf: - description: subscription properties: product: description: product properties: id: description: subscription id instance. type: string name: description: subscription name instance. type: string type: object recurring: description: if the subscription is recurring or not type: boolean type: object track_count: description: number of public tracks. type: integer upload_seconds_left: description: upload seconds left. type: integer nullable: true uri: description: API resource URL. type: string username: description: username type: string website: description: a URL to the website. type: string website_title: description: a custom title for the website. type: string Users: type: object properties: collection: type: array items: $ref: '#/components/schemas/User' next_href: type: string Track: type: object description: Soundcloud Track object. properties: title: description: Track title. type: string artwork_url: description: URL to a JPEG image. type: string bpm: description: Tempo. type: integer comment_count: description: Number of comments. type: integer commentable: description: Is commentable. type: boolean created_at: description: Created timestamp. type: string description: description: Track description. type: string download_count: description: NUmber of downloads. type: integer downloadable: description: Is downloadable. type: string duration: description: Track duration. type: integer embeddable_by: deprecated: true description: Embeddable by. type: string favoritings_count: description: Number of favoritings. type: integer genre: description: Genre type: string id: description: Track identifier. type: integer isrc: description: ISRC code. type: string key_signature: description: Key signature. type: string kind: description: Type of object (track). type: string label_name: description: Label user name. type: string license: description: License type: string permalink_url: description: Permalink URL. type: string playback_count: description: Number of plays. type: integer purchase_title: description: Purchase title. type: string purchase_url: description: Purchase URL. type: string release: description: Release. type: string release_day: description: Day of release. type: integer release_month: description: Month of release. type: integer release_year: description: Year of release. type: integer sharing: description: Type of sharing (public/private). type: string stream_url: description: URL to stream. type: string streamable: description: Is streamable. type: boolean tag_list: description: Tags. type: string uri: description: Track URI. type: string user: allOf: - $ref: '#/components/schemas/User' - description: User who uploaded a track user_favorite: description: Is user's favourite. type: boolean user_playback_count: description: Number of plays by a user. type: integer waveform_url: description: Waveform URL. type: string available_country_codes: description: List of countries where track is available. type: string access: type: string nullable: true description: | Level of access the user (logged in or anonymous) has to the track. * `playable` - user is allowed to listen to a full track. * `preview` - user is allowed to preview a track, meaning a snippet is available * `blocked` - user can only see the metadata of a track, no streaming is possible enum: - playable - preview - blocked download_url: description: URL to download a track. type: string reposts_count: description: Number of reposts. type: integer secret_uri: description: Secret URL. type: string Tracks: type: object properties: collection: type: array items: $ref: '#/components/schemas/Track' next_href: type: string TracksList: deprecated: true type: array items: $ref: '#/components/schemas/Track' Playlist: type: object description: Soundcloud Playlist Object properties: title: description: Playlist title. type: string id: description: Playlist identifier. type: integer kind: description: Type of Soundcloud object (playlist). type: string artwork_url: description: URL to a JPEG image. type: string created_at: description: Created timestamp. type: string description: description: Playlist description. type: string downloadable: description: is downloadable. type: boolean duration: description: Playlist duration. type: integer ean: description: European Article Number. type: string embeddable_by: description: Embeddable by. type: string genre: description: Playlist genre. type: string label_id: description: Label user identifier. type: integer label_name: description: Label name. type: string last_modified: description: Last modified timestamp. type: string license: description: License. type: string permalink: description: Playlist permalink. type: string permalink_url: description: Playlist permalink URL. type: string playlist_type: description: Type of playlist. type: string purchase_title: description: Purchase title. type: string purchase_url: description: Purchase URL. type: string release: description: Release. type: string release_day: description: Day of release. type: integer release_month: description: Month of release. type: integer release_year: description: Year of release. type: integer sharing: description: Type of sharing (private/public). type: string streamable: description: Is streamable. type: boolean tag_list: description: Tags. type: string track_count: description: Count of tracks. type: integer tracks: description: List of tracks. type: array items: $ref: '#/components/schemas/Track' type: description: Playlist type. type: string uri: description: Playlist URI. type: string user: $ref: '#/components/schemas/User' user_id: description: User identifier. type: integer likes_count: description: Count of playlist likes. type: integer label: allOf: - type: object nullable: true - $ref: '#/components/schemas/User' tracks_uri: description: tracks URI. type: string nullable: true tags: description: Tags. type: string nullable: true Playlists: type: object properties: collection: type: array items: $ref: '#/components/schemas/Playlist' next_href: type: string PlaylistsArray: deprecated: true type: array items: $ref: '#/components/schemas/Playlist' Activities: type: object description: User's activities. properties: collection: type: array items: type: object properties: type: description: Type of activity (track). type: string created_at: description: Created timestamp. type: string origin: description: Origin. type: object anyOf: - $ref: '#/components/schemas/Track' - $ref: '#/components/schemas/Playlist' next_href: type: string future_href: type: string WebProfiles: type: array description: User's links added to their profile items: type: object properties: created_at: description: Timestamp of when the link was added to the profile. type: string id: description: Id type: integer kind: description: Kind type: string service: description: Service or platform type: string title: description: Link's title type: string url: description: URL of the external link type: string username: description: Username extracted from the external link type: string Comment: type: object description: User's Comment properties: body: description: Comment body. type: string created_at: description: Created timestamp. type: string id: description: Identifier. type: integer kind: description: Kind (comment). type: string user_id: description: User's identifier. type: integer timestamp: description: Timestamp. type: string track_id: description: Track's identifier. type: integer uri: description: Comment's URL. type: string user: type: object description: SoundCloud User object properties: id: description: unique identifier type: integer kind: description: kind of resource. type: string permalink: description: permalink of the resource. type: string username: description: username type: string last_modified: description: last modified timestamp. type: string uri: description: API resource URL. type: string permalink_url: description: URL to the SoundCloud.com page. type: string avatar_url: description: URL to a JPEG image. type: string followers_count: description: number of followers. type: integer followings_count: description: number of followed users. type: integer reposts_count: description: number of reposts from user type: integer Comments: type: object properties: collection: type: array items: $ref: '#/components/schemas/Comment' next_href: type: string nullable: true Streams: type: object properties: http_mp3_128_url: type: string hls_mp3_128_url: type: string hls_opus_64_url: type: string preview_mp3_128_url: type: string responses: Success: description: Success content: application/json; charset=utf-8: examples: default: $ref: '#/components/examples/Success' Successful: description: Success content: application/json; charset=utf-8: examples: default: $ref: '#/components/examples/Successful' Accepted: description: Accepted content: application/json; charset=utf-8: examples: default: $ref: '#/components/examples/Accepted' Found: description: Found content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/Found' FoundHtml: description: Found content: application/json; charset=utf-8: schema: type: string Created: description: Created content: application/json; charset=utf-8: examples: default: $ref: '#/components/examples/Created' BadRequest: description: Bad Request content: application/json; charset=utf-8: examples: default: $ref: '#/components/examples/BadRequest' schema: $ref: '#/components/schemas/Error' Unauthorized: description: Unauthorized content: application/json; charset=utf-8: examples: default: $ref: '#/components/examples/Unauthorized' schema: $ref: '#/components/schemas/Error' Forbidden: description: Forbidden content: application/json: examples: default: $ref: '#/components/examples/Forbidden' schema: $ref: '#/components/schemas/Error' NotFound: description: Not Found content: application/json: examples: default: $ref: '#/components/examples/NotFound' schema: $ref: '#/components/schemas/Error' UnprocessableEntity: description: Unprocessable Entity content: application/json: examples: default: $ref: '#/components/examples/UnprocessableEntity' schema: $ref: '#/components/schemas/Error' TooManyRequests: description: Too Many Requests content: application/json: examples: default: $ref: '#/components/examples/TooManyRequests' schema: $ref: '#/components/schemas/TooManyRequests' User: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/User' examples: default: $ref: '#/components/examples/User' Me: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/Me' Users: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/Users' examples: default: $ref: '#/components/examples/Users' Track: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/Track' examples: default: $ref: '#/components/examples/Track' Tracks: description: Success content: application/json; charset=utf-8: schema: oneOf: - $ref: '#/components/schemas/Tracks' - $ref: '#/components/schemas/TracksList' examples: default: $ref: '#/components/examples/Tracks' tracksList: $ref: '#/components/examples/TracksList' TracksList: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/TracksList' examples: default: $ref: '#/components/examples/TracksList' Playlist: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/Playlist' examples: default: $ref: '#/components/examples/Playlist' Playlists: description: Success content: application/json; charset=utf-8: schema: oneOf: - $ref: '#/components/schemas/Playlists' - $ref: '#/components/schemas/PlaylistsArray' examples: default: $ref: '#/components/examples/Playlists' playlistsArray: $ref: '#/components/examples/PlaylistsArray' Activities: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/Activities' examples: default: $ref: '#/components/examples/Activities' WebProfiles: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/WebProfiles' examples: default: $ref: '#/components/examples/WebProfiles' Comment: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/Comment' examples: default: $ref: '#/components/examples/Comment' Comments: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/Comments' examples: default: $ref: '#/components/examples/Comments' Streams: description: Success content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/Streams' examples: default: $ref: '#/components/examples/Streams' examples: Activities: value: collection: - type: track:repost created_at: 2020/10/12 12:02:44 +0000 origin: allOf: - $ref: '#/components/examples/Track/value' - type: playlist created_at: 2020/10/12 12:02:44 +0000 origin: allOf: - $ref: '#/components/examples/Playlist/value' next_href: https://api.soundcloud.com/me/activities?limit=10&cursor=00000 future_href: https://api.soundcloud.com/me/activities?limit=10&cursor=000001 ExpiringToken: value: access_token: some string expires_in: 3599 scope: '' refresh_token: some string token_type: bearer CreateUpdatePlaylistRequest: value: playlist: title: Test Auto-created Playlist description: Playlist for test purposes sharing: private tracks: - id: 219787221 - id: 783019264 - id: 870073492 CreateUpdatePlaylistFormRequest: value: playlist[title]: Test drum sample playlist[sharing]: private playlist[description]: Public-api test sample upload TrackDataRequest: value: track[title]: Test drum sample track[asset_data]: <binary string> track[permalink]: test-drum-sample track[sharing]: private track[embeddable_by]: me track[purchase_url]: null track[description]: Public-api test sample upload track[genre]: Pop track[tag_list]: null track[label_name]: null track[release]: null track[release_date]: '2021-02-18T00:00:00.000Z' track[streamable]: true track[downloadable]: false track[license]: no-rights-reserved track[commentable]: true track[isrc]: null track[artwork_data]: null Comment: value: body: comment body created_at: 2007/09/11 15:40:24 +0000 id: 1234 kind: comment timestamp: 4960 track_id: 123456 uri: https://api.soundcloud.com/comments/1234 user: id: 12345 kind: user permalink: permalink username: user name last_modified: 2017/04/10 14:48:03 +0000 uri: https://api.soundcloud.com/users/12345 permalink_url: https://soundcloud.com/permalink avatar_url: https://i1.sndcdn.com/avatars-large.jpg followers_count: 138 followings_count: 172 public_favorites_count: 5 reposts_count: 0 user_id: 12345 Comments: value: collection: $ref: '#/components/examples/Comment/value' next_href: https://api.soundcloud.com/collection?page_size=10&cursor=1234567 Playlist: value: artwork_url: '' created_at: 2020/07/16 16:09:54 +0000 description: null downloadable: true duration: 11000 ean: null embeddable_by: all genre: '' id: 12345 kind: playlist label: null label_id: null label_name: null last_modified: 2020/09/08 09:13:00 +0000 license: all-rights-reserved likes_count: 0 permalink: permalink permalink_url: https://soundcloud.com/userPermalink/sets/permalink playlist_type: '' purchase_title: null purchase_url: null release: null release_day: null release_month: null release_year: null sharing: public streamable: true tag_list: '' tags: '' title: permalink track_count: 2 tracks: allOf: - $ref: '#/components/examples/Track/value' tracks_uri: https://api.soundcloud.com/playlists/12345/tracks type: '' uri: https://api.soundcloud.com/playlists/12345 user: $ref: '#/components/examples/User/value' user_id: 1234 Playlists: value: collection: $ref: '#/components/examples/Playlist/value' next_href: https://api.soundcloud.com/collection?page_size=10&cursor=1234567 PlaylistsArray: description: Deprecated, use Playlists instead. value: $ref: '#/components/examples/Playlist/value' Streams: value: http_mp3_128_url: https://cf-media.sndcdn.com/ hls_mp3_128_url: https://cf-media.sndcdn.com/ hls_opus_64_url: https://cf-media.sndcdn.com/ preview_mp3_128_url: https://cf-media.sndcdn.com/ Track: value: artwork_url: https://i1.sndcdn.com/artworks-large.jpg available_country_codes: null bpm: null comment_count: 4 commentable: true created_at: 2019/01/15 15:40:49 +0000 description: null download_count: 0 download_url: https://api.soundcloud.com/tracks/1234/download downloadable: false duration: 40000 embeddable_by: all favoritings_count: 271 genre: Rock id: 1234 isrc: null key_signature: null kind: track label_name: some label license: all-rights-reserved permalink_url: https://soundcloud.com/userPermalink/trackPermalink playback_count: 8027 purchase_title: null purchase_url: null release: null release_day: 22 release_month: 8 release_year: 2019 reposts_count: 18 secret_uri: null sharing: public stream_url: https://api.soundcloud.com/tracks/1234/stream streamable: true tag_list: '' title: Some title uri: https://api.soundcloud.com/tracks/1234 user: $ref: '#/components/examples/User/value' user_favorite: true user_playback_count: 1 waveform_url: https://wave.sndcdn.com/someString.png access: playable Tracks: value: collection: $ref: '#/components/examples/Track/value' next_href: https://api.soundcloud.com/collection?page_size=10&cursor=1234567 TracksList: description: Deprecated, use Tracks instead. value: $ref: '#/components/examples/Track/value' User: value: avatar_url: https://i1.sndcdn.com/avatars.jpg city: City country: Country created_at: 2018/01/01 12:08:25 +0000 description: null discogs_name: null first_name: First_name followers_count: 0 followings_count: 0 full_name: Full Name id: 12345 kind: user last_modified: 2020/01/03 12:08:25 +0000 last_name: Last_name myspace_name: null permalink: permalink permalink_url: https://soundcloud.com/permalink plan: Free playlist_count: 3 public_favorites_count: 20 reposts_count: 0 subscriptions: - product: id: some-id name: some.name track_count: 0 upload_seconds_left: 10800 uri: https://api.soundcloud.com/users/1234 username: some.user website: null website_title: null Users: value: collection: $ref: '#/components/examples/User/value' next_href: https://api.soundcloud.com/collection?page_size=10&cursor=1234567 WebProfiles: value: - created_at: 1995/10/20 12:10:39 +0000 id: 1234 kind: web-profile service: facebook title: my facebook url: http://facebook.com username: username Success: value: status: 200 - OK Successful: value: status: 200 - Successful Accepted: value: status: 202 - Accepted Created: value: status: 201 - Created ErrorUnsupportedGrant: value: code: 400 message: unsupported_grant link: https://developers.soundcloud.com/docs/api/guide#authentication BadRequest: value: code: 400 message: Detailed message of errors, when available link: https://developers.soundcloud.com/docs/api/explorer/open-api ErrorInvalidGrant: value: code: 400 message: invalid_grant link: https://developers.soundcloud.com/docs/api/guide#authentication Unauthorized: value: code: 401 message: Detailed message of errors, when available link: https://developers.soundcloud.com/docs/api/explorer/open-api ErrorInvalidScope: value: code: 401 message: invalid_scope link: https://developers.soundcloud.com/docs/api/guide#authentication ErrorInvalidClient: value: code: 401 message: invalid_client link: https://developers.soundcloud.com/docs/api/guide#authentication Forbidden: value: code: 403 message: Detailed message of errors, when available link: https://developers.soundcloud.com/docs/api/explorer/open-api NotFound: value: code: 404 message: Detailed message of errors, when available link: https://developers.soundcloud.com/docs/api/explorer/open-api UnprocessableEntity: value: code: 422 message: Detailed message of errors, when available link: https://developers.soundcloud.com/docs/api/explorer/open-api TooManyRequests: value: code: 429 message: Detailed message of errors, when available spam_warning_urn: soundcloud:spam-warnings:1 link: https://developers.soundcloud.com/docs/api/rate-limits#errors OK: value: status: Status(200) - OK TrackMetadataRequest: value: track[title]: Updated Test Track