diff --git a/api/swagger/swagger-v1.yaml b/api/swagger/swagger-v1.yaml index 56a814e9..ab5abdd1 100644 --- a/api/swagger/swagger-v1.yaml +++ b/api/swagger/swagger-v1.yaml @@ -2,6686 +2,6750 @@ openapi: 3.0.1 info: title: API description: Audius V1 API - version: "1.0" + version: '1.0' servers: - - url: /v1 +- url: /v1 tags: - - name: users - description: User related operations - - name: playlists - description: Playlist related operations - - name: tracks - description: Track related operations - - name: challenges - description: Challenge related operations - - name: tips - description: Tip related operations - - name: developer_apps - description: Developer app related operations - - name: dashboard_wallet_users - description: Protocol dashboard wallet users related operations - - name: resolve - description: Audius Cannonical URL resolver - - name: comments - description: Comment related operations - - name: events - description: Events related operations - - name: explore - description: Explore related operations - - name: rewards - description: Rewards related operations - - name: prizes - description: Prize claiming related operations +- name: users + description: User related operations +- name: playlists + description: Playlist related operations +- name: tracks + description: Track related operations +- name: challenges + description: Challenge related operations +- name: tips + description: Tip related operations +- name: developer_apps + description: Developer app related operations +- name: dashboard_wallet_users + description: Protocol dashboard wallet users related operations +- name: resolve + description: Audius Cannonical URL resolver +- name: comments + description: Comment related operations +- name: events + description: Events related operations +- name: explore + description: Explore related operations +- name: rewards + description: Rewards related operations +- name: prizes + description: Prize claiming related operations paths: /challenges/undisbursed: get: tags: - - challenges + - challenges description: Get all undisbursed challenges operationId: Get Undisbursed Challenges parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: - A User ID to filter the undisbursed challenges to a particular - user - schema: - type: string - - name: completed_blocknumber - in: query - description: Starting blocknumber to retrieve completed undisbursed challenges - schema: - type: integer - - name: challenge_id - in: query - description: - A challenge ID to filter the undisbursed challenges to a particular - challenge - schema: - type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: A User ID to filter the undisbursed challenges to a particular + user + schema: + type: string + - name: completed_blocknumber + in: query + description: Starting blocknumber to retrieve completed undisbursed challenges + schema: + type: integer + - name: challenge_id + in: query + description: A challenge ID to filter the undisbursed challenges to a particular + challenge + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/undisbursed_challenges" - "400": + $ref: '#/components/schemas/undisbursed_challenges' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /challenges/undisbursed/{user_id}: get: tags: - - challenges + - challenges description: Get all undisbursed challenges for a user operationId: Get Undisbursed Challenges For User parameters: - - name: user_id - in: path - description: - A User ID to filter the undisbursed challenges to a particular - user - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: completed_blocknumber - in: query - description: Starting blocknumber to retrieve completed undisbursed challenges - schema: - type: integer - - name: challenge_id - in: query - description: - A challenge ID to filter the undisbursed challenges to a particular - challenge - schema: - type: string + - name: user_id + in: path + description: A User ID to filter the undisbursed challenges to a particular + user + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: completed_blocknumber + in: query + description: Starting blocknumber to retrieve completed undisbursed challenges + schema: + type: integer + - name: challenge_id + in: query + description: A challenge ID to filter the undisbursed challenges to a particular + challenge + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/undisbursed_challenges" - "400": + $ref: '#/components/schemas/undisbursed_challenges' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /comments/unclaimed_id: get: tags: - - comments + - comments description: Gets an unclaimed blockchain comment ID operationId: Get unclaimed comment ID responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/unclaimed_id_response" - "500": + $ref: '#/components/schemas/unclaimed_id_response' + '500': description: Server error content: {} /comments: post: tags: - - comments + - comments description: Creates a new comment operationId: Create Comment security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/create_comment_request_body" + $ref: '#/components/schemas/create_comment_request_body' responses: - "201": + '201': description: Comment created successfully content: application/json: schema: - $ref: "#/components/schemas/create_comment_response" - "400": + $ref: '#/components/schemas/create_comment_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "500": + '500': description: Server error content: {} /comments/{comment_id}: get: tags: - - comments + - comments description: Gets a comment by ID operationId: Get Comment parameters: - - name: comment_id - in: path - description: A Comment ID - required: true - schema: - type: string + - name: comment_id + in: path + description: A Comment ID + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/comment_response" - "500": + $ref: '#/components/schemas/comment_response' + '500': description: Server error content: {} put: tags: - - comments + - comments description: Updates a comment operationId: Update Comment security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: comment_id - in: path - description: A Comment ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: comment_id + in: path + description: A Comment ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/update_comment_request_body" + $ref: '#/components/schemas/update_comment_request_body' responses: - "200": + '200': description: Comment updated successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Comment not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - comments + - comments description: Deletes a comment operationId: Delete Comment security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: comment_id - in: path - description: A Comment ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: comment_id + in: path + description: A Comment ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Comment deleted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Comment not found content: {} - "500": + '500': description: Server error content: {} /comments/{comment_id}/react: post: tags: - - comments + - comments description: React to a comment operationId: React to Comment security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: comment_id - in: path - description: A Comment ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: comment_id + in: path + description: A Comment ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: content: application/json: schema: - $ref: "#/components/schemas/react_comment_request_body" + $ref: '#/components/schemas/react_comment_request_body' required: true x-codegen-request-body-name: metadata responses: - "200": + '200': description: Comment reacted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Comment not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - comments + - comments description: Unreact to a comment operationId: Unreact to Comment security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: comment_id - in: path - description: A Comment ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: comment_id + in: path + description: A Comment ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: content: application/json: schema: - $ref: "#/components/schemas/react_comment_request_body" + $ref: '#/components/schemas/react_comment_request_body' required: true x-codegen-request-body-name: metadata responses: - "200": + '200': description: Comment unreacted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Comment not found content: {} - "500": + '500': description: Server error content: {} /comments/{comment_id}/pin: post: tags: - - comments + - comments description: Pin a comment operationId: Pin Comment security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: comment_id - in: path - description: A Comment ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: comment_id + in: path + description: A Comment ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: content: application/json: schema: - $ref: "#/components/schemas/pin_comment_request_body" + $ref: '#/components/schemas/pin_comment_request_body' required: true x-codegen-request-body-name: metadata responses: - "200": + '200': description: Comment pinned successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Comment not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - comments + - comments description: Unpin a comment operationId: Unpin Comment security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: comment_id - in: path - description: A Comment ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: comment_id + in: path + description: A Comment ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: content: application/json: schema: - $ref: "#/components/schemas/pin_comment_request_body" + $ref: '#/components/schemas/pin_comment_request_body' required: true x-codegen-request-body-name: metadata responses: - "200": + '200': description: Comment unpinned successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Comment not found content: {} - "500": + '500': description: Server error content: {} /comments/{comment_id}/report: post: tags: - - comments + - comments description: Report a comment operationId: Report Comment security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: comment_id - in: path - description: A Comment ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: comment_id + in: path + description: A Comment ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Comment reported successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Comment not found content: {} - "500": + '500': description: Server error content: {} /comments/{comment_id}/replies: get: tags: - - comments + - comments description: Gets replies to a parent comment operationId: Get Comment Replies parameters: - - name: comment_id - in: path - description: A Comment ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: comment_id + in: path + description: A Comment ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/comment_replies_response" - "400": + $ref: '#/components/schemas/comment_replies_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /developer-apps: post: tags: - - developer_apps + - developer_apps description: Create a new developer app. Indexer validates grants. operationId: Create Developer App parameters: - - name: user_id - in: query - description: The user ID of the user creating the developer app - required: true - schema: - type: string + - name: user_id + in: query + description: The user ID of the user creating the developer app + required: true + schema: + type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/create_developer_app_request_body" + $ref: '#/components/schemas/create_developer_app_request_body' responses: - "200": + '200': description: Developer app created successfully content: application/json: schema: - $ref: "#/components/schemas/create_developer_app_response" - "400": + $ref: '#/components/schemas/create_developer_app_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "500": + '500': description: Server error content: {} /developer-apps/{address}: get: tags: - - developer_apps + - developer_apps description: Gets developer app matching given address (API key) operationId: Get Developer App parameters: - - name: address - in: path - description: A developer app address (API Key) - required: true - schema: - type: string + - name: address + in: path + description: A developer app address (API Key) + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/developer_app_response" - "400": + $ref: '#/components/schemas/developer_app_response' + '400': description: Bad request content: {} - "404": + '404': description: Not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - developer_apps + - developer_apps description: Deletes a developer app. Indexer validates grants. operationId: Delete Developer App parameters: - - name: user_id - in: query - description: The user ID of the user who owns the developer app - required: true - schema: - type: string - - name: address - in: path - description: Developer app address (API Key) - required: true - schema: - type: string + - name: user_id + in: query + description: The user ID of the user who owns the developer app + required: true + schema: + type: string + - name: address + in: path + description: Developer app address (API Key) + required: true + schema: + type: string responses: - "200": + '200': description: Developer app deleted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Not found content: {} - "500": + '500': description: Server error content: {} put: tags: - - developer_apps + - developer_apps description: Updates a developer app. Indexer validates grants. operationId: Update Developer App parameters: - - name: user_id - in: query - description: The user ID of the user who owns the developer app - required: true - schema: - type: string - - name: address - in: path - description: Developer app address (API Key) - required: true - schema: - type: string + - name: user_id + in: query + description: The user ID of the user who owns the developer app + required: true + schema: + type: string + - name: address + in: path + description: Developer app address (API Key) + required: true + schema: + type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/update_developer_app_request_body" + $ref: '#/components/schemas/update_developer_app_request_body' responses: - "200": + '200': description: Developer app updated successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "400": + $ref: '#/components/schemas/write_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "404": + '404': description: Developer app not found content: {} - "500": + '500': description: Server error content: {} /developer-apps/{address}/access-keys/deactivate: post: tags: - - developer_apps - description: Deactivate a bearer token (API access key) for a developer app. Indexer validates grants. + - developer_apps + description: Deactivate a bearer token (API access key) for a developer app. + Indexer validates grants. operationId: Deactivate Developer App Access Key parameters: - - name: user_id - in: query - description: The user ID of the user who owns the developer app - required: true - schema: - type: string - - name: address - in: path - description: Developer app address (API Key) - required: true - schema: - type: string + - name: user_id + in: query + description: The user ID of the user who owns the developer app + required: true + schema: + type: string + - name: address + in: path + description: Developer app address (API Key) + required: true + schema: + type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/deactivate_access_key_request_body" + $ref: '#/components/schemas/deactivate_access_key_request_body' responses: - "200": + '200': description: Access key deactivated successfully content: application/json: schema: - $ref: "#/components/schemas/deactivate_access_key_response" - "400": + $ref: '#/components/schemas/deactivate_access_key_response' + '400': description: Bad request (api_access_key required) content: {} - "401": + '401': description: Unauthorized content: {} - "404": + '404': description: Developer app or access key not found content: {} - "500": + '500': description: Server error content: {} /developer-apps/{address}/access-keys: post: tags: - - developer_apps - description: Create a new bearer token (API access key) for a developer app. Indexer validates grants. + - developer_apps + description: Create a new bearer token (API access key) for a developer app. + Indexer validates grants. operationId: Create Developer App Access Key parameters: - - name: user_id - in: query - description: The user ID of the user who owns the developer app - required: true - schema: - type: string - - name: address - in: path - description: Developer app address (API Key) - required: true - schema: - type: string + - name: user_id + in: query + description: The user ID of the user who owns the developer app + required: true + schema: + type: string + - name: address + in: path + description: Developer app address (API Key) + required: true + schema: + type: string responses: - "200": + '200': description: Access key created successfully content: application/json: schema: - $ref: "#/components/schemas/create_access_key_response" - "401": + $ref: '#/components/schemas/create_access_key_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Developer app not found content: {} - "500": + '500': description: Server error content: {} /dashboard_wallet_users: get: tags: - - dashboard_wallet_users + - dashboard_wallet_users description: Gets Audius user profiles connected to given dashboard wallet addresses operationId: Bulk get dashboard wallet users parameters: - - name: wallets - in: query - description: The wallets for which to fetch connected Audius user profiles. - required: true - style: form - explode: false - schema: - type: array - items: - type: string + - name: wallets + in: query + description: The wallets for which to fetch connected Audius user profiles. + required: true + style: form + explode: false + schema: + type: array + items: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/dashboard_wallet_users_response" - "400": + $ref: '#/components/schemas/dashboard_wallet_users_response' + '400': description: Bad request content: {} - "404": + '404': description: No such dashboard wallets content: {} - "500": + '500': description: Server error content: {} /events: get: tags: - - events + - events description: Get a list of events by ID operationId: Get Bulk Events parameters: - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: id - in: query - description: The ID of the event(s) to retrieve - style: form - explode: true - schema: - type: array - items: - type: string - - name: event_type - in: query - description: The type of event to filter by - schema: + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: id + in: query + description: The ID of the event(s) to retrieve + style: form + explode: true + schema: + type: array + items: type: string - enum: - - remix_contest - - live_event - - new_release + - name: event_type + in: query + description: The type of event to filter by + schema: + type: string + enum: + - remix_contest + - live_event + - new_release responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/events_response" - "400": + $ref: '#/components/schemas/events_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /events/all: get: tags: - - events + - events summary: Get all events description: Get all events operationId: Get All Events parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - default: newest - enum: - - newest - - timestamp - - name: event_type - in: query - description: The type of event to filter by - schema: - type: string - enum: - - remix_contest - - live_event - - new_release + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: sort_method + in: query + description: The sort method + schema: + type: string + default: newest + enum: + - newest + - timestamp + - name: event_type + in: query + description: The type of event to filter by + schema: + type: string + enum: + - remix_contest + - live_event + - new_release responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/events_response" - "400": + $ref: '#/components/schemas/events_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /events/entity: get: tags: - - events + - events summary: Get events for a specific entity description: Get events for a specific entity operationId: Get Entity Events parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: entity_id - in: query - description: The ID of the entity to get events for - required: true - style: form - explode: true - schema: - type: array - items: - type: string - - name: entity_type - in: query - description: The type of entity to get events for - schema: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: entity_id + in: query + description: The ID of the entity to get events for + required: true + style: form + explode: true + schema: + type: array + items: type: string - enum: - - track - - collection - - user - - name: filter_deleted - in: query - description: Whether to filter deleted events - schema: - type: boolean - default: true + - name: entity_type + in: query + description: The type of entity to get events for + schema: + type: string + enum: + - track + - collection + - user + - name: filter_deleted + in: query + description: Whether to filter deleted events + schema: + type: boolean + default: true responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/events_response" - "400": + $ref: '#/components/schemas/events_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /events/unclaimed_id: get: tags: - - events + - events description: Gets an unclaimed blockchain event ID operationId: Get unclaimed event ID responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/unclaimed_id_response" - "500": + $ref: '#/components/schemas/unclaimed_id_response' + '500': description: Server error content: {} /explore/best-selling: get: tags: - - explore - summary: Get best selling tracks and/or albums - description: Get best selling tracks and playlists + - explore + summary: Get best selling tracks and playlists with related entities + description: Get best selling tracks and/or albums with related entities operationId: Get Best Selling parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: type - in: query - description: The type of content to filter by - schema: - type: string - default: all - enum: - - all - - track - - album + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: type + in: query + description: The type of content to filter by + schema: + type: string + default: all + enum: + - all + - track + - album responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/best_selling_response" - "400": + $ref: '#/components/schemas/best_selling_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /playlists: get: tags: - - playlists + - playlists description: Gets a list of playlists by ID operationId: Get Bulk Playlists parameters: - - name: user_id - in: query - description: The user ID of the user making the request - schema: + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: id + in: query + description: The ID of the playlist(s) + style: form + explode: true + schema: + type: array + items: + type: string + - name: upc + in: query + description: The UPC of the playlist(s) + style: form + explode: true + schema: + type: array + items: type: string - - name: id - in: query - description: The ID of the playlist(s) - style: form - explode: true - schema: - type: array - items: - type: string - - name: upc - in: query - description: The UPC of the playlist(s) - style: form - explode: true - schema: - type: array - items: - type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/playlist_response" - "400": + $ref: '#/components/schemas/playlist_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} post: tags: - - playlists + - playlists description: Creates a new playlist or album operationId: Create Playlist security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/create_playlist_request_body" + $ref: '#/components/schemas/create_playlist_request_body' responses: - "201": + '201': description: Playlist created successfully content: application/json: schema: - $ref: "#/components/schemas/create_playlist_response" - "400": + $ref: '#/components/schemas/create_playlist_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "500": + '500': description: Server error content: {} /playlists/by_permalink/{handle}/{slug}: get: tags: - - playlists + - playlists description: Get a playlist by handle and slug operationId: Get Playlist By Handle and Slug parameters: - - name: handle - in: path - description: playlist owner handle - required: true - schema: - type: string - - name: slug - in: path - description: playlist slug - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: handle + in: path + description: playlist owner handle + required: true + schema: + type: string + - name: slug + in: path + description: playlist slug + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/playlist_response" + $ref: '#/components/schemas/playlist_response' /playlists/search: get: tags: - - playlists + - playlists description: Search for a playlist operationId: Search Playlists parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: query - in: query - description: The search query - schema: - type: string - - name: genre - in: query - description: The genres to filter by - style: form - explode: true - schema: - type: array - items: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - enum: - - relevant - - popular - - recent - - name: mood - in: query - description: The moods to filter by - style: form - explode: true - schema: - type: array - items: - type: string - - name: includePurchaseable - in: query - description: Whether or not to include purchaseable content - schema: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: query + in: query + description: The search query + schema: + type: string + - name: genre + in: query + description: The genres to filter by + style: form + explode: true + schema: + type: array + items: type: string - - name: has_downloads - in: query - description: Only include tracks that have downloads in the track results - schema: + - name: sort_method + in: query + description: The sort method + schema: + type: string + enum: + - relevant + - popular + - recent + - name: mood + in: query + description: The moods to filter by + style: form + explode: true + schema: + type: array + items: type: string + - name: includePurchaseable + in: query + description: Whether or not to include purchaseable content + schema: + type: string + - name: has_downloads + in: query + description: Only include tracks that have downloads in the track results + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/playlist_search_result" - "400": + $ref: '#/components/schemas/playlist_search_result' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /playlists/trending: get: tags: - - playlists - description: Gets trending playlists for a time period + - playlists + description: Returns trending playlists for a time period operationId: Get Trending Playlists parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: time - in: query - description: Calculate trending over a specified time range - schema: - type: string - enum: - - week - - month - - year - - allTime - - name: type - in: query - description: The type of content to filter by - schema: - type: string - default: playlist - enum: - - playlist - - album - - name: omit_tracks - in: query - description: Whether to omit tracks from the response - schema: - type: boolean - default: false + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: time + in: query + description: Calculate trending over a specified time range + schema: + type: string + enum: + - week + - month + - year + - allTime + - name: type + in: query + description: The type of content to filter by + schema: + type: string + default: playlist + enum: + - playlist + - album + - name: omit_tracks + in: query + description: Whether to omit tracks from the response + schema: + type: boolean + default: false responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/trending_playlists_response" - "400": + $ref: '#/components/schemas/trending_playlists_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /playlists/{playlist_id}: get: tags: - - playlists + - playlists description: Get a playlist by ID operationId: Get Playlist parameters: - - name: playlist_id - in: path - description: A Playlist ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/playlist_response" - "400": - description: Bad request - content: {} - "500": - description: Server error - content: {} + $ref: '#/components/schemas/playlist_response' put: tags: - - playlists + - playlists description: Updates an existing playlist or album operationId: Update Playlist security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: playlist_id - in: path - description: A Playlist ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/update_playlist_request_body" + $ref: '#/components/schemas/update_playlist_request_body' responses: - "200": + '200': description: Playlist updated successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "400": + $ref: '#/components/schemas/write_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "404": + '404': description: Playlist not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - playlists + - playlists description: Deletes a playlist or album operationId: Delete Playlist security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: playlist_id - in: path - description: A Playlist ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Playlist deleted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Playlist not found content: {} - "500": + '500': description: Server error content: {} /playlists/{playlist_id}/access-info: get: tags: - - playlists - description: - Gets the information necessary to access the playlist and what + - playlists + description: Gets the information necessary to access the playlist and what access the given user has. operationId: Get Playlist Access Info parameters: - - name: playlist_id - in: path - description: A Playlist ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/access_info_response" + $ref: '#/components/schemas/access_info_response' /playlists/{playlist_id}/tracks: get: tags: - - playlists + - playlists description: Fetch tracks within a playlist. operationId: Get Playlist Tracks parameters: - - name: playlist_id - in: path - description: A Playlist ID - required: true - schema: - type: string + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/playlist_tracks_response" - "400": + $ref: '#/components/schemas/playlist_tracks_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /playlists/{playlist_id}/favorites: post: tags: - - playlists + - playlists description: Favorite a playlist operationId: Favorite Playlist security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: playlist_id - in: path - description: A Playlist ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: required: false x-codegen-request-body-name: metadata content: application/json: schema: - $ref: "#/components/schemas/favorite_request_body" + $ref: '#/components/schemas/favorite_request_body' responses: - "200": + '200': description: Playlist favorited successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Playlist not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - playlists + - playlists description: Unfavorite a playlist operationId: Unfavorite Playlist security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: playlist_id - in: path - description: A Playlist ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string - responses: - "200": - description: Playlist unfavorited successfully + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string + responses: + '200': + description: Playlist unfavorited successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Playlist not found content: {} - "500": + '500': + description: Server error + content: {} + get: + tags: + - playlists + description: Get users that favorited a playlist + operationId: Get Users From Playlist Favorites + parameters: + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/following_response' + '400': + description: Bad request + content: {} + '500': description: Server error content: {} /playlists/{playlist_id}/reposts: post: tags: - - playlists + - playlists description: Repost a playlist operationId: Repost Playlist security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: playlist_id - in: path - description: A Playlist ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: required: false content: application/json: schema: - $ref: "#/components/schemas/repost_request_body" + $ref: '#/components/schemas/repost_request_body' responses: - "200": + '200': description: Playlist reposted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Playlist not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - playlists + - playlists description: Unrepost a playlist operationId: Unrepost Playlist security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: playlist_id - in: path - description: A Playlist ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Playlist unreposted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Playlist not found content: {} - "500": + '500': + description: Server error + content: {} + get: + tags: + - playlists + description: Get users that reposted a playlist + operationId: Get Users From Playlist Reposts + parameters: + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/following_response' + '400': + description: Bad request + content: {} + '500': description: Server error content: {} /playlists/{playlist_id}/shares: post: tags: - - playlists + - playlists description: Record a playlist share event operationId: Share Playlist security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: playlist_id - in: path - description: A Playlist ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: playlist_id + in: path + description: A Playlist ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Playlist share recorded successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Playlist not found content: {} - "500": + '500': description: Server error content: {} /resolve: get: tags: - - resolve - summary: - Resolves and redirects a provided Audius app URL to the API resource + - resolve + summary: Resolves and redirects a provided Audius app URL to the API resource URL it represents - description: |- - This endpoint allows you to lookup and access API resources when you only know the + description: 'This endpoint allows you to lookup and access API resources when + you only know the + audius.co URL. - Tracks, Playlists, and Users are supported. + + Tracks, Playlists, and Users are supported.' operationId: Resolve parameters: - - name: url - in: query - description: - URL to resolve. Either fully formed URL (https://audius.co) or - just the absolute path - required: true - schema: - type: string + - name: url + in: query + description: URL to resolve. Either fully formed URL (https://audius.co) or + just the absolute path + required: true + schema: + type: string responses: - "302": + '302': description: Internal redirect content: {} /tips: get: tags: - - tips + - tips description: Gets the most recent tips on the network operationId: Get Tips parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: receiver_min_followers - in: query - description: Only include tips to recipients that have this many followers - schema: - type: integer - default: 0 - - name: receiver_is_verified - in: query - description: Only include tips to recipients that are verified - schema: - type: boolean - default: false - - name: current_user_follows - in: query - description: - Only include tips involving the user's followers in the given - capacity. Requires user_id to be set. - schema: - type: string - enum: - - sender - - receiver - - sender_or_receiver - - name: unique_by - in: query - description: - "Only include the most recent tip for a user was involved in\ - \ the given capacity.\n\nEg. 'sender' will ensure that each tip returned\ - \ has a unique sender, using the most recent tip sent by a user if that\ - \ user has sent multiple tips.\n " - schema: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: receiver_min_followers + in: query + description: Only include tips to recipients that have this many followers + schema: + type: integer + default: 0 + - name: receiver_is_verified + in: query + description: Only include tips to recipients that are verified + schema: + type: boolean + default: false + - name: current_user_follows + in: query + description: Only include tips involving the user's followers in the given + capacity. Requires user_id to be set. + schema: + type: string + enum: + - sender + - receiver + - sender_or_receiver + - name: unique_by + in: query + description: "Only include the most recent tip for a user was involved in\ + \ the given capacity.\n\nEg. 'sender' will ensure that each tip returned\ + \ has a unique sender, using the most recent tip sent by a user if that\ + \ user has sent multiple tips.\n " + schema: + type: string + enum: + - sender + - receiver + - name: min_slot + in: query + description: The minimum Solana slot to pull tips from + schema: + type: integer + default: 0 + - name: max_slot + in: query + description: The maximum Solana slot to pull tips from + schema: + type: integer + default: 0 + - name: tx_signatures + in: query + description: A list of transaction signatures of tips to fetch + style: form + explode: false + schema: + type: array + items: type: string - enum: - - sender - - receiver - - name: min_slot - in: query - description: The minimum Solana slot to pull tips from - schema: - type: integer - default: 0 - - name: max_slot - in: query - description: The maximum Solana slot to pull tips from - schema: - type: integer - default: 0 - - name: tx_signatures - in: query - description: A list of transaction signatures of tips to fetch - style: form - explode: false - schema: - type: array - items: - type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/get_tips_response" + $ref: '#/components/schemas/get_tips_response' /tracks: get: tags: - - tracks + - tracks description: Gets a list of tracks using their IDs or permalinks operationId: Get Bulk Tracks parameters: - - name: permalink - in: query - description: The permalink of the track(s) - style: form - explode: true - schema: - type: array - items: - type: string - - name: id - in: query - description: The ID of the track(s) - style: form - explode: true - schema: - type: array - items: - type: string - - name: isrc - in: query - description: The ISRC of the track(s) - style: form - explode: true - schema: - type: array - items: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: permalink + in: query + description: The permalink of the track(s) + style: form + explode: true + schema: + type: array + items: + type: string + - name: id + in: query + description: The ID of the track(s) + style: form + explode: true + schema: + type: array + items: + type: string + - name: isrc + in: query + description: The ISRC code of the track(s) + style: form + explode: true + schema: + type: array + items: type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": - description: Bad request - content: {} - "500": - description: Server error - content: {} + $ref: '#/components/schemas/tracks_response' post: tags: - - tracks + - tracks description: Creates a new track operationId: Create Track security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/create_track_request_body" + $ref: '#/components/schemas/create_track_request_body' responses: - "201": + '201': description: Track created successfully content: application/json: schema: - $ref: "#/components/schemas/create_track_response" - "400": + $ref: '#/components/schemas/create_track_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "500": + '500': description: Server error content: {} /tracks/inspect: get: tags: - - tracks + - tracks summary: Inspects the details of the files for multiple tracks description: Inspect multiple tracks operationId: Inspect Tracks parameters: - - name: id - in: query - description: List of track IDs to inspect - required: true - style: form - explode: true - schema: - type: array - items: - type: string - - name: original - in: query - description: Optional - if set to true inspects the original file quality - schema: - type: boolean - default: false + - name: id + in: query + description: List of track IDs to inspect + required: true + style: form + explode: true + schema: + type: array + items: + type: string + - name: original + in: query + description: Optional - if set to true inspects the original file quality + schema: + type: boolean + default: false responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/track_inspect_list" - "400": + $ref: '#/components/schemas/track_inspect_list' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/recent-premium: get: tags: - - tracks + - tracks description: Gets the most recently listed premium tracks operationId: Get Recent Premium Tracks parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" + $ref: '#/components/schemas/tracks_response' /tracks/recommended: get: tags: - - tracks + - tracks description: Get recommended tracks operationId: Get Recommended Tracks parameters: - - name: limit - in: query - description: The number of items to fetch - schema: + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: genre + in: query + description: Filter trending to a specified genre + schema: + type: string + - name: time + in: query + description: Calculate trending over a specified time range + schema: + type: string + enum: + - week + - month + - year + - allTime + - name: exclusion_list + in: query + description: List of track ids to exclude + style: form + explode: true + schema: + type: array + items: type: integer - - name: genre - in: query - description: Filter trending to a specified genre - schema: - type: string - - name: time - in: query - description: Calculate trending over a specified time range - schema: - type: string - enum: - - week - - month - - year - - allTime - - name: exclusion_list - in: query - description: List of track ids to exclude - style: form - explode: true - schema: - type: array - items: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" + $ref: '#/components/schemas/tracks_response' /tracks/recommended/{version}: get: tags: - - tracks + - tracks description: Get recommended tracks using the given trending strategy version operationId: Get Recommended Tracks With Version parameters: - - name: version - in: path - description: The strategy version of trending to use - required: true - schema: - type: string - - name: limit - in: query - description: The number of items to fetch - schema: + - name: version + in: path + description: The strategy version of trending to use + required: true + schema: + type: string + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: genre + in: query + description: Filter trending to a specified genre + schema: + type: string + - name: time + in: query + description: Calculate trending over a specified time range + schema: + type: string + enum: + - week + - month + - year + - allTime + - name: exclusion_list + in: query + description: List of track ids to exclude + style: form + explode: true + schema: + type: array + items: type: integer - - name: genre - in: query - description: Filter trending to a specified genre - schema: - type: string - - name: time - in: query - description: Calculate trending over a specified time range - schema: - type: string - enum: - - week - - month - - year - - allTime - - name: exclusion_list - in: query - description: List of track ids to exclude - style: form - explode: true - schema: - type: array - items: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" + $ref: '#/components/schemas/tracks_response' /tracks/feeling-lucky: get: tags: - - tracks + - tracks description: Gets random tracks found on the "Feeling Lucky" smart playlist operationId: Get Feeling Lucky Tracks parameters: - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: limit - in: query - description: Number of tracks to fetch - schema: - type: integer - default: 10 - minimum: 1 - maximum: 100 - - name: with_users - deprecated: true - in: query - description: Boolean to include user info with tracks - schema: - type: boolean - default: false - - name: min_followers - in: query - description: Fetch tracks from users with at least this number of followers - schema: - type: integer - minimum: 1 + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: limit + in: query + description: Number of tracks to fetch + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + - name: with_users + deprecated: true + in: query + description: Boolean to include user info with tracks + schema: + type: boolean + default: false + - name: min_followers + in: query + description: Fetch tracks from users with at least this number of followers + schema: + type: integer + minimum: 1 responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks_response' + '400': description: Bad request content: {} - /tracks/recent-comments: get: tags: - - tracks + - tracks description: Gets the most recent tracks with active discussion operationId: Get Tracks With Recent Comments parameters: - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: limit - in: query - description: Number of tracks to fetch - schema: - type: integer - default: 10 - minimum: 1 - maximum: 100 - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - default: 0 - minimum: 0 + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: limit + in: query + description: Number of tracks to fetch + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + default: 0 + minimum: 0 responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks_response' + '400': description: Bad request content: {} /tracks/most-shared: get: tags: - - tracks + - tracks description: Gets the most shared tracks for a given time range operationId: Get Most Shared Tracks parameters: - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: limit - in: query - description: Number of tracks to fetch - schema: - type: integer - default: 10 - minimum: 1 - maximum: 100 - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - default: 0 - minimum: 0 - - name: time_range - in: query - description: The time range to consider - schema: - type: string - default: week - enum: - - week - - month - - allTime + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: limit + in: query + description: Number of tracks to fetch + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + default: 0 + minimum: 0 + - name: time_range + in: query + description: The time range to consider + schema: + type: string + default: week + enum: + - week + - month + - allTime responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/usdc-purchase: get: tags: - - tracks + - tracks description: Gets the top trending (most popular) USDC purchase tracks on Audius operationId: Get Trending USDC Purchase Tracks parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: genre - in: query - description: Filter trending to a specified genre - schema: - type: string - - name: time - in: query - description: Calculate trending over a specified time range - schema: - type: string - enum: - - week - - month - - year - - allTime + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: genre + in: query + description: Filter trending to a specified genre + schema: + type: string + - name: time + in: query + description: Calculate trending over a specified time range + schema: + type: string + enum: + - week + - month + - year + - allTime responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/usdc-purchase/{version}: get: tags: - - tracks - description: Gets the top trending (most popular) USDC purchase tracks on Audius using a given trending strategy version + - tracks + description: Gets the top trending (most popular) USDC purchase tracks on Audius + using a given trending strategy version operationId: Get Trending USDC Purchase Tracks With Version parameters: - - name: version - in: path - description: The strategy version of trending to use - required: true - schema: - type: string - - name: offset - in: query - description: The number of items to skip. Useful for pagination (page number * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: genre - in: query - description: Filter trending to a specified genre - schema: - type: string - - name: time - in: query - description: Calculate trending over a specified time range - schema: - type: string - enum: - - week - - month - - year - - allTime + - name: version + in: path + description: The strategy version of trending to use + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: genre + in: query + description: Filter trending to a specified genre + schema: + type: string + - name: time + in: query + description: Calculate trending over a specified time range + schema: + type: string + enum: + - week + - month + - year + - allTime responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" + $ref: '#/components/schemas/tracks_response' /tracks/search: get: tags: - - tracks + - tracks description: Search for a track or tracks operationId: Search Tracks parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: query - in: query - description: The search query - schema: - type: string - - name: genre - in: query - description: The genres to filter by - style: form - explode: true - schema: - type: array - items: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - enum: - - relevant - - popular - - recent - - name: mood - in: query - description: The moods to filter by - style: form - explode: true - schema: - type: array - items: - type: string - - name: only_downloadable - in: query - description: Return only downloadable tracks - schema: - type: string - default: "false" - - name: includePurchaseable - in: query - description: Whether or not to include purchaseable content - schema: - type: string - - name: is_purchaseable - in: query - description: - Only include purchaseable tracks and albums in the track and - album results - schema: - type: string - - name: has_downloads - in: query - description: Only include tracks that have downloads in the track results - schema: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: query + in: query + description: The search query + schema: + type: string + - name: genre + in: query + description: The genres to filter by + style: form + explode: true + schema: + type: array + items: type: string - - name: key - in: query - description: Only include tracks that match the musical key - style: form - explode: true - schema: - type: array - items: - type: string - - name: bpm_min - in: query - description: Only include tracks that have a bpm greater than or equal to - schema: + - name: sort_method + in: query + description: The sort method + schema: + type: string + enum: + - relevant + - popular + - recent + - name: mood + in: query + description: The moods to filter by + style: form + explode: true + schema: + type: array + items: type: string - - name: bpm_max - in: query - description: Only include tracks that have a bpm less than or equal to - schema: + - name: only_downloadable + in: query + description: Return only downloadable tracks + schema: + type: string + default: 'false' + - name: includePurchaseable + in: query + description: Whether or not to include purchaseable content + schema: + type: string + - name: is_purchaseable + in: query + description: Only include purchaseable tracks and albums in the track and + album results + schema: + type: string + - name: has_downloads + in: query + description: Only include tracks that have downloads in the track results + schema: + type: string + - name: key + in: query + description: Only include tracks that match the musical key + style: form + explode: true + schema: + type: array + items: type: string + - name: bpm_min + in: query + description: Only include tracks that have a bpm greater than or equal to + schema: + type: string + - name: bpm_max + in: query + description: Only include tracks that have a bpm less than or equal to + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/track_search" - "400": + $ref: '#/components/schemas/track_search' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/trending: get: tags: - - tracks + - tracks description: Gets the top 100 trending (most popular) tracks on Audius operationId: Get Trending Tracks parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: genre - in: query - description: Filter trending to a specified genre - schema: - type: string - - name: time - in: query - description: Calculate trending over a specified time range - schema: - type: string - enum: - - week - - month - - year - - allTime - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: genre + in: query + description: Filter trending to a specified genre + schema: + type: string + - name: time + in: query + description: Calculate trending over a specified time range + schema: + type: string + enum: + - week + - month + - year + - allTime responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/trending/winners: get: tags: - - tracks - description: Gets weekly trending winners from the trending_results table. Returns full track objects for the specified week. Defaults to the most recent week with data when no week is provided. + - tracks + description: Gets weekly trending winners from the trending_results table. Returns + track objects for the specified week. Defaults to the most recent week with + data when no week is provided. operationId: Get Trending Winners parameters: - - name: week - in: query - description: Target week in YYYY-MM-DD format. Defaults to the most recent week with data. - schema: - type: string - format: date - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: week + in: query + description: Target week in YYYY-MM-DD format. Defaults to the most recent + week with data. + schema: + type: string + format: date + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/trending/{version}: get: tags: - - tracks - description: Gets the top 100 trending (most popular) tracks on Audius using a given trending strategy version + - tracks + description: Gets the top 100 trending (most popular) tracks on Audius using + a given trending strategy version operationId: Get Trending Tracks With Version parameters: - - name: version - in: path - description: The strategy version of trending to use - required: true - schema: - type: string - - name: offset - in: query - description: The number of items to skip. Useful for pagination (page number * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: genre - in: query - description: Filter trending to a specified genre - schema: - type: string - - name: time - in: query - description: Calculate trending over a specified time range - schema: - type: string - enum: - - week - - month - - year - - allTime - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/tracks_response" - /tracks/trending/ids: - get: + - name: version + in: path + description: The strategy version of trending to use + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: genre + in: query + description: Filter trending to a specified genre + schema: + type: string + - name: time + in: query + description: Calculate trending over a specified time range + schema: + type: string + enum: + - week + - month + - year + - allTime + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/tracks_response' + /tracks/trending/ids: + get: tags: - - tracks + - tracks description: Gets the track IDs of the top trending tracks on Audius operationId: Get Trending Track IDs parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: genre - in: query - description: Filter trending to a specified genre - schema: - type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: genre + in: query + description: Filter trending to a specified genre + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/trending_ids_response" - "400": + $ref: '#/components/schemas/trending_ids_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/trending/ids/{version}: get: tags: - - tracks - description: Gets the track IDs of the top trending tracks on Audius based on the given trending strategy version + - tracks + description: Gets the track IDs of the top trending tracks on Audius based on + the given trending strategy version operationId: Get Trending Tracks IDs With Version parameters: - - name: version - in: path - description: The strategy version of trending to use - required: true - schema: - type: string - - name: offset - in: query - description: The number of items to skip. Useful for pagination (page number * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: genre - in: query - description: Filter trending to a specified genre - schema: - type: string + - name: version + in: path + description: The strategy version of trending to use + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: genre + in: query + description: Filter trending to a specified genre + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/trending_ids_response" - "400": + $ref: '#/components/schemas/trending_ids_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/trending/underground: get: tags: - - tracks + - tracks description: Gets the top 100 trending underground tracks on Audius operationId: Get Underground Trending Tracks parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" + $ref: '#/components/schemas/tracks_response' /tracks/trending/underground/winners: get: tags: - - tracks - description: Gets weekly trending underground winners from the trending_results table. Returns full track objects for the specified week. Defaults to the most recent week with data when no week is provided. + - tracks + description: Gets weekly trending underground winners from the trending_results + table. Returns track objects for the specified week. Defaults to the most + recent week with data when no week is provided. operationId: Get Trending Underground Winners parameters: - - name: week - in: query - description: Target week in YYYY-MM-DD format. Defaults to the most recent week with data. - schema: - type: string - format: date - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: week + in: query + description: Target week in YYYY-MM-DD format. Defaults to the most recent + week with data. + schema: + type: string + format: date + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/trending/underground/{version}: get: tags: - - tracks - description: Gets the top 100 trending underground tracks on Audius using a given trending strategy version + - tracks + description: Gets the top 100 trending underground tracks on Audius using a + given trending strategy version operationId: Get Underground Trending Tracks With Version parameters: - - name: version - in: path - description: The strategy version of trending to use - required: true - schema: - type: string - - name: offset - in: query - description: The number of items to skip. Useful for pagination (page number * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: version + in: path + description: The strategy version of trending to user + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" + $ref: '#/components/schemas/tracks_response' /tracks/{track_id}: get: tags: - - tracks - description: Gets a track by ID + - tracks + description: Gets a track by ID. operationId: Get Track parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/track_response" - "400": - description: Bad request - content: {} - "500": - description: Server error - content: {} + $ref: '#/components/schemas/track_response' put: tags: - - tracks + - tracks description: Updates an existing track operationId: Update Track security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/update_track_request_body" + $ref: '#/components/schemas/update_track_request_body' responses: - "200": + '200': description: Track updated successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "400": + $ref: '#/components/schemas/write_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "404": + '404': description: Track not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - tracks + - tracks description: Deletes a track operationId: Delete Track security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Track deleted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Track not found content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/access-info: get: tags: - - tracks - description: - Gets the information necessary to access the track and what access + - tracks + description: Gets the information necessary to access the track and what access the given user has. operationId: Get Track Access Info parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/access_info_response" + $ref: '#/components/schemas/access_info_response' /tracks/{track_id}/comment_count: get: tags: - - tracks + - tracks description: Get the comment count for a track operationId: Get Track Comment Count parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/track_comment_count_response" - "400": + $ref: '#/components/schemas/track_comment_count_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/comment_notification_setting: get: tags: - - tracks + - tracks description: Get the comment notification setting for a track operationId: Get Track Comment Notification Setting parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/track_comment_notification_response" - "400": + $ref: '#/components/schemas/track_comment_notification_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/comments: get: tags: - - tracks + - tracks description: Get a list of comments for a track operationId: Get Track Comments parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - default: top - enum: - - top - - newest - - timestamp + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: sort_method + in: query + description: The sort method + schema: + type: string + default: top + enum: + - top + - newest + - timestamp responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/track_comments_response" - "400": + $ref: '#/components/schemas/track_comments_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/favorites: get: tags: - - tracks + - tracks description: Get users that favorited a track operationId: Get Users From Favorites parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/track_favorites_response" - "400": + $ref: '#/components/schemas/track_favorites_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} post: tags: - - tracks + - tracks description: Favorite a track operationId: Favorite Track security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: required: false x-codegen-request-body-name: metadata content: application/json: schema: - $ref: "#/components/schemas/favorite_request_body" + $ref: '#/components/schemas/favorite_request_body' responses: - "200": + '200': description: Track favorited successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Track not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - tracks + - tracks description: Unfavorite a track operationId: Unfavorite Track security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Track unfavorited successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Track not found content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/remixes: get: tags: - - tracks + - tracks description: Get all tracks that remix the given track operationId: Get Track Remixes parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: sort_method - in: query - description: The sort method to use - schema: - type: string - default: recent - enum: - - likes - - plays - - recent - - name: only_cosigns - in: query - description: Only remixes cosigned by the original artist - schema: - type: boolean - - name: only_contest_entries - in: query - description: Only entries to a remix contest - schema: - type: boolean + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: sort_method + in: query + description: The sort method to use + schema: + type: string + default: recent + enum: + - likes + - plays + - recent + - name: only_cosigns + in: query + description: Only remixes cosigned by the original artist + schema: + type: boolean + - name: only_contest_entries + in: query + description: Only entries to a remix contest + schema: + type: boolean responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/remixes_response" + $ref: '#/components/schemas/remixes_response' /tracks/{track_id}/remixing: get: tags: - - tracks + - tracks description: Gets all the tracks that the given track remixes operationId: Get Track Remix Parents parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/remixing_response" + $ref: '#/components/schemas/remixing_response' /tracks/{track_id}/reposts: get: tags: - - tracks + - tracks description: Get the users that reposted a track operationId: Get Users From Reposts parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/track_reposts_response" - "400": + $ref: '#/components/schemas/track_reposts_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} post: tags: - - tracks + - tracks description: Repost a track operationId: Repost Track security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: required: false content: application/json: schema: - $ref: "#/components/schemas/repost_request_body" + $ref: '#/components/schemas/repost_request_body' responses: - "200": + '200': description: Track reposted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Track not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - tracks + - tracks description: Unrepost a track operationId: Unrepost Track security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Track unreposted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Track not found content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/download: get: tags: - - tracks + - tracks summary: Download the original or MP3 file of a track description: Download an original or mp3 track operationId: Download Track parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: user_signature - in: query - description: |- - Optional - signature from the requesting user's wallet. - This is needed to authenticate the user and verify access in case the track is gated. - schema: - type: string - - name: user_data - in: query - description: - Optional - data which was used to generate the optional signature - argument. - schema: - type: string - - name: nft_access_signature - in: query - description: |- - Optional - nft access signature for this track which was previously generated by a registered DN. - We perform checks on it and pass it through to CN. - schema: - type: string - - name: filename - in: query - description: - "Optional - name of file to download. If not provided, defaults\ - \ to track original filename or title." - schema: - type: string + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: user_signature + in: query + description: "Optional - signature from the requesting user's wallet.\n \ + \ This is needed to authenticate the user and verify access in case\ + \ the track is gated." + schema: + type: string + - name: user_data + in: query + description: Optional - data which was used to generate the optional signature + argument. + schema: + type: string + - name: nft_access_signature + in: query + description: "Optional - nft access signature for this track which was previously\ + \ generated by a registered DN.\n We perform checks on it and pass\ + \ it through to CN." + schema: + type: string + - name: filename + in: query + description: Optional - name of file to download. If not provided, defaults + to track original filename or title. + schema: + type: string responses: - "200": + '200': description: Success content: {} - "216": + '216': description: Partial content content: {} - "400": + '400': description: Bad request content: {} - "416": + '416': description: Content range invalid content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/inspect: get: tags: - - tracks + - tracks summary: Inspects the details of the file for a track description: Inspect a track operationId: Inspect Track parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: original - in: query - description: Optional - if set to true inspects the original file quality - schema: - type: boolean - default: false + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: original + in: query + description: Optional - if set to true inspects the original file quality + schema: + type: boolean + default: false responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/track_inspect" - "400": + $ref: '#/components/schemas/track_inspect' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/stems: get: tags: - - tracks + - tracks description: Get the remixable stems of a track operationId: Get Track Stems parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/stems_response" + $ref: '#/components/schemas/stems_response' /tracks/{track_id}/shares: post: tags: - - tracks + - tracks description: Record a track share event operationId: Share Track security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: User ID - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: User ID + required: true + schema: + type: string responses: - "200": + '200': description: Track share recorded successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Track not found content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/downloads: post: tags: - - tracks + - tracks description: Record a track download event operationId: Record Track Download security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - required: false - description: The user ID of the user making the request - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + required: false + description: The user ID of the user making the request + schema: + type: string requestBody: x-codegen-request-body-name: location content: application/json: schema: - $ref: "#/components/schemas/track_download_request_body" + $ref: '#/components/schemas/track_download_request_body' responses: - "200": + '200': description: Track download recorded successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: Track not found content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/stream: get: tags: - - tracks + - tracks summary: Get the streamable MP3 file of a track - description: |- - Stream an mp3 track + description: 'Stream an mp3 track + This endpoint accepts the Range header for streaming. - https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests + + https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests' operationId: Stream Track parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: preview - in: query - description: Optional - true if streaming track preview - schema: - type: boolean - default: false - - name: user_signature - in: query - description: |- - Optional - signature from the requesting user's wallet. - This is needed to authenticate the user and verify access in case the track is gated. - schema: - type: string - - name: user_data - in: query - description: - Optional - data which was used to generate the optional signature - argument. - schema: - type: string - - name: nft_access_signature - in: query - description: |- - Optional - gated content signature for this track which was previously generated by a registered DN. - We perform checks on it and pass it through to CN. - schema: - type: string - - name: skip_play_count - in: query - description: Optional - boolean that disables tracking of play counts. - schema: - type: boolean - default: false - - name: api_key - in: query - description: - Optional - API key for third party apps. This is required for - tracks that only allow specific API keys. - schema: - type: string - - name: skip_check - in: query - description: Optional - POC to skip node 'double dip' health check - schema: - type: boolean - - name: no_redirect - in: query - description: - Optional - If true will not return a 302 and instead will return - the stream url in JSON - schema: - type: boolean + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: preview + in: query + description: Optional - true if streaming track preview + schema: + type: boolean + default: false + - name: user_signature + in: query + description: "Optional - signature from the requesting user's wallet.\n \ + \ This is needed to authenticate the user and verify access in case\ + \ the track is gated." + schema: + type: string + - name: user_data + in: query + description: Optional - data which was used to generate the optional signature + argument. + schema: + type: string + - name: nft_access_signature + in: query + description: "Optional - gated content signature for this track which was\ + \ previously generated by a registered DN.\n We perform checks on\ + \ it and pass it through to CN." + schema: + type: string + - name: skip_play_count + in: query + description: Optional - boolean that disables tracking of play counts. + schema: + type: boolean + default: false + - name: api_key + in: query + description: Optional - API key for third party apps. This is required for + tracks that only allow specific API keys. + schema: + type: string + - name: skip_check + in: query + description: Optional - POC to skip node 'double dip' health check + schema: + type: boolean + - name: no_redirect + in: query + description: Optional - If true will not return a 302 and instead will return + the stream url in JSON + schema: + type: boolean responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/stream_url_response" - "216": + $ref: '#/components/schemas/stream_url_response' + '216': description: Partial content content: {} - "400": + '400': description: Bad request content: {} - "416": + '416': description: Content range invalid content: {} - "500": + '500': description: Server error content: {} /tracks/{track_id}/top_listeners: get: tags: - - tracks + - tracks description: Get the users that have listened to a track the most operationId: Get Track Top Listeners parameters: - - name: track_id - in: path - description: A Track ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: track_id + in: path + description: A Track ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/top_listener" - "400": + $ref: '#/components/schemas/top_listener' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users: get: tags: - - users + - users description: Gets a list of users by ID operationId: Get Bulk Users parameters: - - name: user_id - in: query - description: The user ID of the user making the request - schema: + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: id + in: query + description: The ID of the user(s) + style: form + explode: true + schema: + type: array + items: type: string - - name: id - in: query - description: The ID of the user(s) - style: form - explode: true - schema: - type: array - items: - type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/users_response" - "400": + $ref: '#/components/schemas/user_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} post: tags: - - users + - users description: Creates a new user operationId: Create User security: - - BasicAuth: [] - - BearerAuth: [] + - BasicAuth: [] + - BearerAuth: [] requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/create_user_request_body" + $ref: '#/components/schemas/create_user_request_body' responses: - "201": + '201': description: User created successfully content: application/json: schema: - $ref: "#/components/schemas/create_user_response" - "400": + $ref: '#/components/schemas/create_user_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "500": + '500': description: Server error content: {} /users/address: get: tags: - - users - description: Gets User IDs from any Ethereum wallet address or Solana account address associated with their Audius account. + - users + description: Gets User IDs from any Ethereum wallet address or Solana account + address associated with their Audius account. operationId: Get User IDs by Addresses parameters: - - name: address - in: query - description: Wallet address - required: true - style: form - explode: true - example: - - "0x1234567890abcdef1234567890abcdef12345678" - - "E2LCbKdo2L3ikt1gK6pwp1pDLuhAfHBNf6fEQXpAqrf9" - schema: - type: array - items: - type: string + - name: address + in: query + description: Wallet address + required: true + style: form + explode: true + example: + - '0x1234567890abcdef1234567890abcdef12345678' + - E2LCbKdo2L3ikt1gK6pwp1pDLuhAfHBNf6fEQXpAqrf9 + schema: + type: array + items: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/user_ids_addresses_response" + $ref: '#/components/schemas/user_ids_addresses_response' /users/handle/{handle}: get: tags: - - users + - users description: Gets a single user by their handle operationId: Get User by Handle parameters: - - name: handle - in: path - description: A User handle - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: handle + in: path + description: A User handle + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/user_response" - "400": + $ref: '#/components/schemas/user_response_single' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/handle/{handle}/tracks: get: tags: - - users + - users description: Gets the tracks created by a user using the user's handle operationId: Get Tracks by User Handle parameters: - - name: handle - in: path - description: A User handle - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: sort - in: query - description: "[Deprecated] Field to sort by" - schema: - type: string - default: date - enum: - - date - - plays - - name: query - in: query - description: The filter query - schema: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - enum: - - title - - artist_name - - release_date - - last_listen_date - - added_date - - plays - - reposts - - saves - - most_listens_by_user - - name: sort_direction - in: query - description: The sort direction - schema: - type: string - enum: - - asc - - desc - - name: filter_tracks - in: query - description: Filter by public tracks - schema: - type: string - default: all - enum: - - all - - public - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string - responses: - "200": - description: Success - content: + - name: handle + in: path + description: A User handle + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: sort + in: query + description: '[Deprecated] Field to sort by' + schema: + type: string + default: date + enum: + - date + - plays + - name: query + in: query + description: The filter query + schema: + type: string + - name: sort_method + in: query + description: The sort method + schema: + type: string + enum: + - title + - artist_name + - release_date + - last_listen_date + - added_date + - plays + - reposts + - saves + - most_listens_by_user + - name: sort_direction + in: query + description: The sort direction + schema: + type: string + enum: + - asc + - desc + - name: filter_tracks + in: query + description: Filter by public tracks + schema: + type: string + default: all + enum: + - all + - public + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string + responses: + '200': + description: Success + content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/handle/{handle}/tracks/ai_attributed: get: tags: - - users - description: - Gets the AI generated tracks attributed to a user using the user's + - users + description: Gets the AI generated tracks attributed to a user using the user's handle operationId: Get AI Attributed Tracks by User Handle parameters: - - name: handle - in: path - description: A User handle - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: sort - in: query - description: "[Deprecated] Field to sort by" - schema: - type: string - default: date - enum: - - date - - plays - - name: query - in: query - description: The filter query - schema: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - enum: - - title - - artist_name - - release_date - - last_listen_date - - added_date - - plays - - reposts - - saves - - most_listens_by_user - - name: sort_direction - in: query - description: The sort direction - schema: - type: string - enum: - - asc - - desc - - name: filter_tracks - in: query - description: Filter by public tracks - schema: - type: string - default: all - enum: - - all - - public - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - name: handle + in: path + description: A User handle + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: sort + in: query + description: '[Deprecated] Field to sort by' + schema: + type: string + default: date + enum: + - date + - plays + - name: query + in: query + description: The filter query + schema: + type: string + - name: sort_method + in: query + description: The sort method + schema: + type: string + enum: + - title + - artist_name + - release_date + - last_listen_date + - added_date + - plays + - reposts + - saves + - most_listens_by_user + - name: sort_direction + in: query + description: The sort direction + schema: + type: string + enum: + - asc + - desc + - name: filter_tracks + in: query + description: Filter by public tracks + schema: + type: string + default: all + enum: + - all + - public + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/search: get: tags: - - users + - users description: Search for users that match the given query operationId: Search Users parameters: - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: query - in: query - description: The search query - schema: - type: string - - name: genre - in: query - description: The genres to filter by - style: form - explode: true - schema: - type: array - items: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - enum: - - relevant - - popular - - recent - - name: is_verified - in: query - description: Only include verified users in the user results - schema: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: query + in: query + description: The search query + schema: + type: string + - name: genre + in: query + description: The genres to filter by + style: form + explode: true + schema: + type: array + items: type: string + - name: sort_method + in: query + description: The sort method + schema: + type: string + enum: + - relevant + - popular + - recent + - name: is_verified + in: query + description: Only include verified users in the user results + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/user_search" - "400": + $ref: '#/components/schemas/user_search' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/verify_token: get: tags: - - users - description: - Verify if the given jwt ID token was signed by the subject (user) + - users + description: Verify if the given jwt ID token was signed by the subject (user) in the payload operationId: Verify ID Token parameters: - - name: token - in: query - description: JWT to verify - required: true - schema: - type: string + - name: token + in: query + description: JWT to verify + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/verify_token" - "400": + $ref: '#/components/schemas/verify_token' + '400': description: Bad input content: {} - "404": + '404': description: ID token not valid content: {} - "500": + '500': description: Server error content: {} /users/{id}: get: tags: - - users + - users description: Gets a single user by their user ID operationId: Get User parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/user_response" - "400": + $ref: '#/components/schemas/user_response_single' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} put: tags: - - users + - users description: Updates an existing user profile operationId: Update User security: - - BasicAuth: [] + - BasicAuth: [] parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/update_user_request_body" + $ref: '#/components/schemas/update_user_request_body' responses: - "200": + '200': description: User updated successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "400": + $ref: '#/components/schemas/write_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "404": + '404': description: User not found content: {} - "500": + '500': description: Server error content: {} /users/{id}/albums: get: tags: - - users + - users description: Gets the albums created by a user using their user ID operationId: Get Albums by User parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - default: recent - enum: - - recent - - popular - - name: query - in: query - description: Filter albums by name - schema: - type: string - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: sort_method + in: query + description: The sort method + schema: + type: string + default: recent + enum: + - recent + - popular + - name: query + in: query + description: Filter albums by name + schema: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/albums_response" - "400": + $ref: '#/components/schemas/albums_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/developer-apps: get: tags: - - developer_apps + - developer_apps description: Get developer apps for the user. operationId: Get Developer Apps parameters: - - name: id - in: path - description: The user ID whose developer apps to list - required: true - schema: - type: string - - name: include - in: query - description: Include metrics when set to "metrics" - schema: - type: string - enum: - - metrics + - name: id + in: path + description: The user ID whose developer apps to list + required: true + schema: + type: string + - name: include + in: query + description: Include metrics when set to "metrics" + schema: + type: string + enum: + - metrics responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/developer_apps_response" - "400": + $ref: '#/components/schemas/developer_apps_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/authorized_apps: get: tags: - - users + - users description: Get the apps that user has authorized to write to their account operationId: Get Authorized Apps parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/authorized_apps" - "400": + $ref: '#/components/schemas/authorized_apps' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/balance/history: get: tags: - - users + - users description: Get the user's historical portfolio balance data operationId: Get User Balance History parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: start_time - in: query - description: Start time for the balance history query (ISO 8601 format). Defaults to 7 days ago. - required: false - schema: - type: string - format: date-time - - name: end_time - in: query - description: End time for the balance history query (ISO 8601 format). Defaults to now. - required: false - schema: - type: string - format: date-time - - name: granularity - in: query - description: Data granularity. 'hourly' returns hourly data points, 'daily' returns daily aggregated data. Defaults to 'hourly'. - required: false - schema: - type: string - enum: - - hourly - - daily - default: hourly - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: start_time + in: query + description: Start time for the balance history query (ISO 8601 format). Defaults + to 7 days ago. + required: false + schema: + type: string + format: date-time + - name: end_time + in: query + description: End time for the balance history query (ISO 8601 format). Defaults + to now. + required: false + schema: + type: string + format: date-time + - name: granularity + in: query + description: Data granularity. 'hourly' returns hourly data points, 'daily' + returns daily aggregated data. Defaults to 'hourly'. + required: false + schema: + type: string + enum: + - hourly + - daily + default: hourly + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/balance_history_response" - "400": + $ref: '#/components/schemas/balance_history_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "403": + '403': description: Forbidden content: {} - "500": + '500': description: Server error content: {} /users/{id}/challenges: get: tags: - - users + - users description: Gets all challenges for the given user operationId: Get User Challenges parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: show_historical - in: query - description: Whether to show challenges that are inactive but completed - schema: - type: boolean - default: false + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: show_historical + in: query + description: Whether to show challenges that are inactive but completed + schema: + type: boolean + default: false responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/get_challenges" - "400": + $ref: '#/components/schemas/get_challenges' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} - /users/{id}/coins: get: tags: - - users - description: "Gets a list of the coins owned by the user and their balances" + - users + description: Gets a list of the coins owned by the user and their balances parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - default: 0 - minimum: 0 - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - default: 50 - minimum: 1 - maximum: 100 + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + default: 0 + minimum: 0 + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + default: 50 + minimum: 1 + maximum: 100 operationId: Get User Coins responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/user_coins_response" + $ref: '#/components/schemas/user_coins_response' /users/{id}/coins/{mint}: get: tags: - - users - description: "Gets information about a specific coin owned by the user and their wallets" + - users + description: Gets information about a specific coin owned by the user and their + wallets parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: mint - in: path - description: The mint address of the coin - required: true - schema: - type: string - example: "Dez1g5f3h4j5k6l7m8n9o0p1q2r3s4t5u6v7w8x9y0z" + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: mint + in: path + description: The mint address of the coin + required: true + schema: + type: string + example: Dez1g5f3h4j5k6l7m8n9o0p1q2r3s4t5u6v7w8x9y0z operationId: Get User Coin responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/user_coin_response" + $ref: '#/components/schemas/user_coin_response' /wallet/{walletId}/coins: get: tags: - - wallet - description: "Gets a list of the coins held by a wallet address and their balances" + - wallet + description: Gets a list of the coins held by a wallet address and their balances parameters: - - name: walletId - in: path - description: A Solana wallet address - required: true - schema: - type: string - example: "Dez1g5f3h4j5k6l7m8n9o0p1q2r3s4t5u6v7w8x9y0z" - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - default: 0 - minimum: 0 - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - default: 50 - minimum: 1 - maximum: 100 + - name: walletId + in: path + description: A Solana wallet address + required: true + schema: + type: string + example: Dez1g5f3h4j5k6l7m8n9o0p1q2r3s4t5u6v7w8x9y0z + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + default: 0 + minimum: 0 + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + default: 50 + minimum: 1 + maximum: 100 operationId: Get Wallet Coins responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/user_coins_response" + $ref: '#/components/schemas/user_coins_response' /users/{id}/collectibles: get: tags: - - users + - users description: Get the User's indexed collectibles data operationId: Get User Collectibles parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/collectibles_response" - "400": + $ref: '#/components/schemas/collectibles_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/comments: get: tags: - - users + - users description: Get user comment history operationId: Get User Comments parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/user_comments_response" - "400": + $ref: '#/components/schemas/user_comments_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/connected_wallets: get: tags: - - users + - users description: Get the User's ERC and SPL connected wallets operationId: Get connected wallets parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/connected_wallets_response" - "400": + $ref: '#/components/schemas/connected_wallets_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/favorites: get: tags: - - users + - users description: Gets a user's favorite tracks - operationId: Get Favorites + operationId: Get User Favorites parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/favorites_response" - "400": + $ref: '#/components/schemas/favorites_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/followers: get: tags: - - users + - users description: All users that follow the provided user operationId: Get Followers parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/followers_response" - "400": + $ref: '#/components/schemas/followers_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/follow: post: tags: - - users + - users description: Follow a user operationId: Follow User security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: User followed successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: User not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - users + - users description: Unfollow a user operationId: Unfollow User security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: User unfollowed successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: User not found content: {} - "500": + '500': description: Server error content: {} /users/{id}/grants: post: tags: - - users + - users description: Create a grant (authorize an app to act on the user's behalf) operationId: Create Grant security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: The user ID (grantor) - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: The user ID (grantor) + required: true + schema: + type: string requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/create_grant_request_body" + $ref: '#/components/schemas/create_grant_request_body' responses: - "200": + '200': description: Grant created successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "400": + $ref: '#/components/schemas/write_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "403": + '403': description: Forbidden (user ID does not match) content: {} - "500": + '500': description: Server error content: {} /users/{id}/grants/{address}: delete: tags: - - users + - users description: Revoke a grant (remove app authorization) operationId: Revoke Grant security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: The user ID (grantor) - required: true - schema: - type: string - - name: address - in: path - description: The app API key (grantee address) to revoke - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: The user ID (grantor) + required: true + schema: + type: string + - name: address + in: path + description: The app API key (grantee address) to revoke + required: true + schema: + type: string responses: - "200": + '200': description: Grant revoked successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "400": + $ref: '#/components/schemas/write_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "403": + '403': description: Forbidden content: {} - "500": + '500': description: Server error content: {} /users/{id}/grants/approve: post: tags: - - users - description: Approve a manager request (manager approves being added by the child user) + - users + description: Approve a manager request (manager approves being added by the + child user) operationId: Approve Grant security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: The user ID of the manager (grantee) approving the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: The user ID of the manager (grantee) approving the request + required: true + schema: + type: string requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/approve_grant_request_body" + $ref: '#/components/schemas/approve_grant_request_body' responses: - "200": + '200': description: Grant approved successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "400": + $ref: '#/components/schemas/write_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "403": + '403': description: Forbidden content: {} - "500": + '500': description: Server error content: {} /users/{id}/managers: post: tags: - - users + - users description: Add a manager (authorize another user to act on your behalf) operationId: Add Manager security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: The user ID (child user adding the manager) - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: The user ID (child user adding the manager) + required: true + schema: + type: string requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/add_manager_request_body" + $ref: '#/components/schemas/add_manager_request_body' responses: - "200": + '200': description: Manager added successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "400": + $ref: '#/components/schemas/write_response' + '400': + description: Bad request + content: {} + '401': + description: Unauthorized + content: {} + '403': + description: Forbidden + content: {} + '500': + description: Server error + content: {} + get: + tags: + - users + description: Gets a list of users managing the given user + operationId: Get Managers + parameters: + - name: id + in: path + description: An id for the managed user + required: true + schema: + type: string + - name: is_approved + in: query + description: If true, only show users where the management request has been + accepted. If false, only show those where the request was rejected. If omitted, + shows all users regardless of approval status. + schema: + type: boolean + - name: is_revoked + in: query + description: If true, only show users where the management request has been + revoked. If false, only show those with a pending or accepted request. Defaults + to false. + schema: + type: boolean + default: false + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/managers_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "403": + '403': description: Forbidden content: {} - "500": + '500': description: Server error content: {} /users/{id}/managers/{managerUserId}: delete: tags: - - users - description: Remove a manager (revoke user-to-user grant). Can be called by the child user or the manager. + - users + description: Remove a manager (revoke user-to-user grant). Can be called by + the child user or the manager. operationId: Remove Manager security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: The user ID (child user whose manager is being removed) - required: true - schema: - type: string - - name: managerUserId - in: path - description: The user ID of the manager to remove - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: The user ID (child user whose manager is being removed) + required: true + schema: + type: string + - name: managerUserId + in: path + description: The user ID of the manager to remove + required: true + schema: + type: string responses: - "200": + '200': description: Manager removed successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "400": + $ref: '#/components/schemas/write_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "403": + '403': description: Forbidden content: {} - "500": + '500': description: Server error content: {} /users/{id}/following: get: tags: - - users + - users description: All users that the provided user follows operationId: Get Following parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/following_response" - "400": + $ref: '#/components/schemas/following_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/history/tracks: get: tags: - - users + - users description: Get the tracks the user recently listened to. operationId: Get User's Track History parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: query - in: query - description: The filter query - schema: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - enum: - - title - - artist_name - - release_date - - last_listen_date - - added_date - - plays - - reposts - - saves - - most_listens_by_user - - name: sort_direction - in: query - description: The sort direction - schema: - type: string - enum: - - asc - - desc - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string - responses: - "200": + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: query + in: query + description: The filter query + schema: + type: string + - name: sort_method + in: query + description: The sort method + schema: + type: string + enum: + - title + - artist_name + - release_date + - last_listen_date + - added_date + - plays + - reposts + - saves + - most_listens_by_user + - name: sort_direction + in: query + description: The sort direction + schema: + type: string + enum: + - asc + - desc + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string + responses: + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/history_response" - "400": + $ref: '#/components/schemas/history_response' + '400': description: Bad request content: {} - "401": + '401': description: Unauthorized content: {} - "403": + '403': description: Forbidden content: {} - "500": + '500': description: Server error content: {} /users/{id}/listen_counts_monthly: get: tags: - - users - description: - Gets the listen data for a user by month and track within a given + - users + description: Gets the listen data for a user by month and track within a given time frame. operationId: Get User Monthly Track Listens parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: start_time - in: query - description: - Start time from which to start results for user listen count - data (inclusive). - required: true - schema: - type: string - - name: end_time - in: query - description: - End time until which to cut off results of listen count data - (not inclusive). - required: true - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: start_time + in: query + description: Start time from which to start results for user listen count + data (inclusive). + required: true + schema: + type: string + - name: end_time + in: query + description: End time until which to cut off results of listen count data + (not inclusive). + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/user_track_listen_counts_response" - "400": + $ref: '#/components/schemas/user_track_listen_counts_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/muted: get: tags: - - users + - users description: Gets users muted by the given user operationId: Get Muted Users parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/users_response" + $ref: '#/components/schemas/user_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} post: tags: - - users + - users description: Mute a user operationId: Mute User security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: User muted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: User not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - users + - users description: Unmute a user operationId: Unmute User security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: User unmuted successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: User not found content: {} - "500": + '500': description: Server error content: {} /users/{id}/mutuals: get: tags: - - users - description: - Get intersection of users that follow followeeUserId and users + - users + description: Get intersection of users that follow followeeUserId and users that are followed by followerUserId operationId: Get Mutual Followers parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/mutual_followers_response" - "400": + $ref: '#/components/schemas/mutual_followers_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/playlists: get: tags: - - users + - users description: Gets the playlists created by a user using their user ID operationId: Get Playlists by User parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - default: recent - enum: - - recent - - popular - - name: query - in: query - description: Filter playlists by name - schema: - type: string - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: sort_method + in: query + description: The sort method + schema: + type: string + default: recent + enum: + - recent + - popular + - name: query + in: query + description: Filter playlists by name + schema: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/playlists_response" - "400": + $ref: '#/components/schemas/playlists_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/purchasers: get: tags: - - users - description: - Gets the list of unique users who have purchased content by the + - users + description: Gets the list of unique users who have purchased content by the given user operationId: Get purchasers parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: content_type - in: query - description: Type of content to filter by (track or album) - schema: - type: string - - name: content_id - in: query - description: - Filters for users who have purchased the given track or album - ID - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: content_type + in: query + description: Type of content to filter by (track or album) + schema: + type: string + - name: content_id + in: query + description: Filters for users who have purchased the given track or album + ID + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/purchasers_response" - "400": + $ref: '#/components/schemas/purchasers_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/purchases/download: get: tags: - - users + - users description: Downloads the purchases the user has made as a CSV file operationId: Download Purchases as CSV parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: {} /users/{id}/recommended-tracks: get: tags: - - users + - users description: Gets the recommended tracks for the user operationId: Get User Recommended Tracks parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: time_range - in: query - description: The time range for the recommended tracks - schema: - type: string - default: week - enum: - - week - - month - - allTime + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: time_range + in: query + description: The time range for the recommended tracks + schema: + type: string + default: week + enum: + - week + - month + - allTime responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/related: get: tags: - - users - description: - Gets a list of users that might be of interest to followers of + - users + description: Gets a list of users that might be of interest to followers of this user. operationId: Get Related Users parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: filter_followed - in: query - description: "If true, filters out artists that the current user already follows" - schema: - type: boolean - default: false + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: filter_followed + in: query + description: If true, filters out artists that the current user already follows + schema: + type: boolean + default: false responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/related_artist_response" - "400": + $ref: '#/components/schemas/related_artist_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/remixers: get: tags: - - users - description: - "Gets the list of unique users who have remixed tracks by the given\ - \ user, or a specific track by that user if provided" + - users + description: Gets the list of unique users who have remixed tracks by the given + user, or a specific track by that user if provided operationId: Get remixers parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: track_id - in: query - description: Filters for remixers who have remixed the given track ID - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: track_id + in: query + description: Filters for remixers who have remixed the given track ID + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/remixers_response" - "400": + $ref: '#/components/schemas/remixers_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/reposts: get: tags: - - users + - users description: Gets the given user's reposts operationId: Get Reposts parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/reposts" - "400": + $ref: '#/components/schemas/reposts' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/sales/aggregate: get: tags: - - users + - users description: Gets the aggregated sales data for the user operationId: Get Sales Aggregate parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/sales_aggregate_response" + $ref: '#/components/schemas/sales_aggregate_response' /users/{id}/sales/download: get: tags: - - users + - users description: Downloads the sales the user has made as a CSV file operationId: Download Sales as CSV parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: {} /users/{id}/sales/download/json: get: tags: - - users + - users description: Gets the sales data for the user in JSON format operationId: Download Sales as JSON parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: grantee_user_id - in: query - description: Optional receiving user ID for email decryption - schema: - type: string - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: grantee_user_id + in: query + description: Optional receiving user ID for email decryption + schema: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/sales_json_response" + $ref: '#/components/schemas/sales_json_response' /users/{id}/subscribers: get: tags: - - users + - users description: All users that subscribe to the provided user operationId: Get Subscribers parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/subscribers_response" - "400": + $ref: '#/components/schemas/subscribers_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} post: tags: - - users + - users description: Subscribe to a user operationId: Subscribe to User security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Subscribed successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: User not found content: {} - "500": + '500': description: Server error content: {} delete: tags: - - users + - users description: Unsubscribe from a user operationId: Unsubscribe from User security: - - BasicAuth: [] - - BearerAuth: [] - parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - BasicAuth: [] + - BearerAuth: [] + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Unsubscribed successfully content: application/json: schema: - $ref: "#/components/schemas/write_response" - "401": + $ref: '#/components/schemas/write_response' + '401': description: Unauthorized content: {} - "404": + '404': description: User not found content: {} - "500": + '500': description: Server error content: {} /users/{id}/supporters: get: tags: - - users + - users description: Gets the supporters of the given user operationId: Get Supporters parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/get_supporters" + $ref: '#/components/schemas/get_supporters' /users/{id}/supporting: get: tags: - - users + - users description: Gets the users that the given user supports operationId: Get Supported Users parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/get_supported_users" + $ref: '#/components/schemas/get_supported_users' /users/{id}/tags: get: tags: - - users + - users summary: Fetch most used tags in a user's tracks description: Gets the most used track tags by a user. operationId: Get Top Track Tags parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tags_response" - "400": + $ref: '#/components/schemas/tags_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/tracks: get: tags: - - users + - users description: Gets the tracks created by a user using their user ID operationId: Get Tracks by User parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: sort - in: query - description: "[Deprecated] Field to sort by" - schema: - type: string - default: date - enum: - - date - - plays - - name: query - in: query - description: The filter query - schema: - type: string - - name: sort_method - in: query - description: The sort method - schema: - type: string - enum: - - title - - artist_name - - release_date - - last_listen_date - - added_date - - plays - - reposts - - saves - - most_listens_by_user - - name: sort_direction - in: query - description: The sort direction - schema: - type: string - enum: - - asc - - desc - - name: filter_tracks - in: query - description: Filter by public tracks - schema: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: sort + in: query + description: '[Deprecated] Field to sort by' + schema: + type: string + default: date + enum: + - date + - plays + - name: query + in: query + description: The filter query + schema: + type: string + - name: sort_method + in: query + description: The sort method + schema: + type: string + enum: + - title + - artist_name + - release_date + - last_listen_date + - added_date + - plays + - reposts + - saves + - most_listens_by_user + - name: sort_direction + in: query + description: The sort direction + schema: + type: string + enum: + - asc + - desc + - name: filter_tracks + in: query + description: Filter by public tracks + schema: + type: string + default: all + enum: + - all + - public + - name: gate_condition + in: query + description: Filter by gate conditions (can be repeated) + style: form + explode: true + schema: + type: array + items: type: string - default: all enum: - - all - - public - - name: gate_condition - in: query - description: Filter tracks by gate condition type. Multiple values can be provided to filter by multiple gate types (OR logic) - style: form - explode: true - schema: - type: array - items: - type: string - enum: - - ungated - - usdc_purchase - - follow - - tip - - nft - - token - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - ungated + - usdc_purchase + - follow + - tip + - nft + - token + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_response" - "400": + $ref: '#/components/schemas/tracks' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/tracks/count: get: tags: - - users + - users description: Gets the count of tracks created by a user operationId: Get Tracks Count by User parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: filter_tracks - in: query - description: Filter by public tracks - schema: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: filter_tracks + in: query + description: Filter by public tracks + schema: + type: string + default: all + enum: + - all + - public + - name: gate_condition + in: query + description: Filter by gate conditions (can be repeated) + style: form + explode: true + schema: + type: array + items: type: string - default: all enum: - - all - - public - - name: gate_condition - in: query - description: Filter by gate conditions (can be repeated) - style: form - explode: true - schema: - type: array - items: - type: string - enum: - - ungated - - usdc_purchase - - follow - - tip - - nft - - token - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - ungated + - usdc_purchase + - follow + - tip + - nft + - token + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/tracks_count_response" - "400": + $ref: '#/components/schemas/tracks_count_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/tracks/remixed: get: tags: - - users - description: - Gets tracks owned by the user which have been remixed by another + - users + description: Gets tracks owned by the user which have been remixed by another track operationId: Get User Tracks Remixed parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - default: 0 - type: integer - minimum: 0 - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - default: 10 - minimum: 1 - maximum: 100 - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + default: 0 + type: integer + minimum: 0 + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/user_tracks_remixed_response" - "400": + $ref: '#/components/schemas/user_tracks_remixed_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /users/{id}/withdrawals/download: get: tags: - - users + - users description: Downloads the USDC withdrawals the user has made as a CSV file operationId: Download USDC Withdrawals as CSV parameters: - - name: id - in: path - description: A User ID - required: true - schema: - type: string - - name: user_id - in: query - description: The user ID of the user making the request - schema: - type: string - - name: Encoded-Data-Message - in: header - description: The data that was signed by the user for signature recovery - schema: - type: string - - name: Encoded-Data-Signature - in: header - description: "The signature of data, used for signature recovery" - schema: - type: string + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string responses: - "200": + '200': description: Success content: {} /users/{receiving_user_id}/emails/{grantor_user_id}/key: get: tags: - - users - description: - Gets the encrypted key for email access between the receiving user + - users + description: Gets the encrypted key for email access between the receiving user and granting user. operationId: Get User Email Key parameters: - - name: receiving_user_id - in: path - description: ID of user receiving email access - required: true - schema: - type: string - - name: grantor_user_id - in: path - description: ID of user granting email access - required: true - schema: - type: string + - name: receiving_user_id + in: path + description: ID of user receiving email access + required: true + schema: + type: string + - name: grantor_user_id + in: path + description: ID of user granting email access + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/email_access_response" - "400": + $ref: '#/components/schemas/email_access_response' + '400': description: Bad request content: {} - "500": + '500': description: Server error content: {} /coins: get: tags: - - coins + - coins operationId: Get Coins - description: "Gets information about coins" - parameters: - - name: mint - in: query - description: The mint addresses of the coins - style: form - explode: true - schema: - type: array - items: - type: string - - name: owner_id - in: query - description: The user IDs of artists with minted coins - style: form - explode: true - schema: - type: array - items: - type: string - - name: ticker - in: query - description: The tickers of the coins - style: form - explode: true - schema: - type: array - items: - type: string - - name: query - in: query - description: Search by the coin name or ticker - schema: + description: Gets a list of coins with optional filtering + parameters: + - name: ticker + in: query + description: Filter by coin ticker(s) + schema: + type: array + items: type: string - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - default: 0 - minimum: 0 - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - default: 50 - minimum: 1 - maximum: 100 - - name: sort_method - in: query - description: Field to use for sorting the results - schema: + style: form + explode: true + - name: mint + in: query + description: Filter by coin mint address(es) + schema: + type: array + items: type: string - default: market_cap - enum: - - market_cap - - volume - - price - - created_at - - holder - - name: sort_direction - in: query - description: The sort direction - schema: + style: form + explode: true + - name: owner_id + in: query + description: Filter by owner user ID(s) + schema: + type: array + items: type: string - default: desc - enum: - - asc - - desc + style: form + explode: true + - name: limit + in: query + description: Maximum number of results to return + schema: + type: integer + minimum: 1 + maximum: 100 + default: 50 + - name: offset + in: query + description: Number of results to skip + schema: + type: integer + minimum: 0 + default: 0 + - name: query + in: query + description: Search query for ticker, name, or handle + schema: + type: string + - name: sort_method + in: query + description: Sort method + schema: + type: string + enum: + - market_cap + - price + - volume + - created_at + - holder + default: market_cap + - name: sort_direction + in: query + description: Sort direction + schema: + type: string + enum: + - asc + - desc + default: desc responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/coins_response" + $ref: '#/components/schemas/coins_response' post: tags: - - coins + - coins operationId: Create Coin - description: "Creates a new artist coin" + description: Creates a new artist coin parameters: - - name: user_id - in: query - description: The user ID to create a coin - required: true - schema: - type: string - example: "7eP5n" + - name: user_id + in: query + description: The user ID to create a coin + required: true + schema: + type: string + example: 7eP5n requestBody: - x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/create_coin_request_body" + $ref: '#/components/schemas/create_coin_request' responses: - "201": + '201': description: Success - Coin created content: application/json: schema: - $ref: "#/components/schemas/create_coin_response" - "400": + $ref: '#/components/schemas/create_coin_response' + '400': description: Bad request - Invalid parameters content: {} - "401": - description: Unauthorized - User not authenticated - content: {} - "500": + '500': description: Server error content: {} /coins/{mint}: get: tags: - - coins + - coins operationId: Get Coin - description: "Gets information about a specific coin by its mint address" + description: Gets information about a specific coin by its mint address parameters: - - name: mint - in: path - description: The mint address of the coin - required: true - schema: - type: string - example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + - name: mint + in: path + description: The mint address of the coin + required: true + schema: + type: string + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/coin_response" + $ref: '#/components/schemas/coin_response' post: tags: - - coins + - coins operationId: Update Coin - description: "Updates information about a specific coin by its mint address" + description: Updates information about a specific coin by its mint address parameters: - - name: mint - in: path - description: The mint address of the coin - required: true - schema: - type: string - example: bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj - - name: user_id - in: query - description: The user ID making the update (must be the coin owner) - required: true - schema: - type: string - example: "7eP5n" + - name: mint + in: path + description: The mint address of the coin + required: true + schema: + type: string + example: bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj + - name: user_id + in: query + description: The user ID making the update (must be the coin owner) + required: true + schema: + type: string + example: 7eP5n requestBody: - x-codegen-request-body-name: metadata required: true content: application/json: schema: - $ref: "#/components/schemas/update_coin_request_body" + $ref: '#/components/schemas/update_coin_request' responses: - "200": + '200': description: Success - Coin updated content: application/json: schema: - $ref: "#/components/schemas/update_coin_response" - "400": + $ref: '#/components/schemas/update_coin_response' + '400': description: Bad request - Invalid parameters or no fields provided content: {} - "403": + '403': description: Forbidden - User does not own the coin content: {} - "404": + '404': description: Not found - Coin does not exist content: {} - "500": + '500': description: Server error content: {} /coins/ticker/{ticker}: get: tags: - - coins + - coins operationId: Get Coin By Ticker - description: "Gets information about a specific coin by its ticker" + description: Gets information about a specific coin by its ticker parameters: - - name: ticker - in: path - description: The ticker of the coin - required: true - schema: - type: string - example: $AUDIO + - name: ticker + in: path + description: The ticker symbol of the coin + required: true + schema: + type: string + example: $AUDIO responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/coin_response" - "400": - description: Bad request - content: {} - "500": - description: Server error - content: {} + $ref: '#/components/schemas/coin_response' /coins/{mint}/insights: get: tags: - - coins + - coins operationId: Get Coin Insights - description: "Gets insights about a specific coin by its mint address" + description: Gets insights about a specific coin by its mint address parameters: - - name: mint - in: path - description: The mint address of the coin - required: true - schema: - type: string - example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + - name: mint + in: path + description: The mint address of the coin + required: true + schema: + type: string + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/coin_insights_response" + $ref: '#/components/schemas/coin_insights_response' /coins/{mint}/members: get: tags: - - coins + - coins operationId: Get Coin Members - description: "Gets a list of Audius users with a non-zero balance of a specific coin" + description: Gets a list of Audius users with a non-zero balance of a specific + coin parameters: - - name: mint - in: path - description: The mint address of the coin - required: true - schema: - type: string - example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - default: 0 - minimum: 0 - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - default: 10 - minimum: 1 - maximum: 100 - - name: sort_direction - in: query - description: The sort direction for the results - schema: - type: string - enum: - - asc - - desc - default: desc + - name: mint + in: path + description: The mint address of the coin + required: true + schema: + type: string + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + default: 0 + minimum: 0 + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + default: 10 + minimum: 1 + maximum: 100 + - name: sort_direction + in: query + description: The sort direction for the results + schema: + type: string + enum: + - asc + - desc + default: desc responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/coin_members_response" + $ref: '#/components/schemas/coin_members_response' /coins/{mint}/members/count: get: tags: - - coins + - coins operationId: Get Coin Members Count - description: "Gets the total number of Audius users with a non-zero balance of a specific coin" + description: Gets the total number of Audius users with a non-zero balance of + a specific coin parameters: - - name: mint - in: path - description: The mint address of the coin - required: true - schema: - type: string - example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + - name: mint + in: path + description: The mint address of the coin + required: true + schema: + type: string + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/coin_members_count_response" + $ref: '#/components/schemas/coin_members_count_response' /coins/volume-leaders: get: tags: - - coins + - coins operationId: Get Volume Leaders - description: "Gets top coin<>AUDIO trading addresses by volume" + description: Gets top coin<>AUDIO trading addresses by volume parameters: - - name: from - in: query - description: Beginning of time range to query over (RFC3339 format) - schema: - type: string - example: "2006-01-02T15:04:05Z" - default: "(most recent midnight UTC)" - - name: to - in: query - description: End of time range to query over (RFC3339 format) - schema: - type: string - example: "2006-01-02T15:04:05Z" - default: "(most recent midnight UTC + 24hrs)" - - name: offset - in: query - description: - The number of items to skip. Useful for pagination (page number - * limit) - schema: - type: integer - default: 0 - minimum: 0 - maximum: 500 - - name: limit - in: query - description: The number of items to fetch - schema: - type: integer - default: 20 - minimum: 1 - maximum: 100 + - name: from + in: query + description: Beginning of time range to query over (RFC3339 format) + schema: + type: string + example: '2006-01-02T15:04:05Z' + default: (most recent midnight UTC) + - name: to + in: query + description: End of time range to query over (RFC3339 format) + schema: + type: string + example: '2006-01-02T15:04:05Z' + default: (most recent midnight UTC + 24hrs) + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + default: 0 + minimum: 0 + maximum: 500 + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + default: 20 + minimum: 1 + maximum: 100 responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/coins_volume_leaders_response" - "400": + $ref: '#/components/schemas/coins_volume_leaders_response' + '400': description: Bad Request /coins/{mint}/redeem: get: tags: - - coins + - coins operationId: Get Coin Redeem Amount - description: "Gets the availability indicator for reward codes for a specific coin" + description: Gets the availability indicator for reward codes for a specific + coin parameters: - - name: mint - in: path - description: The mint address of the coin - required: true - schema: - type: string - example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + - name: mint + in: path + description: The mint address of the coin + required: true + schema: + type: string + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/redeem_amount_response" + $ref: '#/components/schemas/redeem_amount_response' post: tags: - - coins + - coins operationId: Claim Coin Reward - description: "Claims a coin reward for a given mint" + description: Claims a coin reward for a given mint parameters: - - name: mint - in: path - description: The mint address of the coin - required: true - schema: - type: string - example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - name: mint + in: path + description: The mint address of the coin + required: true + schema: + type: string + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/claim_rewards_response" - "400": + $ref: '#/components/schemas/claim_rewards_response' + '400': description: Bad request - No coin reward available or already claimed content: application/json: schema: - $ref: "#/components/schemas/reward_code_error_response" - "500": + $ref: '#/components/schemas/reward_code_error_response' + '500': description: Server error content: {} /coins/{mint}/redeem/{code}: get: tags: - - coins + - coins operationId: Get Reward Code - description: "Gets information about a specific reward code for a coin" + description: Gets information about a specific reward code for a coin parameters: - - name: mint - in: path - description: The mint address of the coin - required: true - schema: - type: string - example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM - - name: code - in: path - description: The reward code to retrieve - required: true - schema: - type: string - example: XYZ123 + - name: mint + in: path + description: The mint address of the coin + required: true + schema: + type: string + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + - name: code + in: path + description: The reward code to retrieve + required: true + schema: + type: string + example: XYZ123 responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/reward_code_response" - "400": + $ref: '#/components/schemas/reward_code_response' + '400': description: Bad request - Code is invalid or already used content: application/json: schema: - $ref: "#/components/schemas/reward_code_error_response" + $ref: '#/components/schemas/reward_code_error_response' post: tags: - - coins + - coins operationId: Claim Coin Reward Code - description: "Claims a coin reward using a given code" + description: Claims a coin reward using a given code parameters: - - name: mint - in: path - description: The mint address of the coin - required: true - schema: - type: string - example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM - - name: code - in: path - description: The reward code to claim - required: true - schema: - type: string - example: XYZ123 - - name: user_id - in: query - description: The user ID of the user making the request - required: true - schema: - type: string + - name: mint + in: path + description: The mint address of the coin + required: true + schema: + type: string + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + - name: code + in: path + description: The reward code to claim + required: true + schema: + type: string + example: XYZ123 + - name: user_id + in: query + description: The user ID of the user making the request + required: true + schema: + type: string responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/claim_rewards_response" - "400": + $ref: '#/components/schemas/claim_rewards_response' + '400': description: Bad request - Code is invalid or already used content: application/json: schema: - $ref: "#/components/schemas/reward_code_error_response" - "500": + $ref: '#/components/schemas/reward_code_error_response' + '500': description: Server error content: {} /rewards/claim: post: tags: - - rewards + - rewards description: Claims all the filtered undisbursed rewards for a user operationId: Claim Rewards requestBody: @@ -6690,4476 +6754,10901 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/claim_rewards_request_body" + $ref: '#/components/schemas/claim_rewards_request_body' responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/claim_rewards_response" - "400": + $ref: '#/components/schemas/claim_rewards_response' + '400': description: Bad request - No rewards to claim or invalid parameters content: {} - "500": + '500': description: Server error content: {} /rewards/code: post: tags: - - rewards + - rewards description: Creates a new reward code with Solana signature verification operationId: Create Reward Code requestBody: - x-codegen-request-body-name: body + required: true content: application/json: schema: - $ref: "#/components/schemas/create_reward_code_request_body" + $ref: '#/components/schemas/create_reward_code_request' responses: - "201": + '201': description: Created - Reward code successfully created content: application/json: schema: - $ref: "#/components/schemas/create_reward_code_response" - "400": - description: Bad request - Invalid signature format or missing required fields + $ref: '#/components/schemas/create_reward_code_response' + '400': + description: Bad request - Invalid signature format or missing required + fields content: {} - "403": + '403': description: Forbidden - Signature verification failed content: {} - "500": + '500': description: Server error content: {} /prizes: get: tags: - - prizes + - prizes operationId: Get Prizes - description: "Gets a list of active prizes available for claiming. Excludes sensitive information like download URLs." + description: Gets a list of active prizes available for claiming. Excludes sensitive + information like download URLs. responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/prizes_response" - "500": + $ref: '#/components/schemas/prizes_response' + '500': description: Server error content: {} /prizes/claim: post: tags: - - prizes + - prizes operationId: Claim Prize - description: "Claims a prize by verifying a Solana transaction. User must send exactly 2 YAK to the prize receiver address. Returns the prize won and any redeem codes/URLs." + description: Claims a prize by verifying a Solana transaction. User must send + exactly 2 YAK to the prize receiver address. Returns the prize won and any + redeem codes/URLs. requestBody: x-codegen-request-body-name: claim required: true content: application/json: schema: - $ref: "#/components/schemas/prize_claim_request_body" + $ref: '#/components/schemas/prize_claim_request_body' responses: - "200": + '200': description: Success - Prize claimed content: application/json: schema: - $ref: "#/components/schemas/prize_claim_response" - "400": - description: Bad request - Transaction not found, invalid, or signature already used + $ref: '#/components/schemas/prize_claim_response' + '400': + description: Bad request - Transaction not found, invalid, or signature + already used content: {} - "500": + '500': description: Server error content: {} /wallet/{wallet}/prizes: get: tags: - - prizes + - prizes operationId: Get Wallet Prizes - description: "Gets all claimed prizes for a wallet. Public endpoint - no authentication required. Excludes sensitive action_data for security." + description: Gets all claimed prizes for a wallet. Public endpoint - no authentication + required. Excludes sensitive action_data for security. parameters: - - name: wallet - in: path - description: The wallet address to get prizes for - required: true - schema: - type: string - example: "HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC" + - name: wallet + in: path + description: The wallet address to get prizes for + required: true + schema: + type: string + example: HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC responses: - "200": + '200': description: Success content: application/json: schema: - $ref: "#/components/schemas/claimed_prizes_response" - "400": + $ref: '#/components/schemas/claimed_prizes_response' + '400': description: Bad request - Missing wallet parameter content: {} - "500": + '500': description: Server error content: {} - -components: - schemas: - user_response: - type: object - properties: - data: - $ref: "#/components/schemas/user" - user: - required: - - album_count - - erc_wallet - - followee_count - - follower_count - - handle - - id - - is_available - - is_deactivated - - is_verified - - name - - playlist_count - - repost_count - - spl_wallet - - spl_usdc_wallet - - supporter_count - - supporting_count - - total_audio_balance - - track_count - - verified_with_instagram - - verified_with_tiktok - - verified_with_twitter - - wallet - type: object - properties: - album_count: - type: integer - artist_pick_track_id: - type: string - bio: - type: string - cover_photo: - $ref: "#/components/schemas/cover_photo" - followee_count: - type: integer - follower_count: - type: integer - handle: - type: string - id: - type: string - is_verified: - type: boolean - twitter_handle: - type: string - instagram_handle: + /challenges/{challenge_id}/attest: + get: + tags: + - challenges + description: Produces an attestation that a given user has completed a challenge, + or errors. + operationId: Get Challenge Attestation + parameters: + - name: challenge_id + in: path + description: The challenge ID of the user challenge requiring the attestation + required: true + schema: type: string - tiktok_handle: + - name: oracle + in: query + description: The address of a valid, registered Anti-Abuse Oracle + required: true + schema: type: string - verified_with_twitter: - type: boolean - verified_with_instagram: - type: boolean - verified_with_tiktok: - type: boolean - website: + - name: specifier + in: query + description: The specifier of the user challenge requiring the attestation + required: true + schema: type: string - donation: + - name: user_id + in: query + description: The user ID of the user challenge requiring the attestation + required: true + schema: type: string - location: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/attestation_reponse' + '400': + description: The attestation request was invalid (eg. The user didn't complete + that challenge yet) + content: {} + '500': + description: Server error + content: {} + /cid_data/{metadata_id}: + get: + tags: + - cid_data + description: Get a metadata by CID + operationId: Get Metadata + parameters: + - name: metadata_id + in: path + description: A Metdata CID + required: true + schema: type: string - name: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/cid_data_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /notifications/{user_id}: + get: + tags: + - notifications + description: Get notifications for user ID + operationId: Get Notifications + parameters: + - name: user_id + in: path + description: A User ID + required: true + schema: type: string - playlist_count: + - name: timestamp + in: query + description: The timestamp from which to paginate + schema: type: integer - profile_picture: - $ref: "#/components/schemas/profile_picture" - repost_count: - type: integer - track_count: + - name: group_id + in: query + description: The group_id form which to paginate + schema: + type: string + - name: limit + in: query + description: The number of notifications to return + schema: type: integer - is_deactivated: - type: boolean - is_available: - type: boolean - erc_wallet: - type: string - spl_wallet: - type: string - spl_usdc_wallet: + - name: types + in: query + description: Additional valid notification types to return + style: form + explode: true + schema: + type: array + items: + type: string + enum: + - announcement + - follow + - repost + - save + - remix + - cosign + - create + - tip_receive + - tip_send + - challenge_reward + - repost_of_repost + - save_of_repost + - tastemaker + - reaction + - supporter_dethroned + - supporter_rank_up + - supporting_rank_up + - milestone + - track_milestone + - track_added_to_playlist + - playlist_milestone + - tier_change + - trending + - trending_playlist + - trending_underground + - usdc_purchase_buyer + - usdc_purchase_seller + - track_added_to_purchased_album + - request_manager + - approve_manager_request + - claimable_reward + - comment + - comment_thread + - comment_mention + - comment_reaction + - listen_streak_reminder + - fan_remix_contest_started + - fan_remix_contest_ended + - fan_remix_contest_ending_soon + - fan_remix_contest_winners_selected + - artist_remix_contest_ended + - artist_remix_contest_ending_soon + - artist_remix_contest_submissions + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/notifications_response' + /notifications/{user_id}/playlist_updates: + get: + tags: + - notifications + description: Get playlists the user has saved that have been updated for user + ID + operationId: Get Playlist Updates + parameters: + - name: user_id + in: path + description: A User ID + required: true + schema: type: string - spl_usdc_payout_wallet: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/playlist_updates_response' + /playlists/trending/{version}: + get: + tags: + - playlists + description: Returns trending playlists for a time period based on the given + trending version + operationId: Get Trending Playlists With Version + parameters: + - name: version + in: path + description: The strategy version of trending to use + required: true + schema: type: string - supporter_count: - type: integer - supporting_count: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: type: integer - total_audio_balance: + - name: limit + in: query + description: The number of items to fetch + schema: type: integer - wallet: - type: string - description: The user's Ethereum wallet address for their account - balance: + - name: user_id + in: query + description: The user ID of the user making the request + schema: type: string - associated_wallets_balance: - type: string - total_balance: + - name: time + in: query + description: Calculate trending over a specified time range + schema: type: string - payout_wallet: - type: string - waudio_balance: - type: string - associated_sol_wallets_balance: - type: string - blocknumber: + enum: + - week + - month + - year + - allTime + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/trending_playlists_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /reactions: + get: + tags: + - reactions + description: Gets reactions by reacted_to_id and type + operationId: Bulk get Reactions + parameters: + - name: type + in: query + description: The type of reactions for which to query. + schema: + type: string + - name: reacted_to_ids + in: query + description: The `reacted_to` transaction id(s) of the reactions in question. + required: true + style: form + explode: false + schema: + type: array + items: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/reactions' + '400': + description: Bad request + content: {} + '404': + description: No such reaction + content: {} + '500': + description: Server error + content: {} + /search/autocomplete: + get: + tags: + - search + summary: Get Users/Tracks/Playlists/Albums that best match the search query + description: Same as search but optimized for quicker response at the cost of + some entity information. + operationId: Search Autocomplete + parameters: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: type: integer - created_at: - type: string - format: date-time - updated_at: - type: string - format: date-time - is_storage_v2: - type: boolean - creator_node_endpoint: - type: string - current_user_followee_follow_count: + - name: limit + in: query + description: The number of items to fetch + schema: type: integer - does_current_user_follow: - type: boolean - does_current_user_subscribe: + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: query + in: query + description: The search query + schema: + type: string + - name: kind + in: query + description: 'The type of response, one of: all, users, tracks, playlists, + or albums' + schema: + type: string + default: all + enum: + - all + - users + - tracks + - playlists + - albums + - name: includePurchaseable + in: query + description: Whether or not to include purchaseable content + schema: type: boolean - does_follow_current_user: + - name: genre + in: query + description: The genres to filter by + style: form + explode: true + schema: + type: array + items: + type: string + - name: mood + in: query + description: The moods to filter by + style: form + explode: true + schema: + type: array + items: + type: string + - name: is_verified + in: query + description: Only include verified users in the user results + schema: type: boolean - handle_lc: - type: string - profile_type: - type: string - user_id: - type: integer - has_collectibles: + - name: has_downloads + in: query + description: Only include tracks that have downloads in the track results + schema: type: boolean - allow_ai_attribution: + - name: is_purchaseable + in: query + description: Only include purchaseable tracks and albums in the track and + album results + schema: type: boolean - coin_flair_mint: - type: string - artist_coin_badge: - type: object - cover_photo_sizes: - type: string - cover_photo_cids: - type: object - cover_photo_legacy: - type: object - profile_picture_sizes: - type: string - profile_picture_cids: - type: object - profile_picture_legacy: - type: object - cover_photo: - type: object - properties: - "640x": - type: string - "2000x": - type: string - profile_picture: - type: object - properties: - "150x150": - type: string - "480x480": - type: string - "1000x1000": - type: string - users_response: - type: object - properties: - data: + - name: key + in: query + description: Only include tracks that match the musical key + style: form + explode: true + schema: type: array items: - $ref: "#/components/schemas/user" - user_track_listen_counts_response: - type: object - properties: - data: - $ref: "#/components/schemas/wild_month_model" - wild_month_model: - type: object - additionalProperties: - $ref: "#/components/schemas/monthly_aggregate_play" - monthly_aggregate_play: - type: object - properties: - totalListens: + type: string + - name: bpm_min + in: query + description: Only include tracks that have a bpm greater than or equal to + schema: + type: number + - name: bpm_max + in: query + description: Only include tracks that have a bpm less than or equal to + schema: + type: number + - name: sort_method + in: query + description: The sort method + schema: + type: string + enum: + - relevant + - popular + - recent + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/search_autocomplete_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /search/full: + get: + tags: + - search + description: Get Users/Tracks/Playlists/Albums that best match the search query + operationId: Search + parameters: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: type: integer - trackIds: + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: query + in: query + description: The search query + schema: + type: string + - name: kind + in: query + description: 'The type of response, one of: all, users, tracks, playlists, + or albums' + schema: + type: string + default: all + enum: + - all + - users + - tracks + - playlists + - albums + - name: includePurchaseable + in: query + description: Whether or not to include purchaseable content + schema: + type: boolean + - name: genre + in: query + description: The genres to filter by + style: form + explode: true + schema: type: array items: - type: integer - listenCounts: + type: string + - name: mood + in: query + description: The moods to filter by + style: form + explode: true + schema: type: array items: - $ref: "#/components/schemas/listen_count" - listen_count: - type: object - properties: - trackId: - type: integer - date: - type: string - listens: - type: integer - tracks_response: - type: object - properties: - data: + type: string + - name: is_verified + in: query + description: Only include verified users in the user results + schema: + type: boolean + - name: has_downloads + in: query + description: Only include tracks that have downloads in the track results + schema: + type: boolean + - name: is_purchaseable + in: query + description: Only include purchaseable tracks and albums in the track and + album results + schema: + type: boolean + - name: key + in: query + description: Only include tracks that match the musical key + style: form + explode: true + schema: type: array items: - $ref: "#/components/schemas/Track" - Track: - required: - - artwork - - comment_count - - duration - - favorite_count - - genre - - id - - is_downloadable - - is_original_available - - permalink - - play_count - - repost_count - - title - - user - type: object - properties: - artwork: - $ref: "#/components/schemas/track_artwork" - description: - type: string - genre: - type: string - id: - type: string - track_cid: - type: string - preview_cid: - type: string - orig_file_cid: - type: string - orig_filename: - type: string - is_original_available: - type: boolean - mood: - type: string - release_date: - type: string - format: date - isrc: - type: string - remix_of: - $ref: "#/components/schemas/remix_parent" - repost_count: - type: integer - favorite_count: - type: integer - comment_count: - type: integer - tags: - type: string - title: + type: string + - name: bpm_min + in: query + description: Only include tracks that have a bpm greater than or equal to + schema: + type: number + - name: bpm_max + in: query + description: Only include tracks that have a bpm less than or equal to + schema: + type: number + - name: sort_method + in: query + description: The sort method + schema: type: string - user: - $ref: "#/components/schemas/user" - duration: + enum: + - relevant + - popular + - recent + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/search_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /search/tags: + get: + tags: + - search + description: Get Users/Tracks/Playlists/Albums that best match the provided + tag + operationId: SearchTags + parameters: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: type: integer - is_downloadable: - type: boolean - play_count: + - name: limit + in: query + description: The number of items to fetch + schema: type: integer - permalink: - type: string - is_streamable: + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: query + in: query + description: The search query + schema: + type: string + - name: kind + in: query + description: 'The type of response, one of: all, users, tracks, playlists, + or albums' + schema: + type: string + default: all + enum: + - all + - users + - tracks + - playlists + - albums + - name: includePurchaseable + in: query + description: Whether or not to include purchaseable content + schema: type: boolean - ddex_app: - type: string - playlists_containing_track: + - name: genre + in: query + description: The genres to filter by + style: form + explode: true + schema: type: array items: - type: integer - pinned_comment_id: - type: integer - album_backlink: - $ref: "#/components/schemas/album_backlink" - access: - $ref: "#/components/schemas/track_access_info" - ai_attribution_user_id: - type: string - example: "x5pJ3Az" - allowed_api_keys: + type: string + - name: mood + in: query + description: The moods to filter by + style: form + explode: true + schema: type: array items: type: string - artists: - type: object - audio_analysis_error_count: - type: integer - audio_upload_id: + - name: is_verified + in: query + description: Only include verified users in the user results + schema: + type: boolean + - name: has_downloads + in: query + description: Only include tracks that have downloads in the track results + schema: + type: boolean + - name: is_purchaseable + in: query + description: Only include purchaseable tracks and albums in the track and + album results + schema: + type: boolean + - name: key + in: query + description: Only include tracks that match the musical key + style: form + explode: true + schema: + type: array + items: + type: string + - name: bpm_min + in: query + description: Only include tracks that have a bpm greater than or equal to + schema: + type: number + - name: bpm_max + in: query + description: Only include tracks that have a bpm less than or equal to + schema: + type: number + - name: sort_method + in: query + description: The sort method + schema: type: string - blocknumber: + enum: + - relevant + - popular + - recent + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/search_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /tracks/best_new_releases: + get: + tags: + - tracks + description: Gets the tracks found on the "Best New Releases" smart playlist + operationId: Get Best New Releases + parameters: + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: window + in: query + description: The window from now() to look back over + required: true + schema: + type: string + enum: + - week + - month + - year + - name: limit + in: query + description: The number of tracks to get + schema: type: integer - bpm: - type: number - comments_disabled: + default: 25 + - name: with_users + in: query + description: Boolean to include user info with tracks + schema: type: boolean - copyright_line: - type: object - cover_art: - type: string - cover_art_sizes: - type: string - cover_original_artist: - type: string - cover_original_song_title: - type: string - create_date: - type: string - created_at: - type: string - format: date-time - credits_splits: - type: string - ddex_release_ids: - type: object - download: - $ref: "#/components/schemas/media_link" - download_conditions: - $ref: "#/components/schemas/access_gate" - field_visibility: - type: object - followee_favorites: - type: array - items: - type: object - followee_reposts: - type: array - items: - type: object - has_current_user_reposted: - type: boolean - has_current_user_saved: - type: boolean - indirect_resource_contributors: - type: object - is_available: - type: boolean - is_custom_bpm: - type: boolean - is_custom_musical_key: - type: boolean - is_delete: - type: boolean - is_download_gated: - type: boolean - is_owned_by_user: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/tracks_response' + /tracks/most_loved: + get: + tags: + - tracks + description: Gets the tracks found on the "Most Loved" smart playlist + operationId: Get Most Loved Tracks + parameters: + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: limit + in: query + description: Number of tracks to fetch + schema: + type: integer + default: 25 + - name: with_users + in: query + description: Boolean to include user info with tracks + schema: type: boolean - is_scheduled_release: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/tracks_response' + /tracks/remixables: + get: + tags: + - tracks + description: Gets a list of tracks that have stems available for remixing + operationId: Get Remixable Tracks + parameters: + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: with_users + in: query + description: Boolean to include user info with tracks + schema: type: boolean - is_stream_gated: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/remixables_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /tracks/under_the_radar: + get: + tags: + - tracks + description: Gets the tracks found on the "Under the Radar" smart playlist + operationId: Get Under the Radar Tracks + parameters: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: filter + in: query + description: Filters for activity that is original vs reposts + schema: + type: string + default: all + enum: + - all + - repost + - original + - name: tracks_only + in: query + description: Whether to only include tracks + schema: type: boolean - is_unlisted: + - name: with_users + in: query + description: Boolean to include user info with tracks + schema: type: boolean - iswc: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/tracks_response' + /transactions: + get: + tags: + - transactions + summary: Gets the user's $AUDIO transaction history within the App + description: 'Deprecated: Use `/users/{id}/transactions/audio` or `sdk.full.users.getAudioTransactions()` + instead.' + operationId: Get Audio Transaction History + parameters: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: sort_method + in: query + description: The sort method + schema: type: string - license: + default: date + enum: + - date + - transaction_type + - name: sort_direction + in: query + description: The sort direction + schema: + type: string + default: desc + enum: + - asc + - desc + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - musical_key: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/transaction_history_response' + deprecated: true + /transactions/count: + get: + tags: + - transactions + summary: Gets the count of the user's $AUDIO transaction history within the + App + description: 'Deprecated: Use `/users/{id}/transactions/audio/count` or `sdk.full.users.getAudioTransactionCount()` + instead.' + operationId: Get Audio Transaction History Count + parameters: + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: type: string - parental_warning_type: + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - nullable: true - playlists_previously_containing_track: - type: object - preview: - $ref: "#/components/schemas/media_link" - preview_start_seconds: - type: number - producer_copyright_line: - type: object - resource_contributors: - type: object - rights_controller: - type: object - slug: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/transaction_history_count_response' + deprecated: true + /users/account/{wallet}: + get: + tags: + - users + description: Gets the account for a given user + operationId: Get User Account + parameters: + - name: wallet + in: path + description: Wallet address for the account + required: true + schema: type: string - stem_of: - type: array - items: - type: object - stream: - $ref: "#/components/schemas/media_link" - stream_conditions: - $ref: "#/components/schemas/access_gate" - track_id: - type: integer - track_segments: - type: object - updated_at: + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: type: string - format: date-time - track_artwork: - type: object - properties: - "150x150": + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - "480x480": + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/user_account_response' + '401': + description: Unauthorized + content: {} + '403': + description: Forbidden + content: {} + '404': + description: Not Found + content: {} + '500': + description: Server error + content: {} + /users/genre/top: + get: + tags: + - users + description: Get the Top Users for a Given Genre + operationId: Get Top Users In Genre + parameters: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: genre + in: query + description: List of Genres + style: form + explode: true + schema: + type: array + items: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/top_genre_users_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/handle/{handle}/reposts: + get: + tags: + - users + description: Gets the user's reposts by the user handle + operationId: Get Reposts by Handle + parameters: + - name: handle + in: path + description: A User handle + required: true + schema: type: string - "1000x1000": + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: type: string - remix_parent: - type: object - properties: - tracks: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/reposts' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/subscribers: + get: + tags: + - users + description: All users that subscribe to the provided users + operationId: Bulk Get Subscribers + parameters: + - name: ids + in: query + description: User IDs to fetch subscribers for + required: true + style: form + explode: false + schema: type: array items: - $ref: "#/components/schemas/track_element" - remix_parent_write: - type: object - required: - - tracks - properties: - tracks: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/bulk_subscribers_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + post: + tags: + - users + description: Get all users that subscribe to the users listed in the JSON request + operationId: Bulk Get Subscribers via JSON request + parameters: + - name: ids + in: query + description: User IDs to fetch subscribers for + required: true + style: form + explode: false + schema: type: array items: - $ref: "#/components/schemas/track_element_write" - track_element: - required: - - parent_track_id - type: object - properties: - parent_track_id: - type: string - track_element_write: - required: - - parent_track_id - type: object - properties: - parent_track_id: - type: string - example: "x5pJ3Az" - album_backlink: - required: - - permalink - - playlist_id - - playlist_name - type: object - properties: - playlist_id: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/bulk_subscribers_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/top: + get: + tags: + - users + description: Get the Top Users having at least one track by follower count + operationId: Get Top Users + parameters: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: type: integer - playlist_name: - type: string - permalink: + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: type: string - reposts: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/activity" - track_activity: - allOf: - - $ref: "#/components/schemas/activity" - - required: - - item - - item_type - type: object - properties: - item_type: - type: string - example: track - enum: - - track - item: - $ref: "#/components/schemas/Track" - activity: - required: - - class - - item - - item_type - - timestamp - type: object - properties: - timestamp: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/top_users_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/{id}/favorites/tracks: + get: + tags: + - users + description: Gets a user's favorite tracks + operationId: Get User Favorite Tracks + parameters: + - name: id + in: path + description: A User ID + required: true + schema: type: string - item_type: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: type: string - example: track - enum: - - track - - playlist - item: - type: object - properties: {} - class: + - name: query + in: query + description: The filter query + schema: type: string - discriminator: - propertyName: class - collection_activity: - allOf: - - $ref: "#/components/schemas/activity" - - required: - - item - - item_type - type: object - properties: - timestamp: - type: string - item_type: - type: string - example: playlist - enum: - - playlist - item: - $ref: "#/components/schemas/playlist" - playlist: - required: - - access - - added_timestamps - - blocknumber - - created_at - - favorite_count - - followee_favorites - - followee_reposts - - has_current_user_reposted - - has_current_user_saved - - id - - is_album - - is_delete - - is_image_autogenerated - - is_private - - is_scheduled_release - - is_stream_gated - - permalink - - playlist_contents - - playlist_name - - repost_count - - total_play_count - - track_count - - updated_at - - user - - user_id - type: object - properties: - artwork: - $ref: "#/components/schemas/playlist_artwork" - description: + - name: sort_method + in: query + description: The sort method + schema: type: string - permalink: + enum: + - title + - artist_name + - release_date + - last_listen_date + - added_date + - plays + - reposts + - saves + - most_listens_by_user + - name: sort_direction + in: query + description: The sort direction + schema: type: string - id: + enum: + - asc + - desc + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/track_library_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/{id}/feed: + get: + tags: + - users + description: Gets the feed for the user + operationId: Get User Feed + parameters: + - name: id + in: path + description: A User ID + required: true + schema: type: string - is_album: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: filter + in: query + description: Controls whether the feed is limited to reposts, original content, + or all items + schema: + type: string + default: all + enum: + - all + - repost + - original + - name: tracks_only + in: query + description: Limit feed to only tracks + schema: type: boolean - is_image_autogenerated: + - name: with_users + in: query + description: Include user data with feed items + schema: type: boolean - playlist_name: - type: string - playlist_contents: + - name: followee_user_id + in: query + description: A list of followed users to prioritize in feed generation + style: form + explode: true + schema: type: array items: - $ref: "#/components/schemas/playlist_added_timestamp" - repost_count: - type: integer - favorite_count: - type: integer - total_play_count: - type: integer - user: - $ref: "#/components/schemas/user" - ddex_app: + type: integer + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: type: string - access: - $ref: "#/components/schemas/access" - upc: + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - track_count: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/user_feed_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/{id}/library/albums: + get: + tags: + - users + summary: Fetch a user's full library playlists + description: Gets a user's saved/reposted/purchased/all albums + operationId: Get User Library Albums + parameters: + - name: id + in: path + description: A user ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: type: integer - blocknumber: + - name: limit + in: query + description: The number of items to fetch + schema: type: integer - created_at: + - name: user_id + in: query + description: The user ID of the user making the request + schema: type: string - followee_reposts: - type: array - items: - $ref: "#/components/schemas/repost" - followee_favorites: - type: array - items: - $ref: "#/components/schemas/favorite" - has_current_user_reposted: - type: boolean - has_current_user_saved: - type: boolean - is_delete: - type: boolean - is_private: - type: boolean - updated_at: + - name: query + in: query + description: The filter query + schema: type: string - added_timestamps: - type: array - description: DEPRECATED. Use playlist_contents instead. - items: - $ref: "#/components/schemas/playlist_added_timestamp" - user_id: + - name: sort_direction + in: query + description: The sort direction + schema: type: string - tracks: - type: array - items: - $ref: "#/components/schemas/Track" - cover_art: + enum: + - asc + - desc + - name: type + in: query + description: 'The type of entity to return: favorited, reposted, purchased, + or all. Defaults to favorite' + schema: + type: string + default: favorite + enum: + - all + - repost + - favorite + - purchase + - name: sort_method + in: query + description: The sort method + schema: type: string - cover_art_sizes: + enum: + - added_date + - reposts + - saves + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - cover_art_cids: - $ref: "#/components/schemas/playlist_artwork" - is_stream_gated: - type: boolean - stream_conditions: - type: object - description: How to unlock stream access to the track - allOf: - - $ref: "#/components/schemas/access_gate" - is_scheduled_release: - type: boolean - release_date: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/collection_library_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/{id}/library/playlists: + get: + tags: + - users + summary: Fetch a user's full library playlists + description: Gets a user's saved/reposted/purchased/all playlists + operationId: Get User Library Playlists + parameters: + - name: id + in: path + description: A user ID + required: true + schema: type: string - format: date - ddex_release_ids: - type: object - properties: {} - artists: - type: array - items: - type: object - properties: {} - copyright_line: - type: object - properties: {} - producer_copyright_line: - type: object - properties: {} - parental_warning_type: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: type: string - nullable: true - playlist_artwork: - type: object - properties: - "150x150": + - name: query + in: query + description: The filter query + schema: type: string - "480x480": + - name: sort_direction + in: query + description: The sort direction + schema: type: string - "1000x1000": + enum: + - asc + - desc + - name: type + in: query + description: 'The type of entity to return: favorited, reposted, purchased, + or all. Defaults to favorite' + schema: + type: string + default: favorite + enum: + - all + - repost + - favorite + - purchase + - name: sort_method + in: query + description: The sort method + schema: type: string - playlist_added_timestamp: - required: - - track_id - - timestamp - type: object - properties: - track_id: + enum: + - added_date + - reposts + - saves + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - description: Track ID - timestamp: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/collection_library_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/{id}/library/tracks: + get: + tags: + - users + summary: Fetch a user's full library tracks + description: Gets a user's saved/reposted/purchased/all tracks + operationId: Get User Library Tracks + parameters: + - name: id + in: path + description: A user ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: type: integer - format: int64 - description: Unix timestamp when track was added - minimum: 0 - metadata_timestamp: + - name: limit + in: query + description: The number of items to fetch + schema: type: integer - format: int64 - description: Metadata timestamp - minimum: 0 - access: - required: - - download - - stream - type: object - properties: - stream: - type: boolean - download: - type: boolean - tags_response: - type: object - properties: - data: - type: array - items: - type: string - favorites_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/favorite" - repost: - required: - - repost_item_id - - repost_type - - user_id - type: object - properties: - repost_item_id: + - name: user_id + in: query + description: The user ID of the user making the request + schema: type: string - repost_type: + - name: query + in: query + description: The filter query + schema: type: string - user_id: + - name: sort_method + in: query + description: The sort method + schema: type: string - favorite: - required: - - created_at - - favorite_item_id - - favorite_type - - user_id - type: object - properties: - favorite_item_id: + enum: + - title + - artist_name + - release_date + - last_listen_date + - added_date + - plays + - reposts + - saves + - most_listens_by_user + - name: sort_direction + in: query + description: The sort direction + schema: type: string - favorite_type: + enum: + - asc + - desc + - name: type + in: query + description: 'The type of entity to return: favorited, reposted, purchased, + or all. Defaults to favorite' + schema: + type: string + default: favorite + enum: + - all + - repost + - favorite + - purchase + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - user_id: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/track_library_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/{id}/managed_users: + get: + tags: + - users + description: Gets a list of users managed by the given user + operationId: Get Managed Users + parameters: + - name: id + in: path + description: A user id for the manager + required: true + schema: + type: string + - name: is_approved + in: query + description: If true, only show users where the management request has been + accepted. If false, only show those where the request was rejected. If omitted, + shows all users regardless of approval status. + schema: + type: boolean + - name: is_revoked + in: query + description: If true, only show users where the management request has been + revoked. If false, only show those with a pending or accepted request. Defaults + to false. + schema: + type: boolean + default: false + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: type: string - created_at: + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - playlists_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/playlist" - albums_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/playlist" - user_search: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/user" - history_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/track_activity" - subscribers_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/user" - followers_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/user" - following_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/user" - mutual_followers_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/user" - related_artist_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/user" - user_ids_addresses_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/user_id_address" - user_id_address: - type: object - required: - - user_id - - address - properties: - user_id: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/managed_users_response' + '400': + description: Bad request + content: {} + '401': + description: Unauthorized + content: {} + '403': + description: Forbidden + content: {} + '500': + description: Server error + content: {} + /users/{id}/purchasers/count: + get: + tags: + - users + description: Gets the list of users who have purchased content by the given + user + operationId: Get purchasers count + parameters: + - name: id + in: path + description: A User ID + required: true + schema: type: string - address: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: content_type + in: query + description: Type of content to filter by (track or album) + schema: + type: string + - name: content_id + in: query + description: Filters for users who have purchased the given track or album + ID + schema: type: string - connected_wallets_response: - type: object - properties: - data: - $ref: "#/components/schemas/connected_wallets" - connected_wallets: - required: - - erc_wallets - - spl_wallets - type: object - properties: - erc_wallets: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/purchasers_count_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/{id}/purchases: + get: + tags: + - users + description: Gets the purchases the user has made + operationId: Get Purchases + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: sort_method + in: query + description: The sort direction + schema: + type: string + enum: + - content_title + - artist_name + - buyer_name + - date + - name: sort_direction + in: query + description: The sort direction + schema: + type: string + enum: + - asc + - desc + - name: content_ids + in: query + description: Filters purchases by track or album IDs + style: form + explode: true + schema: type: array items: type: string - spl_wallets: + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/purchases_response' + /users/{id}/purchases/count: + get: + tags: + - users + description: Gets the count of purchases the user has made + operationId: Get Purchases Count + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: content_ids + in: query + description: Filters purchases by track or album IDs + style: form + explode: true + schema: type: array items: type: string - collectibles_response: - type: object - properties: - data: - $ref: "#/components/schemas/collectibles" - collectibles: - type: object - properties: - data: - type: object - properties: {} - description: Raw collectibles JSON structure generated by client - get_challenges: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/challenge_response" - challenge_response: - required: - - amount - - challenge_id - - challenge_type - - disbursed_amount - - is_active - - is_complete - - is_disbursed - - metadata - - user_id - type: object - properties: - challenge_id: + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: type: string - user_id: + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - specifier: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/purchases_count_response' + /users/{id}/remixers/count: + get: + tags: + - users + description: Gets the count of unique users who have remixed tracks by the given + user, or a specific track by that user if provided + operationId: Get remixers count + parameters: + - name: id + in: path + description: A User ID + required: true + schema: type: string - is_complete: - type: boolean - is_active: - type: boolean - is_disbursed: - type: boolean - current_step_count: - type: integer - max_steps: - type: integer - challenge_type: + - name: user_id + in: query + description: The user ID of the user making the request + schema: type: string - amount: + - name: track_id + in: query + description: Filters for remixers who have remixed the given track ID + schema: type: string - disbursed_amount: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/remixers_count_response' + '400': + description: Bad request + content: {} + '500': + description: Server error + content: {} + /users/{id}/sales: + get: + tags: + - users + description: Gets the sales the user has made + operationId: Get Sales + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: type: integer - cooldown_days: + - name: limit + in: query + description: The number of items to fetch + schema: type: integer - metadata: - type: object - properties: {} - get_supporters: - type: object - properties: - data: + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: sort_method + in: query + description: The sort direction + schema: + type: string + enum: + - content_title + - artist_name + - buyer_name + - date + - name: sort_direction + in: query + description: The sort direction + schema: + type: string + enum: + - asc + - desc + - name: content_ids + in: query + description: Filters purchases by track or album IDs + style: form + explode: true + schema: type: array items: - $ref: "#/components/schemas/supporter" - supporter: - required: - - amount - - rank - - sender - type: object - properties: - rank: - type: integer - amount: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: type: string - sender: - $ref: "#/components/schemas/user" - get_supported_users: - type: object - properties: - data: + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/purchases_response' + /users/{id}/sales/count: + get: + tags: + - users + description: Gets the count of sales the user has made + operationId: Get Sales Count + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: user_id + in: query + description: The user ID of the user making the request + schema: + type: string + - name: content_ids + in: query + description: Filters purchases by track or album IDs + style: form + explode: true + schema: type: array items: - $ref: "#/components/schemas/supporting" - supporting: - required: - - amount - - rank - - receiver - type: object - properties: - rank: - type: integer - amount: - type: string - receiver: - $ref: "#/components/schemas/user" - verify_token: - type: object - properties: - data: - $ref: "#/components/schemas/decoded_user_token" - decoded_user_token: - required: - - apiKey - - email - - handle - - iat - - name - - sub - - userId - - verified - type: object - properties: - apiKey: + type: string + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: type: string - userId: + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - email: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/purchases_count_response' + /users/{id}/supporters/{supporter_user_id}: + get: + tags: + - users + description: Gets the specified supporter of the given user + operationId: Get Supporter + parameters: + - name: id + in: path + description: A User ID + required: true + schema: type: string - name: + - name: supporter_user_id + in: path + description: A User ID of a supporter + required: true + schema: type: string - handle: + - name: user_id + in: query + description: The user ID of the user making the request + schema: type: string - verified: - type: boolean - profilePicture: - $ref: "#/components/schemas/profilePicture" - sub: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/get_supporter' + /users/{id}/supporting/{supported_user_id}: + get: + tags: + - users + description: Gets the support from the given user to the supported user + operationId: Get Supporting + parameters: + - name: id + in: path + description: A User ID + required: true + schema: type: string - iat: + - name: supported_user_id + in: path + description: A User ID of a supported user + required: true + schema: type: string - profilePicture: - type: object - properties: - "150x150": + - name: user_id + in: query + description: The user ID of the user making the request + schema: type: string - "480x480": + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/get_supporting' + /users/{id}/transactions/audio: + get: + tags: + - users + description: Gets the user's $AUDIO transaction history within the App + operationId: Get Audio Transactions + parameters: + - name: id + in: path + description: A User ID + required: true + schema: type: string - "1000x1000": + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: sort_method + in: query + description: The sort method + schema: type: string - developer_app: - required: - - address - - name - - user_id - type: object - properties: - address: + default: date + enum: + - date + - transaction_type + - name: sort_direction + in: query + description: The sort direction + schema: + type: string + default: desc + enum: + - asc + - desc + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - user_id: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/transaction_history_response' + /users/{id}/transactions/audio/count: + get: + tags: + - users + description: Gets the count of the user's $AUDIO transaction history within + the App + operationId: Get Audio Transaction Count + parameters: + - name: id + in: path + description: A User ID + required: true + schema: type: string - name: + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: type: string - description: + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - image_url: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/transaction_history_count_response' + /users/{id}/transactions/usdc: + get: + tags: + - users + description: Gets the user's $USDC transaction history within the App + operationId: Get USDC Transactions + parameters: + - name: id + in: path + description: A User ID + required: true + schema: type: string - authorized_apps: - type: object - properties: - data: + - name: offset + in: query + description: The number of items to skip. Useful for pagination (page number + * limit) + schema: + type: integer + - name: limit + in: query + description: The number of items to fetch + schema: + type: integer + - name: sort_method + in: query + description: The sort method + schema: + type: string + default: date + enum: + - date + - transaction_type + - name: sort_direction + in: query + description: The sort direction + schema: + type: string + default: desc + enum: + - asc + - desc + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: + type: string + - name: type + in: query + description: Filters the type of transactions to show + style: form + explode: true + schema: type: array items: - $ref: "#/components/schemas/authorized_app" - authorized_app: - required: - - address - - grant_created_at - - grant_updated_at - - grantor_user_id - - name - type: object - properties: - address: - type: string - name: - type: string - description: - type: string - image_url: + type: string + enum: + - purchase_content + - transfer + - internal_transfer + - prepare_withdrawal + - recover_withdrawal + - withdrawal + - purchase_stripe + - name: include_system_transactions + in: query + description: Include intermediate system transactions in the results + schema: + type: boolean + default: false + - name: method + in: query + description: Filters the method (sent/received) of transactions to show + schema: type: string - grantor_user_id: + enum: + - send + - receive + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/transaction_history_response' + /users/{id}/transactions/usdc/count: + get: + tags: + - users + description: Gets the count of the user's $USDC transaction history within the + App + operationId: Get USDC Transaction Count + parameters: + - name: id + in: path + description: A User ID + required: true + schema: + type: string + - name: type + in: query + description: Filters the type of transactions to show + style: form + explode: true + schema: + type: array + items: + type: string + enum: + - purchase_content + - transfer + - internal_transfer + - prepare_withdrawal + - recover_withdrawal + - withdrawal + - purchase_stripe + - name: include_system_transactions + in: query + description: Include intermediate system transactions in the results + schema: + type: boolean + default: false + - name: method + in: query + description: Filters the method (sent/received) of transactions to show + schema: type: string - grant_created_at: + enum: + - send + - receive + - name: Encoded-Data-Message + in: header + description: The data that was signed by the user for signature recovery + schema: + type: string + - name: Encoded-Data-Signature + in: header + description: The signature of data, used for signature recovery + schema: type: string - grant_updated_at: + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/transaction_history_count_response' +components: + schemas: + create_access_key_response: + type: object + required: + - api_access_key + properties: + api_access_key: type: string - sales_aggregate_response: + description: The newly created bearer token (API access key) + track_library_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version type: object properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' data: type: array items: - $ref: "#/components/schemas/sales_aggregate" - sales_aggregate: + $ref: '#/components/schemas/track_activity' + purchases_response: required: - - content_id - - content_type - - purchase_count + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version type: object properties: - content_type: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: type: string - content_id: + timestamp: type: string - purchase_count: - type: integer - sales_json_response: - type: object - properties: + version: + $ref: '#/components/schemas/version_metadata' data: - $ref: "#/components/schemas/sales_json_content" - sales_json_content: - type: object - properties: - sales: type: array items: - $ref: "#/components/schemas/sale_json" - sale_json: + $ref: '#/components/schemas/purchase' + create_playlist_request_body: type: object + required: + - playlist_name properties: - title: + playlist_id: type: string - description: Title of the content (track/album/playlist) - link: + description: Optional playlist ID (will be generated if not provided) + example: x5pJ3Az + playlist_name: type: string - description: Full URL link to the content - purchased_by: + minLength: 1 + description: Playlist or album name + example: My New Playlist + description: type: string - description: Name of the buyer - buyer_user_id: - type: integer - description: User ID of the buyer - date: + description: Playlist description + maxLength: 1000 + is_private: + type: boolean + description: Whether the playlist is private + is_album: + type: boolean + description: Whether this is an album + genre: + $ref: '#/components/schemas/genre' + mood: + allOf: + - $ref: '#/components/schemas/mood' + tags: type: string - description: ISO format date string of when the sale occurred - sale_price: - type: number - description: Base sale price in USDC - network_fee: - type: number - description: Network fee deducted from sale in USDC - pay_extra: - type: number - description: Extra amount paid by buyer in USDC - total: - type: number - description: Total amount received by seller in USDC - country: + description: Comma-separated tags + license: type: string - description: Country code where purchase was made - encrypted_email: + description: License type + upc: type: string - description: Encrypted email of buyer if available - encrypted_key: + description: Universal Product Code (for albums) + release_date: type: string - description: Encrypted key for decrypting the buyer's email - is_initial: - type: boolean - description: Whether this is an initial encryption from the backfill - pubkey_base64: + format: date + description: Release date + cover_art_cid: type: string - description: Base64 encoded public key of the buyer - remixers_response: - type: object - properties: - data: + description: IPFS CID for cover art + playlist_contents: type: array + description: Array of tracks in the playlist items: - $ref: "#/components/schemas/user" - purchasers_response: - type: object - properties: - data: + $ref: '#/components/schemas/playlist_added_timestamp' + is_stream_gated: + type: boolean + nullable: true + description: Whether streaming is restricted behind an access gate + is_scheduled_release: + type: boolean + nullable: true + description: Whether the playlist/album is a scheduled release + stream_conditions: + nullable: true + allOf: + - $ref: '#/components/schemas/access_gate' + ddex_app: + type: string + description: DDEX application identifier + ddex_release_ids: + type: object + nullable: true + additionalProperties: + type: string + description: DDEX release identifiers + artists: type: array + nullable: true items: - $ref: "#/components/schemas/user" + $ref: '#/components/schemas/ddex_resource_contributor' + description: DDEX resource contributors / artists + copyright_line: + nullable: true + allOf: + - $ref: '#/components/schemas/ddex_copyright' + description: DDEX copyright line + producer_copyright_line: + nullable: true + allOf: + - $ref: '#/components/schemas/ddex_copyright' + description: DDEX producer copyright line + parental_warning_type: + type: string + nullable: true + description: Parental warning type + is_image_autogenerated: + type: boolean + nullable: true + description: Whether the image is autogenerated user_tracks_remixed_response: type: object properties: data: type: array items: - $ref: "#/components/schemas/remixed_track_aggregate" - remixed_track_aggregate: - required: - - remix_count - - title - - track_id - type: object - properties: - track_id: - type: string - title: - type: string - remix_count: - type: integer - email_access_response: + $ref: '#/components/schemas/remixed_track_aggregate' + cid_data_response: type: object properties: data: - $ref: "#/components/schemas/email_access" - email_access: - required: - - created_at - - email_owner_user_id - - encrypted_key - - grantor_user_id - - id - - is_initial - - receiving_user_id - - updated_at + $ref: '#/components/schemas/data_and_type' + ddex_copyright: type: object + required: + - year + - text properties: - id: - type: integer - email_owner_user_id: - type: integer - receiving_user_id: - type: integer - grantor_user_id: - type: integer - encrypted_key: - type: string - is_initial: - type: boolean - created_at: + year: type: string - updated_at: + minLength: 4 + maxLength: 4 + description: Copyright year (4 characters) + text: type: string - user_comments_response: + minLength: 1 + description: Copyright text + claimed_prizes_response: type: object + required: + - data properties: data: type: array items: - $ref: "#/components/schemas/comment" - comment: - required: - - created_at - - entity_id - - entity_type - - id - - is_edited - - message - - react_count - - reply_count + $ref: '#/components/schemas/claimed_prize' + description: List of claimed prizes for the wallet (action_data excluded + for security) + undisbursed_challenges: type: object properties: - id: - type: string - entity_id: - type: string - entity_type: - $ref: "#/components/schemas/comment_entity_type" - user_id: - type: string - message: - type: string - mentions: - type: array - items: - $ref: "#/components/schemas/comment_mention" - track_timestamp_s: - type: integer - react_count: - type: integer - reply_count: - type: integer - is_edited: - type: boolean - is_current_user_reacted: - type: boolean - is_artist_reacted: - type: boolean - is_tombstone: - type: boolean - is_muted: - type: boolean - created_at: - type: string - updated_at: - type: string - replies: + data: type: array items: - $ref: "#/components/schemas/reply_comment" - parent_comment_id: - type: integer - comment_mention: - required: - - handle - - user_id + $ref: '#/components/schemas/undisbursed_challenge' + pin_comment_request_body: type: object + required: + - entityType + - entityId properties: - user_id: + entityType: + allOf: + - $ref: '#/components/schemas/comment_entity_type' + example: Track + entityId: type: integer - handle: - type: string - reply_comment: - required: - - created_at - - entity_id - - entity_type - - id - - is_edited - - message - - react_count - - user_id + description: ID of the entity (track) the comment is on + example: 12345 + claim_rewards_request_body: type: object + required: + - userId properties: - id: - type: string - entity_id: + challengeId: type: string - entity_type: - $ref: "#/components/schemas/comment_entity_type" - user_id: + description: The challenge ID to filter rewards (optional) + example: u + specifier: type: string - message: + description: The specifier to filter rewards (optional) + example: 7eP5n + userId: type: string - mentions: - type: array - items: - $ref: "#/components/schemas/comment_mention" - track_timestamp_s: + description: The user ID to claim rewards for + example: 7eP5n + bulk_subscribers_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: type: integer - react_count: + latest_indexed_block: type: integer - is_edited: - type: boolean - is_current_user_reacted: - type: boolean - is_artist_reacted: - type: boolean - created_at: + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: type: string - updated_at: + timestamp: type: string - parent_comment_id: - type: integer - playlist_response: - type: object - properties: + version: + $ref: '#/components/schemas/version_metadata' data: type: array items: - $ref: "#/components/schemas/playlist" - playlist_tracks_response: + $ref: '#/components/schemas/user_subscribers' + track_comment_count_response: type: object properties: data: - type: array - items: - $ref: "#/components/schemas/Track" - playlist_search_result: + type: integer + coin_response: type: object properties: data: - type: array - items: - $ref: "#/components/schemas/playlist" - trending_playlists_response: + $ref: '#/components/schemas/coin' + purchasers_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version type: object properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' data: type: array items: - $ref: "#/components/schemas/playlist" - access_info_response: + $ref: '#/components/schemas/user' + prize_claim_request_body: type: object - properties: - data: - $ref: "#/components/schemas/track_access_info" - track_access_info: required: - - blocknumber - - user_id - type: object + - signature + - wallet properties: - access: - type: object - description: Describes what access the given user has - allOf: - - $ref: "#/components/schemas/access" - user_id: + signature: type: string - description: The user ID of the owner of this track - blocknumber: - type: integer - description: The blocknumber this track was last updated - is_stream_gated: - type: boolean - description: - Whether or not the owner has restricted streaming behind an - access gate - stream_conditions: - type: object - description: How to unlock stream access to the track - allOf: - - $ref: "#/components/schemas/extended_access_gate" - is_download_gated: - type: boolean - description: - Whether or not the owner has restricted downloading behind - an access gate - download_conditions: - type: object - description: How to unlock the track download - allOf: - - $ref: "#/components/schemas/extended_access_gate" - extended_access_gate: - oneOf: - - $ref: "#/components/schemas/tip_gate" - - $ref: "#/components/schemas/follow_gate" - - $ref: "#/components/schemas/extended_purchase_gate" - - $ref: "#/components/schemas/token_gate" - tip_gate: - required: - - tip_user_id + description: The Solana transaction signature for the 2 YAK payment + example: 5j7s1QjmRKFuDbCWMRVRNibSV2VAAEcNKP6HWU7GwPdXkBZvhz8n4vQl7bBq8tN4Rz9x1Kj3mP5wQ8rT2Y6zA + wallet: + type: string + description: The wallet address that sent the transaction + example: HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC + create_reward_code_request: type: object + required: + - signature + - mint + - amount properties: - tip_user_id: + signature: + type: string + description: Base64-encoded Solana Ed25519 signature of the string "code" + example: 3fG7xQh2L8vK9pN4mR5sT6uW7vX8yZ1aB2cD3eF4gH5iJ6kL7mN8oP9qR0sT1uV2wX3yZ4aB5cD6eF7gH8iJ9k= + mint: + type: string + description: The coin mint address + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + amount: type: integer - example: 1234 - description: Must tip the given user ID to unlock - follow_gate: + description: The reward amount (must be greater than 0) + minimum: 1 + example: 100 + playlist_tracks_response: required: - - follow_user_id + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version type: object properties: - follow_user_id: + latest_chain_block: type: integer - example: 1234 - description: Must follow the given user ID to unlock - token_gate: - required: - - token_gate + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/track' + prize_claim_response: type: object - properties: - token_gate: - type: object - description: Must hold an NFT of the given collection to unlock - allOf: - - $ref: "#/components/schemas/extended_token_gate" - extended_token_gate: required: - - token_mint - - token_amount - type: object + - prize_id + - prize_name + - wallet properties: - token_mint: + prize_id: type: string - description: The mint of the token needed to unlock - token_amount: - type: integer - description: The amount of the token needed to unlock - extended_purchase_gate: - required: - - usdc_purchase - type: object - properties: - usdc_purchase: + description: The unique identifier of the prize won + example: prize_1_yak_airdrop + prize_name: + type: string + description: The name of the prize won + example: 1 YAK Airdrop + wallet: + type: string + description: The wallet address that claimed the prize + example: HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC + prize_type: + type: string + description: The type of prize (e.g., "coin_airdrop", "download") + example: coin_airdrop + action_data: type: object - description: - Must pay the total price and split to the given addresses to - unlock - allOf: - - $ref: "#/components/schemas/extended_usdc_gate" - extended_usdc_gate: + description: Prize-specific action data (e.g., redeem code/URL for coin + airdrops, download URL for downloads) + additionalProperties: true + example: + code: aB3d5F + url: /coins/YAK/redeem/aB3d5F + trending_playlists_response: required: - - price - - splits + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version type: object properties: - price: + latest_chain_block: type: integer - splits: - type: array - items: - $ref: "#/components/schemas/extended_payment_split" - extended_payment_split: - required: - - amount - - payout_wallet - - percentage - type: object - properties: - user_id: + latest_indexed_block: type: integer - example: 1234 - percentage: - type: number - eth_wallet: - type: string - payout_wallet: - type: string - amount: + latest_chain_slot_plays: type: integer - media_link: - type: object - properties: - url: - type: string - mirrors: - type: array - items: - type: string - access_gate: - oneOf: - - $ref: "#/components/schemas/tip_gate" - - $ref: "#/components/schemas/follow_gate" - - $ref: "#/components/schemas/extended_purchase_gate" - - $ref: "#/components/schemas/token_gate" - track_response: - type: object - properties: - data: - $ref: "#/components/schemas/Track" - track_inspect: - type: object - properties: - data: - $ref: "#/components/schemas/blob_info" - blob_info: - required: - - content_type - - size - type: object - properties: - size: + latest_indexed_slot_plays: type: integer - content_type: + signature: type: string - track_inspect_list: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/blob_info" - track_comments_response: - type: object - properties: + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' data: type: array items: - $ref: "#/components/schemas/comment" - trending_ids_response: - type: object - properties: - data: - $ref: "#/components/schemas/trending_times_ids" - trending_times_ids: + $ref: '#/components/schemas/playlist' + create_track_request_body: type: object + required: + - title + - genre + - track_cid properties: - week: + track_id: + type: string + description: Optional track ID (will be generated if not provided) + example: x5pJ3Az + title: + type: string + description: Track title + example: My New Track + genre: + $ref: '#/components/schemas/genre' + description: + type: string + nullable: true + description: Track description + maxLength: 1000 + mood: + nullable: true + allOf: + - $ref: '#/components/schemas/mood' + bpm: + type: number + nullable: true + description: Beats per minute (tempo) + musical_key: + type: string + nullable: true + description: Musical key of the track + tags: + type: string + nullable: true + description: Comma-separated tags + license: + type: string + nullable: true + description: License type + isrc: + type: string + nullable: true + description: International Standard Recording Code + iswc: + type: string + nullable: true + description: International Standard Musical Work Code + release_date: + type: string + format: date + description: Release date + track_cid: + type: string + description: IPFS CID for the track audio file (required) + orig_file_cid: + type: string + description: IPFS CID for the original track file + orig_filename: + type: string + description: Original filename of the track + cover_art_cid: + type: string + description: IPFS CID for cover art + cover_art_sizes: + type: string + description: Cover art sizes metadata + preview_cid: + type: string + description: IPFS CID for the track preview + preview_start_seconds: + type: number + format: float + description: Preview start time in seconds + minimum: 0 + duration: + type: number + format: float + description: Track duration in seconds + minimum: 0 + is_downloadable: + type: boolean + description: Whether the track is downloadable + is_unlisted: + type: boolean + description: Whether the track is unlisted + is_stream_gated: + type: boolean + nullable: true + description: Whether streaming is restricted behind an access gate + stream_conditions: + nullable: true + allOf: + - $ref: '#/components/schemas/access_gate' + download_conditions: + nullable: true + allOf: + - $ref: '#/components/schemas/access_gate' + field_visibility: + $ref: '#/components/schemas/field_visibility' + placement_hosts: + type: string + description: Placement hosts for the track + stem_of: + $ref: '#/components/schemas/stem_parent' + remix_of: + $ref: '#/components/schemas/remix_parent_write' + ddex_app: + type: string + nullable: true + description: DDEX application identifier + ddex_release_ids: + type: object + nullable: true + description: DDEX release identifiers + artists: type: array + nullable: true items: - $ref: "#/components/schemas/track_id" - month: + type: object + description: DDEX resource contributors / artists + resource_contributors: type: array + nullable: true items: - $ref: "#/components/schemas/track_id" - year: + type: object + description: DDEX resource contributors + indirect_resource_contributors: type: array + nullable: true items: - $ref: "#/components/schemas/track_id" - track_id: - required: - - id - type: object - properties: - id: + type: object + description: DDEX indirect resource contributors + rights_controller: + type: object + nullable: true + description: DDEX rights controller + copyright_line: + type: object + nullable: true + description: DDEX copyright line + producer_copyright_line: + type: object + nullable: true + description: DDEX producer copyright line + parental_warning_type: type: string - track_favorites_response: - type: object - properties: - data: + nullable: true + description: Parental warning type + cover_original_song_title: + type: string + nullable: true + description: Original song title for cover tracks + cover_original_artist: + type: string + nullable: true + description: Original artist for cover tracks + is_owned_by_user: + type: boolean + description: Whether the track is owned by the user + territory_codes: type: array + nullable: true items: - $ref: "#/components/schemas/user" - track_reposts_response: + type: string + description: Territory codes for distribution + no_ai_use: + type: boolean + description: Whether AI use is prohibited + collectibles_response: type: object properties: data: - type: array - items: - $ref: "#/components/schemas/user" - remixes_response: - required: - - count + $ref: '#/components/schemas/collectibles' + create_comment_request_body: type: object + required: + - entityType + - entityId + - body properties: - count: + entityType: + allOf: + - $ref: '#/components/schemas/comment_entity_type' + example: Track + entityId: type: integer - tracks: + description: ID of the entity being commented on + example: 12345 + body: + type: string + description: Comment text + maxLength: 500 + example: Great track! + commentId: + type: integer + description: Optional ID for the comment (will be generated if not provided) + example: 98765 + parentId: + type: integer + description: Parent comment ID if this is a reply + example: 54321 + trackTimestampS: + type: integer + description: Timestamp in the track where the comment was made (in seconds) + minimum: 0 + mentions: type: array + description: Array of user IDs mentioned in the comment (max 10) + maxItems: 10 items: - $ref: "#/components/schemas/Track" - remixing_response: + type: integer + example: 67890 + dashboard_wallet_users_response: type: object properties: data: type: array items: - $ref: "#/components/schemas/Track" - tracks_count_response: - type: object - properties: - data: - type: integer - track_comment_count_response: - type: object - properties: - data: - type: integer - track_comment_notification_response: - type: object - properties: - data: - $ref: "#/components/schemas/comment_notification_setting" - comment_notification_setting: - required: - - is_muted - type: object - properties: - is_muted: - type: boolean - stream_url_response: - required: - - data - type: object - properties: - data: - type: string - track_search: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/Track" - top_listener: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/top_listener" - stems_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/stem" - stem: - required: - - blocknumber - - category - - cid - - id - - orig_filename - - parent_id - - user_id + $ref: '#/components/schemas/dashboard_wallet_user' + access_gate: + oneOf: + - $ref: '#/components/schemas/tip_gate' + - $ref: '#/components/schemas/follow_gate' + - $ref: '#/components/schemas/purchase_gate' + - $ref: '#/components/schemas/nft_gate' + - $ref: '#/components/schemas/token_gate' + update_track_request_body: type: object + description: Request body for updating track information. All fields are optional. properties: - id: + title: type: string - parent_id: + description: Track title + genre: + $ref: '#/components/schemas/genre' + description: type: string - category: + nullable: true + description: Track description + maxLength: 1000 + mood: + nullable: true + allOf: + - $ref: '#/components/schemas/mood' + bpm: + type: number + nullable: true + description: Beats per minute (tempo) + musical_key: type: string - cid: + nullable: true + description: Musical key of the track + tags: type: string - user_id: + nullable: true + description: Comma-separated tags + license: type: string - blocknumber: - type: integer - orig_filename: + nullable: true + description: License type + isrc: type: string - stem_category: - type: string - enum: - - INSTRUMENTAL - - LEAD_VOCALS - - MELODIC_LEAD - - PAD - - SNARE - - KICK - - HIHAT - - PERCUSSION - - SAMPLE - - BACKING_VOX - - BASS - - OTHER - stem_parent: - required: - - category - - parent_track_id - type: object - properties: - category: - $ref: "#/components/schemas/stem_category" - parent_track_id: + nullable: true + description: International Standard Recording Code + iswc: type: string - example: "x5pJ3Az" - undisbursed_challenges: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/undisbursed_challenge" - undisbursed_challenge: - required: - - amount - - challenge_id - - completed_at - - completed_blocknumber - - created_at - - handle - - specifier - - user_id - - wallet - type: object - properties: - challenge_id: + nullable: true + description: International Standard Musical Work Code + release_date: type: string - user_id: + format: date + description: Release date + track_cid: type: string - specifier: + description: IPFS CID for the track audio file + orig_file_cid: type: string - amount: + description: IPFS CID for the original track file + orig_filename: type: string - completed_blocknumber: - type: integer - handle: + description: Original filename of the track + cover_art_cid: type: string - wallet: + description: IPFS CID for cover art + cover_art_sizes: type: string - created_at: + description: Cover art sizes metadata + preview_cid: type: string - completed_at: + description: IPFS CID for the track preview + preview_start_seconds: + type: number + format: float + description: Preview start time in seconds + minimum: 0 + duration: + type: number + format: float + description: Track duration in seconds + minimum: 0 + is_downloadable: + type: boolean + description: Whether the track is downloadable + is_unlisted: + type: boolean + description: Whether the track is unlisted + is_stream_gated: + type: boolean + description: Whether streaming is restricted behind an access gate + stream_conditions: + nullable: true + allOf: + - $ref: '#/components/schemas/access_gate' + download_conditions: + nullable: true + allOf: + - $ref: '#/components/schemas/access_gate' + field_visibility: + $ref: '#/components/schemas/field_visibility' + placement_hosts: type: string - cooldown_days: - type: integer - get_tips_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/tip" - tip: - required: - - amount - - created_at - type: object - properties: - amount: + description: Placement hosts for the track + stem_of: + $ref: '#/components/schemas/stem_parent' + remix_of: + $ref: '#/components/schemas/remix_parent_write' + ddex_app: type: string - sender: - $ref: "#/components/schemas/user" - receiver: - $ref: "#/components/schemas/user" - created_at: + nullable: true + description: DDEX application identifier + parental_warning_type: type: string - developer_app_response: - type: object - properties: - data: - $ref: "#/components/schemas/developer_app" - dashboard_wallet_users_response: + nullable: true + description: Parental warning type + authorized_apps: type: object properties: data: type: array items: - $ref: "#/components/schemas/dashboard_wallet_user" - dashboard_wallet_user: + $ref: '#/components/schemas/authorized_app' + reposts: required: - - user - - wallet + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version type: object properties: - wallet: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: type: string - user: - $ref: "#/components/schemas/user" - comment_response: - type: object - properties: - data: - type: array - items: - $ref: "#/components/schemas/comment" - comment_replies_response: - type: object - properties: + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' data: type: array items: - $ref: "#/components/schemas/reply_comment" - unclaimed_id_response: - type: object - properties: - data: - type: string - events_response: + $ref: '#/components/schemas/activity' + developer_apps_response: type: object properties: data: type: array items: - $ref: "#/components/schemas/event" - event: + $ref: '#/components/schemas/developer_app' + playlist: required: - - created_at - - event_data - - event_id - - event_type - - updated_at - - user_id + - access + - added_timestamps + - blocknumber + - created_at + - favorite_count + - followee_favorites + - followee_reposts + - has_current_user_reposted + - has_current_user_saved + - id + - is_album + - is_delete + - is_image_autogenerated + - is_private + - is_scheduled_release + - is_stream_gated + - permalink + - playlist_contents + - playlist_name + - repost_count + - total_play_count + - track_count + - updated_at + - user + - user_id type: object properties: - event_id: + artwork: + $ref: '#/components/schemas/playlist_artwork' + description: type: string - event_type: + permalink: type: string - example: remix_contest - enum: - - remix_contest - - live_event - - new_release - user_id: + id: type: string - entity_type: + is_album: + type: boolean + is_image_autogenerated: + type: boolean + playlist_name: type: string - example: track - enum: - - track - - collection - - user - entity_id: + playlist_contents: + type: array + items: + $ref: '#/components/schemas/playlist_added_timestamp' + repost_count: + type: integer + favorite_count: + type: integer + total_play_count: + type: integer + user: + $ref: '#/components/schemas/user' + ddex_app: type: string - end_date: + access: + $ref: '#/components/schemas/access' + upc: type: string - is_deleted: - type: boolean + track_count: + type: integer + blocknumber: + type: integer created_at: type: string - updated_at: - type: string - event_data: + followee_reposts: + type: array + items: + $ref: '#/components/schemas/repost' + followee_favorites: + type: array + items: + $ref: '#/components/schemas/favorite' + has_current_user_reposted: + type: boolean + has_current_user_saved: + type: boolean + is_delete: + type: boolean + is_private: + type: boolean + updated_at: + type: string + added_timestamps: + type: array + description: DEPRECATED. Use playlist_contents instead. + items: + $ref: '#/components/schemas/playlist_added_timestamp' + user_id: + type: string + tracks: + type: array + items: + $ref: '#/components/schemas/track' + cover_art: + type: string + cover_art_sizes: + type: string + cover_art_cids: + $ref: '#/components/schemas/playlist_artwork' + is_stream_gated: + type: boolean + stream_conditions: + type: object + description: How to unlock stream access to the track + allOf: + - $ref: '#/components/schemas/access_gate' + is_scheduled_release: + type: boolean + release_date: + type: string + ddex_release_ids: type: object properties: {} - best_selling_response: + artists: + type: array + items: + type: object + properties: {} + copyright_line: + type: object + properties: {} + producer_copyright_line: + type: object + properties: {} + parental_warning_type: + type: string + nullable: true + track_comments_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version type: object properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' data: type: array items: - $ref: "#/components/schemas/best_selling_item" - best_selling_item: + $ref: '#/components/schemas/comment' + related: + $ref: '#/components/schemas/related' + search_response: required: - - content_id - - owner_id - - title + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version type: object properties: - content_id: - type: string - content_type: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: type: string - example: track - enum: - - track - - album - title: + timestamp: type: string - owner_id: + version: + $ref: '#/components/schemas/version_metadata' + data: + $ref: '#/components/schemas/search_model' + stem_parent: + required: + - category + - parent_track_id + type: object + properties: + category: type: string + parent_track_id: + type: integer coin: type: object + description: A coin object required: - - name - - mint - - decimals - - owner_id - - has_discord - - created_at - - marketCap - - fdv - - liquidity - - lastTradeUnixTime - - lastTradeHumanTime - - price - - history24hPrice - - priceChange24hPercent - - uniqueWallet24h - - uniqueWalletHistory24h - - uniqueWallet24hChangePercent - - totalSupply - - circulatingSupply - - holder - - trade24h - - tradeHistory24h - - trade24hChangePercent - - sell24h - - sellHistory24h - - sell24hChangePercent - - buy24h - - buyHistory24h - - buy24hChangePercent - - v24h - - v24hUSD - - vHistory24h - - totalVolume - - totalVolumeUSD - - volumeBuy - - volumeBuyUSD - - volumeSell - - volumeSellUSD - - totalTrade - - buy - - sell - - dynamicBondingCurve + - mint + - ticker + - decimals + - name + - created_at properties: - name: + mint: type: string - description: The coin name - example: "Bonk Inu" + description: The mint address of the coin + example: bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj ticker: type: string - description: The coin symbol - example: "$BONK" - mint: - type: string - description: The coin mint address - example: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" + description: The coin symbol/ticker + example: BEAR decimals: type: integer description: The number of decimals for the coin - example: 5 - owner_id: - type: string - description: The ID of the user associated with the coin - example: "7eP5n" - escrow_recipient: + example: 9 + name: type: string - description: The escrow recipient address for custom-created coins without DBCs - example: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" + description: The coin name + example: BEAR logo_uri: type: string - description: URL to the coin's logo image - example: "https://arweave.net/hQiPZOsRZXGXBJd_82PhVdlM_hACsT_q6wqwf5cSY7I" + description: The URI for the coin's logo image + example: https://example.com/logo.png banner_image_url: type: string - description: URL to the coin's banner image - example: "https://example.com/banner.png" + description: The URI for the coin's banner image + example: https://example.com/banner.png description: type: string - description: A longform description about the coin - example: "The Official Bonk Inu token\nLorem ipsum dolor sit amet, consectetur adipiscing elit." + description: The description of the coin + example: A majestic bear token for wildlife conservation + x_handle: + type: string + description: X (Twitter) handle for the coin + example: bear_token + instagram_handle: + type: string + description: Instagram handle for the coin + example: bear_token + tiktok_handle: + type: string + description: TikTok handle for the coin + example: bear_token website: type: string - description: The official website for the coin - example: "https://www.bonkcoin.com/" + description: Website URL for the coin + example: https://bear-token.com link_1: type: string description: Generic link URL for the coin - example: "https://x.com/bear_token" + example: https://x.com/bear_token link_2: type: string description: Generic link URL for the coin - example: "https://instagram.com/bear_token" + example: https://instagram.com/bear_token link_3: type: string description: Generic link URL for the coin - example: "https://tiktok.com/@bear_token" + example: https://tiktok.com/@bear_token link_4: type: string description: Generic link URL for the coin - example: "https://bear-token.com" + example: https://bear-token.com has_discord: type: boolean description: Whether the coin has a Discord server - example: true + example: false created_at: type: string - description: The date and time when the coin was added to Audius. - example: "2023-10-01T12:00:00Z" - address: + format: date-time + description: The date and time when the coin was created + example: '2024-01-15T10:30:00Z' + updated_at: type: string - description: The SPL token mint address - example: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" - symbol: + format: date-time + description: The date and time when the coin was last updated + example: '2024-01-15T10:30:00Z' + owner_id: type: string - description: The token symbol - example: "BONK" + description: The user ID of the coin owner + example: 7eP5n + escrow_recipient: + type: string + description: The escrow recipient address for custom-created coins without + DBCs + example: DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 + dynamicBondingCurve: + $ref: '#/components/schemas/dynamic_bonding_curve_insights' + artist_locker: + $ref: '#/components/schemas/artist_locker' + artist_fees: + $ref: '#/components/schemas/artist_coin_fees' + reward_pool: + $ref: '#/components/schemas/reward_pool' + price: + type: number + description: Current price in USD marketCap: type: number description: Market capitalization in USD - example: 2625779824.994664 - fdv: + totalVolumeUSD: type: number - description: Fully diluted valuation in USD - example: 2625779824.994664 - extensions: - type: object - description: Token metadata and links - properties: - coingeckoId: - type: string - description: CoinGecko ID - example: "bonk" - description: - type: string - description: Token description - example: "The Official Bonk Inu token" - twitter: - type: string - description: Twitter URL - example: "https://twitter.com/bonk_inu" - website: - type: string - description: Website URL - example: "https://www.bonkcoin.com/" - discord: - type: string - description: Discord invite URL - example: "https://discord.gg/ubqvDDFUhf" + description: Total volume traded in USD (all time) + holder: + type: integer + description: Number of holders + totalSupply: + type: number + description: Total supply of the token liquidity: type: number description: Current liquidity in USD - example: 18977326.389274083 - lastTradeUnixTime: - type: integer - description: Unix timestamp of the last trade - example: 1752620592 - lastTradeHumanTime: + circulatingSupply: + type: number + description: Circulating supply of the token + priceChange24hPercent: + type: number + description: 24h price change in percent + displayPrice: + type: number + description: Display price (client-computed, e.g. for display formatting) + displayMarketCap: + type: number + description: Display market cap (client-computed) + artist_coin_fees: + type: object + description: Artist coin fee info (unclaimed/total) + properties: + unclaimed_fees: + type: number + description: Unclaimed fees + total_fees: + type: number + description: Total fees + reward_pool: + type: object + description: Reward pool for the coin + properties: + address: type: string - description: ISO8601 time of the last trade - example: "2025-07-15T23:03:12" + description: Reward pool contract address + balance: + type: number + description: Reward pool balance + dynamic_bonding_curve_insights: + type: object + description: Information about the dynamic bonding curve if one exists for the coin + properties: + address: + type: string + description: Address of the bonding curve pool price: + type: number + description: Current price in the pool's quote token (e.g., AUDIO) + priceUSD: type: number description: Current price in USD - example: 0.000029571022098881748 - history24hPrice: + curveProgress: type: number - description: Price 24 hours ago in USD - example: 0.000027195701160436288 - priceChange24hPercent: + description: Progress along the bonding curve (0.0 - 1.0) + isMigrated: + type: boolean + description: Whether the bonding curve has been migrated + creatorQuoteFee: type: number - description: 24h price change in percent - example: 8.73417796596848 - uniqueWallet24h: - type: integer - description: Unique wallets traded in last 24h - example: 20242 - uniqueWalletHistory24h: - type: integer - description: Unique wallets traded in previous 24h - example: 21155 - uniqueWallet24hChangePercent: + description: Creator quote fee for the bonding curve + totalTradingQuoteFee: type: number - description: 24h change in unique wallets (percent) - example: -4.315764594658473 - totalSupply: + description: Total trading quote fee accumulated + creatorWalletAddress: + type: string + description: Address of the pool creator's wallet + artist_locker: + type: object + description: Artist locker balance and claimable info for the coin + properties: + address: + type: string + description: Locker contract/pool address + locked: type: number - description: Total supply of the token - example: 88795707372386.03 - circulatingSupply: + description: Locked amount + unlocked: type: number - description: Circulating supply of the token - example: 88795707372386.03 - holder: - type: integer - description: Number of holders - example: 957291 - trade24h: - type: integer - description: Number of trades in last 24h - example: 449987 - tradeHistory24h: - type: integer - description: Number of trades in previous 24h - example: 390400 - trade24hChangePercent: + description: Unlocked amount + claimable: type: number - description: 24h change in trade count (percent) - example: 15.263063524590164 - sell24h: + description: Claimable amount + user_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: type: integer - description: Number of sell trades in last 24h - example: 223845 - sellHistory24h: + latest_indexed_block: type: integer - description: Number of sell trades in previous 24h - example: 191979 - sell24hChangePercent: - type: number - description: 24h change in sell trades (percent) - example: 16.598690481771445 - buy24h: + latest_chain_slot_plays: type: integer - description: Number of buy trades in last 24h - example: 226142 - buyHistory24h: + latest_indexed_slot_plays: type: integer - description: Number of buy trades in previous 24h - example: 198421 - buy24hChangePercent: - type: number - description: 24h change in buy trades (percent) - example: 13.970799461750522 - v24h: - type: number - description: 24h trading volume (token units) - example: 2456470915352.043 - v24hUSD: - type: number - description: 24h trading volume in USD - example: 69961943.60091284 - vHistory24h: - type: number - description: Previous 24h trading volume (token units) - example: 1849367819551.6223 - vHistory24hUSD: - type: number - description: Previous 24h trading volume in USD - example: 49529721.91224754 - v24hChangePercent: - type: number - description: 24h change in volume (percent) - example: 32.82760137718911 - vBuy24h: - type: number - description: 24h buy volume (token units) - example: 1267704208631.2197 - vBuy24hUSD: - type: number - description: 24h buy volume in USD - example: 35985775.23314727 - vBuyHistory24h: - type: number - description: Previous 24h buy volume (token units) - example: 926415751610.5529 - vBuyHistory24hUSD: - type: number - description: Previous 24h buy volume in USD - example: 24916558.31987226 - vBuy24hChangePercent: - type: number - description: 24h change in buy volume (percent) - example: 36.83966474310746 - vSell24h: - type: number - description: 24h sell volume (token units) - example: 1188766706720.8232 - vSell24hUSD: - type: number - description: 24h sell volume in USD - example: 33976168.367765576 - vSellHistory24h: - type: number - description: Previous 24h sell volume (token units) - example: 922952067941.0695 - vSellHistory24hUSD: - type: number - description: Previous 24h sell volume in USD - example: 24613163.592375275 - vSell24hChangePercent: - type: number - description: 24h change in sell volume (percent) - example: 28.800481413161105 - numberMarkets: + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + tip_gate: + required: + - tip_user_id + type: object + properties: + tip_user_id: type: integer - description: Number of markets the token is traded on - example: 317 - totalVolume: - type: number - description: Total volume of coin traded (all time) - example: 158766463.26959822 - totalVolumeUSD: - type: number - description: Total volume of coin traded in USD (all time) - example: 20188521260.405678 - volumeBuy: - type: number - description: Total volume bought (all time) - example: 78227859.16098201 - volumeBuyUSD: - type: number - description: Total volume bought in USD (all time) - example: 20188521260.405678 - volumeSell: - type: number - description: Total volume sold (all time) - example: 80538604.1086162 - volumeSellUSD: - type: number - description: Total volume sold in USD (all time) - example: 20188521260.405678 - totalTrade: + description: Must tip the given user ID to unlock + track_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: type: integer - description: Total number of trades (all time) - example: 258522892 - buy: + latest_indexed_block: type: integer - description: Total number of buys (all time) - example: 87829497 - sell: + latest_chain_slot_plays: type: integer - description: Total number of sells (all time) - example: 170693395 - dynamicBondingCurve: - type: object - description: Information about the dynamic bonding curve if one exists for the Coin - required: - - address - - price - - priceUSD - - curveProgress - - creatorQuoteFee - - totalTradingQuoteFee - - creatorWalletAddress - properties: - address: - type: string - description: Address of the bonding curve pool - example: "2AAsAwNPTNBk5N466xyPiwqdgbc5WLbDTdnn9gVuDKaN" - price: - type: number - description: Current price in the pool's quote token (e.g., AUDIO) - example: 0.0028402095736478586927 - priceUSD: - type: number - description: Current price in USD - example: 0.000029571022098881748 - curveProgress: - type: number - description: Progress along the bonding curve (0.0 - 1.0) - example: 0.75 - isMigrated: - type: boolean - description: Whether the bonding curve has been migrated - example: false - creatorQuoteFee: - type: number - description: Creator quote fee for the bonding curve - example: 0.05 - totalTradingQuoteFee: - type: number - description: Total trading quote fee accumulated - example: 0.001 - creatorWalletAddress: - type: string - description: Address of the pool creator's wallet - example: "2AAsAwNPTNBk5N466xyPiwqdgbc5WLbDTdnn9gVuDKaN" - artist_fees: - type: object - description: Information about the fees earned by the artist on the coin's trading. - properties: - unclaimed_fees: - type: number - description: Total unclaimed fees from all sources, in $AUDIO. - example: 2000000000 - total_fees: - type: number - description: Total fees earned from all sources, in $AUDIO. - example: 4000000000 - artist_locker: - type: object - description: Information about the artist locker associated with the coin. - properties: - address: - type: string - description: The address of the artist locker. - example: "9bC8rd4qy4EQTHjvCoKFttk5W5km4tUFcVfASCDGro84" - locked: - type: number - description: The amount currently locked in the artist locker. - example: 499178082191780800 - unlocked: - type: number - description: The amount currently unlocked in the artist locker. - example: 821917808219178 - claimable: - type: number - description: The amount claimable from the artist locker. Eg. the amount unlocked that hasn't already been claimed. - example: 821917808219178 - reward_pool: - type: object - description: Information about the reward pool associated with the coin. - properties: - address: - type: string - description: The address of the reward pool. - example: "6qUSoiMbTEZ4hpN3kuk5bjCRgcTJgUfXftVfTH1CSvZE" - balance: - type: number - description: The current balance of the reward pool. - example: 1000000000 - coin_response: + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + $ref: '#/components/schemas/track' + create_user_response: type: object properties: - data: - $ref: "#/components/schemas/coin" - coins_response: + success: + type: boolean + description: Whether the user was created successfully + transaction_hash: + type: string + description: The blockchain transaction hash + user_id: + type: string + description: The ID of the created user + tracks_count_response: type: object required: - - data + - data + properties: + data: + type: integer + description: The total number of tracks matching the filter criteria + example: 15 + events_response: + type: object properties: data: type: array items: - $ref: "#/components/schemas/coin" - create_coin_request_body: - type: object + $ref: '#/components/schemas/event' + version_metadata: required: - - mint - - ticker - - decimals - - name + - service + - version + type: object properties: - mint: + service: type: string - description: The mint address of the coin - example: "bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj" - ticker: + version: type: string - description: The coin symbol/ticker - example: "BEAR" - decimals: + following_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: type: integer - description: The number of decimals for the coin (0-18) - minimum: 0 - maximum: 18 - example: 9 - name: - type: string - description: The coin name - example: "BEAR" - logo_uri: - type: string - description: The URI for the coin's logo image - example: "https://example.com/logo.png" - banner_image_url: - type: string - description: The URI for the coin's banner image - example: "https://example.com/banner.png" - format: uri - description: - type: string - description: The description of the coin - example: "A majestic bear token for wildlife conservation" - link_1: - type: string - description: Generic link URL for the coin - example: "https://x.com/bear_token" - format: uri - link_2: - type: string - description: Generic link URL for the coin - example: "https://instagram.com/bear_token" - format: uri - link_3: + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: type: string - description: Generic link URL for the coin - example: "https://tiktok.com/@bear_token" - format: uri - link_4: + timestamp: type: string - description: Generic link URL for the coin - example: "https://bear-token.com" - format: uri - create_coin_response: + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + playlist_search_result: type: object properties: data: - type: object - required: - - mint - - ticker - - user_id - - decimals - - name - - created_at - properties: - mint: - type: string - description: The mint address of the coin - example: "bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj" - ticker: - type: string - description: The coin symbol/ticker - example: "BEAR" - user_id: - type: integer - description: The user ID who created the coin - example: 1 - decimals: - type: integer - description: The number of decimals for the coin - example: 9 - name: - type: string - description: The coin name - example: "BEAR" - logo_uri: - type: string - description: The URI for the coin's logo image - example: "https://example.com/logo.png" - banner_image_url: - type: string - description: The URI for the coin's banner image - example: "https://example.com/banner.png" - description: - type: string - description: The description of the coin - example: "A majestic bear token for wildlife conservation" - link_1: - type: string - description: Generic link URL for the coin - example: "https://x.com/bear_token" - link_2: - type: string - description: Generic link URL for the coin - example: "https://instagram.com/bear_token" - link_3: - type: string - description: Generic link URL for the coin - example: "https://tiktok.com/@bear_token" - link_4: - type: string - description: Generic link URL for the coin - example: "https://bear-token.com" - created_at: - type: string - format: date-time - description: The date and time when the coin was created - example: "2024-01-15T10:30:00Z" - update_coin_request_body: + type: array + items: + $ref: '#/components/schemas/playlist' + tags_response: type: object - description: Request body for updating coin information properties: - description: + data: + type: array + items: + type: string + track_activity: + allOf: + - $ref: '#/components/schemas/activity' + - required: + - item + - item_type + type: object + properties: + item_type: + type: string + example: track + enum: + - track + item: + $ref: '#/components/schemas/track' + top_users_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: type: string - description: The description of the coin (max 2500 characters) - example: "Updated description for the bear token" - maxLength: 2500 - banner_image_url: + timestamp: type: string - description: URL for the coin's banner image - example: "https://example.com/banner.png" - format: uri - link_1: + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + trending_ids_response: + type: object + properties: + data: + $ref: '#/components/schemas/trending_times_ids' + purchases_count_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: type: string - description: Generic link URL for the coin - example: "https://x.com/bear_token" - format: uri - link_2: + timestamp: type: string - description: Generic link URL for the coin - example: "https://instagram.com/bear_token" - format: uri - link_3: + version: + $ref: '#/components/schemas/version_metadata' + data: + type: integer + email_access_response: + type: object + properties: + data: + $ref: '#/components/schemas/email_access' + add_manager_request_body: + type: object + required: + - manager_user_id + properties: + manager_user_id: type: string - description: Generic link URL for the coin - example: "https://tiktok.com/@bear_token" - format: uri - link_4: + description: The user ID of the user to add as manager + attestation_reponse: + type: object + properties: + data: + $ref: '#/components/schemas/attestation' + user_coin_response: + type: object + properties: + data: + $ref: '#/components/schemas/user_coin_with_accounts' + create_comment_response: + type: object + properties: + success: + type: boolean + description: Whether the comment was created successfully + transaction_hash: type: string - description: Generic link URL for the coin - example: "https://bear-token.com" - format: uri - update_coin_response: + description: The blockchain transaction hash + comment_id: + type: string + description: The ID of the created comment + repost_request_body: + type: object + description: Optional metadata for repost operations + properties: + is_repost_of_repost: + type: boolean + description: Set to true when reposting an item that was reposted (used + for notifications) + coins_volume_leaders_response: + type: object + required: + - data + properties: + data: + type: array + items: + type: object + required: + - address + - volume + properties: + address: + type: string + volume: + type: number + user: + $ref: '#/components/schemas/user' + dashboard_wallet_user: + required: + - user + - wallet + type: object + properties: + wallet: + type: string + user: + $ref: '#/components/schemas/user' + write_response: type: object properties: success: type: boolean - description: Indicates if the update was successful - example: true - coin_insights: + description: Whether the operation was successful + transaction_hash: + type: string + description: The blockchain transaction hash + playlist_artwork: type: object - description: | - Additional token information from Birdeye's defi token overview API. - Includes price, volume, supply, market cap, and other on-chain and market data. - required: - - mint - - marketCap - - fdv - - liquidity - - lastTradeUnixTime - - lastTradeHumanTime - - price - - history24hPrice - - priceChange24hPercent - - uniqueWallet24h - - uniqueWalletHistory24h - - uniqueWallet24hChangePercent - - totalSupply - - circulatingSupply - - holder - - trade24h - - tradeHistory24h - - trade24hChangePercent - - sell24h - - sellHistory24h - - sell24hChangePercent - - buy24h - - buyHistory24h - - buy24hChangePercent - - v24h - - v24hUSD - - vHistory24h - - totalVolume - - totalVolumeUSD - - volumeBuy - - volumeBuyUSD - - volumeSell - - volumeSellUSD - - totalTrade - - buy - - sell - - dynamicBondingCurve properties: - address: + 150x150: type: string - description: The SPL token mint address - example: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" - decimals: - type: integer - description: Number of decimals for the token - example: 5 - symbol: + 480x480: type: string - description: The token symbol - example: "BONK" - name: + 1000x1000: type: string - description: The token name - example: "Bonk" - marketCap: - type: number - description: Market capitalization in USD - example: 2625779824.994664 - fdv: - type: number - description: Fully diluted valuation in USD - example: 2625779824.994664 - extensions: - type: object - description: Token metadata and links - properties: - coingeckoId: - type: string - description: CoinGecko ID - example: "bonk" - description: - type: string - description: Token description - example: "The Official Bonk Inu token" - twitter: - type: string - description: Twitter URL - example: "https://twitter.com/bonk_inu" - website: - type: string - description: Website URL - example: "https://www.bonkcoin.com/" - discord: - type: string - description: Discord invite URL - example: "https://discord.gg/ubqvDDFUhf" - liquidity: - type: number - description: Current liquidity in USD - example: 18977326.389274083 - lastTradeUnixTime: - type: integer - description: Unix timestamp of the last trade - example: 1752620592 - lastTradeHumanTime: + mirrors: + type: array + items: + type: string + data_and_type: + type: object + properties: + type: type: string - description: ISO8601 time of the last trade - example: "2025-07-15T23:03:12" - price: - type: number - description: Current price in USD - example: 0.000029571022098881748 - history24hPrice: - type: number - description: Price 24 hours ago in USD - example: 0.000027195701160436288 - priceChange24hPercent: - type: number - description: 24h price change in percent - example: 8.73417796596848 - uniqueWallet24h: + data: + $ref: '#/components/schemas/cid_data' + search_autocomplete_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: type: integer - description: Unique wallets traded in last 24h - example: 20242 - uniqueWalletHistory24h: + latest_indexed_block: type: integer - description: Unique wallets traded in previous 24h - example: 21155 - uniqueWallet24hChangePercent: - type: number - description: 24h change in unique wallets (percent) - example: -4.315764594658473 - totalSupply: - type: number - description: Total supply of the token - example: 88795707372386.03 - circulatingSupply: - type: number - description: Circulating supply of the token - example: 88795707372386.03 - holder: + latest_chain_slot_plays: type: integer - description: Number of holders - example: 957291 - trade24h: + latest_indexed_slot_plays: type: integer - description: Number of trades in last 24h - example: 449987 - tradeHistory24h: + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + $ref: '#/components/schemas/search_model' + track_inspect: + type: object + properties: + data: + $ref: '#/components/schemas/blob_info' + repost: + required: + - repost_item_id + - repost_type + - user_id + type: object + properties: + repost_item_id: + type: string + repost_type: + type: string + user_id: + type: string + comment_response: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/comment' + user_ids_addresses_response: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/user_id_address' + access_info_response: + type: object + properties: + data: + $ref: '#/components/schemas/track_access_info' + user_account_response: + type: object + properties: + data: + $ref: '#/components/schemas/account' + balance_history_response: + type: object + required: + - data + properties: + data: + type: array + items: + $ref: '#/components/schemas/balance_history_data_point' + stems_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/stem' + history_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/track_activity' + authorized_app: + required: + - address + - grant_created_at + - grant_updated_at + - grantor_user_id + - name + type: object + properties: + address: + type: string + name: + type: string + description: + type: string + image_url: + type: string + grantor_user_id: + type: string + grant_created_at: + type: string + grant_updated_at: + type: string + purchase_gate: + required: + - usdc_purchase + type: object + properties: + usdc_purchase: + type: object + description: Must pay the total price and split to the given addresses to + unlock + allOf: + - $ref: '#/components/schemas/usdc_gate' + purchase: + required: + - access + - amount + - buyer_user_id + - content_id + - content_type + - created_at + - extra_amount + - seller_user_id + - signature + - slot + - splits + - updated_at + type: object + properties: + slot: + type: integer + signature: + type: string + seller_user_id: + type: string + buyer_user_id: + type: string + amount: + type: string + extra_amount: + type: string + content_type: + type: string + content_id: + type: string + created_at: + type: string + updated_at: + type: string + access: + type: string + splits: + type: array + items: + $ref: '#/components/schemas/purchase_split' + discriminator: + propertyName: content_type + playlists_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/playlist_without_tracks' + prizes_response: + type: object + required: + - data + properties: + data: + type: array + items: + $ref: '#/components/schemas/prize_public' + description: List of active prizes available for claiming + create_coin_response: + type: object + properties: + data: + type: object + required: + - mint + - ticker + - user_id + - decimals + - name + - created_at + properties: + mint: + type: string + description: The mint address of the coin + example: bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj + ticker: + type: string + description: The coin symbol/ticker + example: BEAR + user_id: + type: integer + description: The user ID who created the coin + example: 1 + decimals: + type: integer + description: The number of decimals for the coin + example: 9 + name: + type: string + description: The coin name + example: BEAR + logo_uri: + type: string + description: The URI for the coin's logo image + example: https://example.com/logo.png + banner_image_url: + type: string + description: The URI for the coin's banner image + example: https://example.com/banner.png + description: + type: string + description: The description of the coin + example: A majestic bear token for wildlife conservation + link_1: + type: string + description: Generic link URL for the coin + example: https://x.com/bear_token + link_2: + type: string + description: Generic link URL for the coin + example: https://instagram.com/bear_token + link_3: + type: string + description: Generic link URL for the coin + example: https://tiktok.com/@bear_token + link_4: + type: string + description: Generic link URL for the coin + example: https://bear-token.com + created_at: + type: string + format: date-time + description: The date and time when the coin was created + example: '2024-01-15T10:30:00Z' + unclaimed_id_response: + type: object + properties: + data: + type: string + tracks_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/track' + managed_users_response: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/managed_user' + reactions: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/reaction' + user_search: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/user' + remixers_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + purchasers_count_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: integer + create_developer_app_response: + type: object + properties: + api_key: + type: string + description: The API key (address) for the developer app + api_secret: + type: string + description: The private key for the developer app (for signing) + bearer_token: + type: string + description: The bearer token for API authentication (use in Authorization + header) + transaction_hash: + type: string + description: Transaction hash of the creation + playlist_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/playlist' + coin_members_response: + type: object + required: + - data + properties: + data: + type: array + items: + $ref: '#/components/schemas/coin_member' + access: + required: + - download + - stream + type: object + properties: + stream: + type: boolean + download: + type: boolean + search_model: + required: + - albums + - playlists + - tracks + - users + type: object + properties: + users: + type: array + items: + $ref: '#/components/schemas/user' + followed_users: + type: array + items: + $ref: '#/components/schemas/user' + tracks: + type: array + items: + $ref: '#/components/schemas/search_track' + saved_tracks: + type: array + items: + $ref: '#/components/schemas/search_track' + playlists: + type: array + items: + $ref: '#/components/schemas/search_playlist' + saved_playlists: + type: array + items: + $ref: '#/components/schemas/search_playlist' + albums: + type: array + items: + $ref: '#/components/schemas/search_playlist' + saved_albums: + type: array + items: + $ref: '#/components/schemas/search_playlist' + track_inspect_list: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/blob_info' + developer_app: + required: + - address + - name + - user_id + type: object + properties: + address: + type: string + user_id: + type: string + name: + type: string + description: + type: string + image_url: + type: string + attestation: + required: + - attestation + - owner_wallet + type: object + properties: + owner_wallet: + type: string + attestation: + type: string + favorite_request_body: + type: object + description: Optional metadata for favorite/save operations + properties: + is_save_of_repost: + type: boolean + description: Set to true when favoriting a reposted item (used for notifications) + track_download_request_body: + type: object + properties: + city: + type: string + description: City where the download occurred + region: + type: string + description: Region where the download occurred + country: + type: string + description: Country where the download occurred + remix_parent_write: + type: object + required: + - tracks + properties: + tracks: + type: array + items: + $ref: '#/components/schemas/track_element_write' + user: + required: + - album_count + - allow_ai_attribution + - artist_coin_badge + - associated_sol_wallets_balance + - associated_wallets_balance + - balance + - blocknumber + - created_at + - current_user_followee_follow_count + - does_current_user_follow + - does_current_user_subscribe + - does_follow_current_user + - erc_wallet + - followee_count + - follower_count + - handle + - handle_lc + - has_collectibles + - id + - is_available + - is_deactivated + - is_storage_v2 + - is_verified + - name + - playlist_count + - repost_count + - spl_wallet + - spl_usdc_wallet + - supporter_count + - supporting_count + - total_audio_balance + - total_balance + - track_count + - updated_at + - verified_with_instagram + - verified_with_tiktok + - verified_with_twitter + - wallet + - waudio_balance + type: object + properties: + album_count: + type: integer + artist_pick_track_id: + type: string + artist_coin_badge: + type: object + properties: + mint: + type: string + logo_uri: + type: string + banner_image_url: + type: string + ticker: + type: string + description: The coin symbol/ticker + coin_flair_mint: + type: string + bio: + type: string + cover_photo: + $ref: '#/components/schemas/cover_photo' + followee_count: + type: integer + follower_count: + type: integer + handle: + type: string + id: + type: string + is_verified: + type: boolean + twitter_handle: + type: string + instagram_handle: + type: string + tiktok_handle: + type: string + verified_with_twitter: + type: boolean + verified_with_instagram: + type: boolean + verified_with_tiktok: + type: boolean + website: + type: string + donation: + type: string + location: + type: string + name: + type: string + playlist_count: + type: integer + profile_picture: + $ref: '#/components/schemas/profile_picture' + repost_count: + type: integer + track_count: + type: integer + is_deactivated: + type: boolean + is_available: + type: boolean + erc_wallet: + type: string + spl_wallet: + type: string + spl_usdc_wallet: + type: string + spl_usdc_payout_wallet: + type: string + supporter_count: + type: integer + supporting_count: + type: integer + total_audio_balance: + type: integer + wallet: + type: string + description: The user's Ethereum wallet address for their account + balance: + type: string + associated_wallets_balance: + type: string + total_balance: + type: string + waudio_balance: + type: string + associated_sol_wallets_balance: + type: string + blocknumber: + type: integer + created_at: + type: string + is_storage_v2: + type: boolean + creator_node_endpoint: + type: string + current_user_followee_follow_count: + type: integer + does_current_user_follow: + type: boolean + does_current_user_subscribe: + type: boolean + does_follow_current_user: + type: boolean + handle_lc: + type: string + updated_at: + type: string + cover_photo_sizes: + type: string + cover_photo_cids: + $ref: '#/components/schemas/cover_photo' + cover_photo_legacy: + type: string + profile_picture_sizes: + type: string + profile_picture_cids: + $ref: '#/components/schemas/profile_picture' + profile_picture_legacy: + type: string + has_collectibles: + type: boolean + playlist_library: + $ref: '#/components/schemas/playlist_library' + allow_ai_attribution: + type: boolean + profile_type: + type: string + playlist_updates_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + $ref: '#/components/schemas/playlist_updates' + update_user_request_body: + type: object + description: Request body for updating user profile. All fields are optional. + properties: + handle: + type: string + description: User handle. Can only be set if the user does not already have + a handle. + name: + type: string + description: Display name + bio: + type: string + description: User bio + maxLength: 256 + location: + type: string + description: User location + website: + type: string + description: Website URL + format: uri + donation: + type: string + description: Donation link + twitter_handle: + type: string + description: Twitter handle (without @) + instagram_handle: + type: string + description: Instagram handle (without @) + tiktok_handle: + type: string + description: TikTok handle (without @) + profile_picture: + type: string + description: Profile picture CID or URL + profile_picture_sizes: + type: string + description: Profile picture sizes metadata + cover_photo: + type: string + description: Cover photo CID or URL + cover_photo_sizes: + type: string + description: Cover photo sizes metadata + profile_type: + type: string + nullable: true + enum: + - label + description: Type of profile (e.g., 'label' for record labels) + is_deactivated: + type: boolean + description: Whether the user is deactivated + artist_pick_track_id: + type: string + description: Track hash ID to feature as artist pick + example: x5pJ3Az + allow_ai_attribution: + type: boolean + description: Whether to allow AI attribution + spl_usdc_payout_wallet: + type: string + description: Solana USDC payout wallet address + coin_flair_mint: + type: string + description: Coin flair mint address + playlist_library: + $ref: '#/components/schemas/user_playlist_library' + events: + type: object + description: User events for tracking referrals and mobile users + properties: + referrer: + type: string + description: Hash ID of the user who referred this user + example: k9Xm5Pz + is_mobile_user: + type: boolean + description: Whether the user is on mobile + update_comment_request_body: + type: object + required: + - entityType + - entityId + - body + properties: + entityType: + allOf: + - $ref: '#/components/schemas/comment_entity_type' + example: Track + entityId: + type: integer + description: ID of the entity being commented on + example: 12345 + body: + type: string + description: The updated comment text + maxLength: 500 + mentions: + type: array + description: Array of user IDs mentioned in the comment (max 10) + maxItems: 10 + items: + type: integer + example: 67890 + related: + type: object + properties: + users: + type: array + items: + $ref: '#/components/schemas/user' + tracks: + type: array + items: + $ref: '#/components/schemas/track' + playlists: + type: array + items: + $ref: '#/components/schemas/playlist' + coin_insights_response: + type: object + properties: + data: + $ref: '#/components/schemas/coin_insights' + collection_library_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/collection_activity_without_tracks' + track_favorites_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + ddex_resource_contributor: + type: object + required: + - name + - roles + properties: + name: + type: string + minLength: 1 + description: Contributor name + roles: + type: array + minItems: 1 + items: + type: string + minLength: 1 + description: Contributor roles + sequence_number: + type: integer + minimum: 0 + description: Sequence number for ordering + get_supporter: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + $ref: '#/components/schemas/supporter' + playlist_added_timestamp: + required: + - metadata_timestamp + - timestamp + - track_id + type: object + properties: + metadata_timestamp: + type: integer + timestamp: + type: integer + track_id: + type: string + balance_history_data_point: + type: object + required: + - timestamp + - balance_usd + properties: + timestamp: + type: integer + format: int64 + description: Unix timestamp in seconds + example: 1704067200 + balance_usd: + type: number + format: double + description: Total portfolio balance in USD at this timestamp + example: 1234.56 + remixed_track_aggregate: + required: + - remix_count + - title + - track_id + type: object + properties: + track_id: + type: string + title: + type: string + remix_count: + type: integer + update_coin_request: + type: object + description: Request body for updating coin information + properties: + description: + type: string + description: The description of the coin (max 2500 characters) + example: Updated description for the bear token + maxLength: 2500 + banner_image_url: + type: string + description: URL for the coin's banner image + example: https://example.com/banner.png + format: uri + link_1: + type: string + description: Generic link URL for the coin + example: https://x.com/bear_token + format: uri + link_2: + type: string + description: Generic link URL for the coin + example: https://instagram.com/bear_token + format: uri + link_3: + type: string + description: Generic link URL for the coin + example: https://tiktok.com/@bear_token + format: uri + link_4: + type: string + description: Generic link URL for the coin + example: https://bear-token.com + format: uri + create_reward_code_response: + type: object + required: + - code + - mint + - reward_address + - amount + properties: + code: + type: string + description: The generated 6-character alphanumeric reward code + example: aB3d5F + mint: + type: string + description: The coin mint address + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + reward_address: + type: string + description: The reward address (authorized public key) + example: 9XeZbswbSSUU4AHVArQbTQjAEjAPhVweGU5cogBVkvh4 + amount: + type: integer + description: The reward amount + example: 100 + sales_aggregate_response: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/sales_aggregate' + related_artist_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + field_visibility: + required: + - genre + - mood + - play_count + - remixes + - share + - tags + type: object + properties: + mood: + type: boolean + tags: + type: boolean + genre: + type: boolean + share: + type: boolean + play_count: + type: boolean + remixes: + type: boolean + user_coin_with_accounts: + type: object + required: + - mint + - ticker + - decimals + - balance + - balance_usd + - accounts + properties: + mint: + type: string + description: The coin mint address + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + ticker: + type: string + description: The coin symbol + example: $AUDIO + decimals: + type: integer + description: The number of decimals for the coin + example: 8 + logo_uri: + type: string + nullable: true + description: URL to the coin's logo image + example: https://example.com/logo.png + balance: + type: integer + description: The total balance of the coin in the user's account (in wei) + example: 1000000000 + balance_usd: + type: number + description: The total balance of the coin in the user's account in USD + example: 1.23 + accounts: + type: array + items: + $ref: '#/components/schemas/user_coin_account' + managers_response: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/user_manager' + event: + required: + - created_at + - event_data + - event_id + - event_type + - updated_at + - user_id + type: object + properties: + event_id: + type: string + event_type: + type: string + example: remix_contest + enum: + - remix_contest + - live_event + - new_release + user_id: + type: string + entity_type: + type: string + example: track + enum: + - track + - collection + - user + entity_id: + type: string + end_date: + type: string + is_deleted: + type: boolean + created_at: + type: string + updated_at: + type: string + event_data: + type: object + properties: {} + create_user_request_body: + type: object + required: + - handle + - wallet + properties: + user_id: + type: string + description: Optional user hash ID (will be generated if not provided) + example: p9Km2Lx + handle: + type: string + description: User handle (unique username) + example: newartist + wallet: + type: string + description: Wallet address (required) + example: 0x1234... + name: + type: string + description: Display name + example: New Artist + bio: + type: string + description: User bio + maxLength: 256 + location: + type: string + description: User location + website: + type: string + description: Website URL + format: uri + donation: + type: string + description: Donation link + twitter_handle: + type: string + description: Twitter handle (without @) + instagram_handle: + type: string + description: Instagram handle (without @) + tiktok_handle: + type: string + description: TikTok handle (without @) + profile_picture: + type: string + description: Profile picture CID or URL + profile_picture_sizes: + type: string + description: Profile picture sizes metadata + cover_photo: + type: string + description: Cover photo CID or URL + cover_photo_sizes: + type: string + description: Cover photo sizes metadata + profile_type: + type: string + nullable: true + enum: + - label + description: Type of profile (e.g., 'label' for record labels) + allow_ai_attribution: + type: boolean + description: Whether to allow AI attribution + spl_usdc_payout_wallet: + type: string + description: Solana USDC payout wallet address + playlist_library: + $ref: '#/components/schemas/user_playlist_library' + events: + type: object + description: User events for tracking referrals and mobile users + properties: + referrer: + type: string + description: Hash ID of the user who referred this user + example: k9Xm5Pz + is_mobile_user: + type: boolean + description: Whether the user is on mobile + coin_member: + type: object + required: + - balance + - user_id + properties: + balance: + type: integer + description: The user's balance of the specific coin (in wei) + example: 100000 + user_id: + type: string + description: The ID of the user with a non-zero balance + example: 7eP5n + deactivate_access_key_request_body: + type: object + required: + - api_access_key + properties: + api_access_key: + type: string + description: The bearer token (API access key) to deactivate + get_supporting: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + $ref: '#/components/schemas/supporting' + sales_json_response: + type: object + properties: + data: + $ref: '#/components/schemas/sales_json_content' + react_comment_request_body: + type: object + required: + - entityType + - entityId + properties: + entityType: + allOf: + - $ref: '#/components/schemas/comment_entity_type' + example: Track + entityId: + type: integer + description: ID of the entity (track) being commented on + example: 12345 + comment_replies_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/reply_comment' + related: + $ref: '#/components/schemas/related' + transaction_history_count_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: integer + undisbursed_challenge: + required: + - amount + - challenge_id + - completed_at + - completed_blocknumber + - created_at + - handle + - specifier + - user_id + - wallet + type: object + properties: + challenge_id: + type: string + user_id: + type: string + specifier: + type: string + amount: + type: string + completed_blocknumber: + type: integer + handle: + type: string + wallet: + type: string + created_at: + type: string + completed_at: + type: string + cooldown_days: + type: integer + create_playlist_response: + type: object + properties: + success: + type: boolean + description: Whether the playlist was created successfully + transaction_hash: + type: string + description: The blockchain transaction hash + playlist_id: + type: string + description: The ID of the created playlist + track_comment_notification_response: + type: object + properties: + data: + $ref: '#/components/schemas/comment_notification_setting' + verify_token: + type: object + properties: + data: + $ref: '#/components/schemas/decoded_user_token' + claimed_prize: + type: object + required: + - id + - wallet + - signature + - mint + - amount + - prize_id + - prize_name + - created_at + properties: + id: + type: integer + description: The unique identifier of the claimed prize record + example: 1 + wallet: + type: string + description: The wallet address that claimed the prize + example: HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC + signature: + type: string + description: The transaction signature used to claim the prize + example: 5j7s1QjmRKFuDbCWMRVRNibSV2VAAEcNKP6HWU7GwPdXkBZvhz8n4vQl7bBq8tN4Rz9x1Kj3mP5wQ8rT2Y6zA + mint: + type: string + description: The coin mint address used for the claim + example: ZDaUDL4XFdEct7UgeztrFQAptsvh4ZdhyZDZ1RpxYAK + amount: + type: integer + description: The amount paid to claim the prize (in smallest unit, e.g., + lamports) + example: 2000000000 + prize_id: + type: string + description: The unique identifier of the prize won + example: prize_1_yak_airdrop + prize_name: + type: string + description: The name of the prize won + example: 1 YAK Airdrop + prize_type: + type: string + description: The type of prize (e.g., "coin_airdrop", "download") + example: coin_airdrop + created_at: + type: string + format: date-time + description: When the prize was claimed + example: '2024-01-15T10:30:00Z' + collectibles: + type: object + properties: + data: + type: object + properties: {} + description: Raw collectibles JSON structure generated by client + prize_public: + type: object + required: + - prize_id + - name + - weight + properties: + prize_id: + type: string + description: The unique identifier of the prize + example: prize_1_yak_airdrop + name: + type: string + description: The name of the prize + example: 1 YAK Airdrop + description: + type: string + description: Description of the prize + example: Win 1 YAK coin airdrop + weight: + type: integer + description: Weight for random selection (higher = more likely) + example: 1 + metadata: + type: object + description: Sanitized metadata (excludes sensitive URLs) + additionalProperties: true + example: + type: coin_airdrop + amount: 1000000000 + purchase_split: + required: + - amount + - payout_wallet + type: object + properties: + user_id: + type: integer + payout_wallet: + type: string + amount: + type: string + remixers_count_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: integer + claim_rewards_response: + type: object + required: + - data + properties: + data: + type: array + items: + type: object + required: + - challengeId + - specifier + properties: + challengeId: + type: string + description: The challenge ID + example: u + specifier: + type: string + description: The challenge specifier + example: 7eP5n + amount: + type: string + description: The reward amount + example: '1000000000' + signatures: + type: array + items: + type: string + description: Transaction signatures + example: + - 5j7s1QjmRKFuDbCWMRVRNibSV2VAAEcNKP6HWU7GwPdXkBZvhz8n4vQl7bBq8tN4Rz9x1Kj3mP5wQ8rT2Y6zA + error: + type: string + description: Error message if claim failed + example: Insufficient balance + update_developer_app_request_body: + type: object + required: + - name + properties: + name: + type: string + description: Developer app name + description: + type: string + description: App description + imageUrl: + type: string + description: App logo/image URL (camelCase) + playlist_without_tracks: + required: + - access + - added_timestamps + - blocknumber + - created_at + - favorite_count + - followee_favorites + - followee_reposts + - has_current_user_reposted + - has_current_user_saved + - id + - is_album + - is_delete + - is_image_autogenerated + - is_private + - is_scheduled_release + - is_stream_gated + - permalink + - playlist_contents + - playlist_name + - repost_count + - total_play_count + - track_count + - updated_at + - user + - user_id + type: object + properties: + artwork: + $ref: '#/components/schemas/playlist_artwork' + description: + type: string + permalink: + type: string + id: + type: string + is_album: + type: boolean + is_image_autogenerated: + type: boolean + playlist_name: + type: string + playlist_contents: + type: array + items: + $ref: '#/components/schemas/playlist_added_timestamp' + repost_count: + type: integer + favorite_count: + type: integer + total_play_count: + type: integer + user: + $ref: '#/components/schemas/user' + ddex_app: + type: string + access: + $ref: '#/components/schemas/access' + upc: + type: string + track_count: + type: integer + blocknumber: + type: integer + created_at: + type: string + followee_reposts: + type: array + items: + $ref: '#/components/schemas/repost' + followee_favorites: + type: array + items: + $ref: '#/components/schemas/favorite' + has_current_user_reposted: + type: boolean + has_current_user_saved: + type: boolean + is_delete: + type: boolean + is_private: + type: boolean + updated_at: + type: string + added_timestamps: + type: array + description: DEPRECATED. Use playlist_contents instead. + items: + $ref: '#/components/schemas/playlist_added_timestamp' + user_id: + type: string + tracks: + type: array + items: + $ref: '#/components/schemas/track' + cover_art: + type: string + cover_art_sizes: + type: string + cover_art_cids: + $ref: '#/components/schemas/playlist_artwork' + is_stream_gated: + type: boolean + stream_conditions: + type: object + description: How to unlock stream access to the track + allOf: + - $ref: '#/components/schemas/access_gate' + is_scheduled_release: + type: boolean + release_date: + type: string + ddex_release_ids: + type: object + properties: {} + artists: + type: array + items: + type: object + properties: {} + copyright_line: + type: object + properties: {} + producer_copyright_line: + type: object + properties: {} + parental_warning_type: + type: string + nullable: true + get_tips_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/tip' + user_coins_response: + type: object + required: + - data + properties: + data: + type: array + items: + $ref: '#/components/schemas/user_coin' + create_coin_request: + type: object + required: + - mint + - ticker + - decimals + - name + properties: + mint: + type: string + description: The mint address of the coin + example: bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj + ticker: + type: string + description: The coin symbol/ticker + example: BEAR + decimals: + type: integer + description: The number of decimals for the coin (0-18) + minimum: 0 + maximum: 18 + example: 9 + name: + type: string + description: The coin name + example: BEAR + logo_uri: + type: string + description: The URI for the coin's logo image + example: https://example.com/logo.png + banner_image_url: + type: string + description: The URI for the coin's banner image + example: https://example.com/banner.png + format: uri + description: + type: string + description: The description of the coin + example: A majestic bear token for wildlife conservation + link_1: + type: string + description: Generic link URL for the coin + example: https://x.com/bear_token + format: uri + link_2: + type: string + description: Generic link URL for the coin + example: https://instagram.com/bear_token + format: uri + link_3: + type: string + description: Generic link URL for the coin + example: https://tiktok.com/@bear_token + format: uri + link_4: + type: string + description: Generic link URL for the coin + example: https://bear-token.com + format: uri + favorites_response: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/favorite' + remixables_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/track' + reward_code_error_response: + type: object + properties: + error: + type: string + description: Error message indicating why the code cannot be redeemed + example: used + enum: + - used + - invalid + create_grant_request_body: + type: object + required: + - app_api_key + properties: + app_api_key: + type: string + description: The developer app address (API key) to grant authorization + to + follow_gate: + required: + - follow_user_id + type: object + properties: + follow_user_id: + type: integer + description: Must follow the given user ID to unlock + user_subscribers: + required: + - user_id + type: object + properties: + user_id: + type: string + subscriber_ids: + type: array + items: + type: string + deactivate_access_key_response: + type: object + properties: + success: + type: boolean + description: Whether the deactivation was successful + user_comments_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/comment' + related: + $ref: '#/components/schemas/related' + coin_members_count_response: + type: object + required: + - data + properties: + data: + type: integer + description: The total number of users with a non-zero balance of the specific + coin + example: 42 + user_manager: + required: + - grant + - manager + type: object + properties: + manager: + $ref: '#/components/schemas/user' + grant: + $ref: '#/components/schemas/grant' + genre: + type: string + description: Music genre + enum: + - Electronic + - Rock + - Metal + - Alternative + - Hip-Hop/Rap + - Experimental + - Punk + - Folk + - Pop + - Ambient + - Soundtrack + - World + - Jazz + - Acoustic + - Funk + - R&B/Soul + - Devotional + - Classical + - Reggae + - Podcasts + - Country + - Spoken Word + - Comedy + - Blues + - Kids + - Audiobooks + - Latin + - Lo-Fi + - Hyperpop + - Dancehall + - Techno + - Trap + - House + - Tech House + - Deep House + - Disco + - Electro + - Jungle + - Progressive House + - Hardstyle + - Glitch Hop + - Trance + - Future Bass + - Future House + - Tropical House + - Downtempo + - Drum & Bass + - Dubstep + - Jersey Club + - Vaporwave + - Moombahton + albums_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/playlist_without_tracks' + favorite: + required: + - created_at + - favorite_item_id + - favorite_type + - user_id + type: object + properties: + favorite_item_id: + type: string + favorite_type: + type: string + user_id: + type: string + created_at: + type: string + approve_grant_request_body: + type: object + required: + - grantor_user_id + properties: + grantor_user_id: + type: string + description: The user ID of the child user who proposed the manager (grantor) + user_feed_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user_feed_item' + remixing_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/track' + track_reposts_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + top_genre_users_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + grant: + required: + - created_at + - grantee_address + - is_approved + - is_revoked + - updated_at + - user_id + type: object + properties: + grantee_address: + type: string + user_id: + type: string + is_revoked: + type: boolean + is_approved: + type: boolean + created_at: + type: string + updated_at: + type: string + mutual_followers_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + redeem_amount_response: + type: object + required: + - amount + properties: + amount: + type: integer + description: Static amount indicator (always 1) + example: 1 + create_developer_app_request_body: + type: object + required: + - name + properties: + name: + type: string + description: Developer app name + example: My API Key + description: + type: string + description: App description + imageUrl: + type: string + description: App logo/image URL + coins_response: + type: object + required: + - data + properties: + data: + type: array + items: + $ref: '#/components/schemas/coin' + update_coin_response: + type: object + properties: + success: + type: boolean + description: Indicates if the update was successful + example: true + create_track_response: + type: object + properties: + success: + type: boolean + description: Whether the track was created successfully + transaction_hash: + type: string + description: The blockchain transaction hash + track_id: + type: string + description: The ID of the created track + get_supporters: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/supporter' + blob_info: + required: + - content_type + - size + type: object + properties: + size: + type: integer + content_type: + type: string + reward_code_response: + type: object + required: + - code + - amount + properties: + code: + type: string + description: The reward code + example: XYZ123 + amount: + type: integer + description: The amount of coins rewarded by this code + example: 100 + update_playlist_request_body: + type: object + description: Request body for updating playlist information. All fields are + optional. + properties: + playlist_name: + type: string + minLength: 1 + description: Playlist or album name + description: + type: string + description: Playlist description + maxLength: 1000 + is_private: + type: boolean + description: Whether the playlist is private + is_album: + type: boolean + description: Whether this is an album + genre: + $ref: '#/components/schemas/genre' + mood: + allOf: + - $ref: '#/components/schemas/mood' + tags: + type: string + description: Comma-separated tags + license: + type: string + description: License type + upc: + type: string + description: Universal Product Code (for albums) + release_date: + type: string + format: date + description: Release date + cover_art_cid: + type: string + description: IPFS CID for cover art + playlist_contents: + type: array + description: Array of track IDs to include in the playlist + items: + $ref: '#/components/schemas/playlist_added_timestamp' + is_stream_gated: + type: boolean + nullable: true + description: Whether streaming is restricted behind an access gate + is_scheduled_release: + type: boolean + nullable: true + description: Whether the playlist/album is a scheduled release + stream_conditions: + nullable: true + allOf: + - $ref: '#/components/schemas/access_gate' + ddex_app: + type: string + description: DDEX application identifier + ddex_release_ids: + type: object + nullable: true + additionalProperties: + type: string + description: DDEX release identifiers + artists: + type: array + nullable: true + items: + $ref: '#/components/schemas/ddex_resource_contributor' + description: DDEX resource contributors / artists + copyright_line: + nullable: true + allOf: + - $ref: '#/components/schemas/ddex_copyright' + description: DDEX copyright line + producer_copyright_line: + nullable: true + allOf: + - $ref: '#/components/schemas/ddex_copyright' + description: DDEX producer copyright line + parental_warning_type: + type: string + nullable: true + description: Parental warning type + is_image_autogenerated: + type: boolean + nullable: true + description: Whether the image is autogenerated + tracks: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/track' + developer_app_response: + type: object + properties: + data: + $ref: '#/components/schemas/developer_app' + remixes_response: + required: + - count + type: object + properties: + count: + type: integer + tracks: + type: array + items: + $ref: '#/components/schemas/track' + track: + required: + - access + - artwork + - blocknumber + - comment_count + - cover_art_sizes + - created_at + - download + - duration + - favorite_count + - field_visibility + - followee_favorites + - followee_reposts + - genre + - has_current_user_reposted + - has_current_user_saved + - id + - is_available + - is_delete + - is_download_gated + - is_downloadable + - is_original_available + - is_owned_by_user + - is_scheduled_release + - is_stream_gated + - is_unlisted + - permalink + - play_count + - preview + - remix_of + - repost_count + - route_id + - stream + - title + - track_segments + - updated_at + - user + - user_id + type: object + properties: + artwork: + $ref: '#/components/schemas/track_artwork' + description: + type: string + genre: + type: string + id: + type: string + track_cid: + type: string + preview_cid: + type: string + orig_file_cid: + type: string + orig_filename: + type: string + is_original_available: + type: boolean + mood: + type: string + release_date: + type: string + remix_of: + $ref: '#/components/schemas/remix_parent' + repost_count: + type: integer + favorite_count: + type: integer + comment_count: + type: integer + tags: + type: string + title: + type: string + user: + $ref: '#/components/schemas/user' + duration: + type: integer + is_downloadable: + type: boolean + play_count: + type: integer + permalink: + type: string + is_streamable: + type: boolean + ddex_app: + type: string + playlists_containing_track: + type: array + items: + type: integer + pinned_comment_id: + type: integer + album_backlink: + $ref: '#/components/schemas/album_backlink' + access: + type: object + description: Describes what access the given user has + allOf: + - $ref: '#/components/schemas/access' + blocknumber: + type: integer + description: The blocknumber this track was last updated + create_date: + type: string + cover_art_sizes: + type: string + cover_art_cids: + $ref: '#/components/schemas/cover_art' + created_at: + type: string + credits_splits: + type: string + isrc: + type: string + license: + type: string + iswc: + type: string + field_visibility: + $ref: '#/components/schemas/field_visibility' + followee_reposts: + type: array + items: + $ref: '#/components/schemas/repost' + has_current_user_reposted: + type: boolean + is_scheduled_release: + type: boolean + is_unlisted: + type: boolean + has_current_user_saved: + type: boolean + followee_favorites: + type: array + items: + $ref: '#/components/schemas/favorite' + route_id: + type: string + stem_of: + $ref: '#/components/schemas/stem_parent' + track_segments: + type: array + items: + $ref: '#/components/schemas/track_segment' + updated_at: + type: string + user_id: + type: string + is_delete: + type: boolean + cover_art: + type: string + is_available: + type: boolean + ai_attribution_user_id: + type: integer + allowed_api_keys: + type: array + items: + type: string + audio_upload_id: + type: string + preview_start_seconds: + type: number + bpm: + type: number + is_custom_bpm: + type: boolean + musical_key: + type: string + is_custom_musical_key: + type: boolean + audio_analysis_error_count: + type: integer + comments_disabled: + type: boolean + ddex_release_ids: + type: object + properties: {} + artists: + type: array + items: + type: object + properties: {} + resource_contributors: + type: array + items: + type: object + properties: {} + indirect_resource_contributors: + type: array + items: + type: object + properties: {} + rights_controller: + type: object + properties: {} + copyright_line: + type: object + properties: {} + producer_copyright_line: + type: object + properties: {} + parental_warning_type: + type: string + nullable: true + is_stream_gated: + type: boolean + description: Whether or not the owner has restricted streaming behind an + access gate + stream_conditions: + type: object + description: How to unlock stream access to the track + allOf: + - $ref: '#/components/schemas/access_gate' + is_download_gated: + type: boolean + description: Whether or not the owner has restricted downloading behind + an access gate + download_conditions: + type: object + description: How to unlock the track download + allOf: + - $ref: '#/components/schemas/access_gate' + cover_original_song_title: + type: string + cover_original_artist: + type: string + is_owned_by_user: + type: boolean + description: Indicates whether the track is owned by the user for MRI sake + stream: + $ref: '#/components/schemas/url_with_mirrors' + download: + $ref: '#/components/schemas/url_with_mirrors' + preview: + $ref: '#/components/schemas/url_with_mirrors' + stream_url_response: + required: + - data + type: object + properties: + data: + type: string + followers_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + get_supported_users: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/supporting' + notifications_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + $ref: '#/components/schemas/notifications' + connected_wallets_response: + type: object + properties: + data: + $ref: '#/components/schemas/connected_wallets' + best_selling_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/best_selling_item' + related: + $ref: '#/components/schemas/related' + track_search: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/track' + user_track_listen_counts_response: + type: object + properties: + data: + $ref: '#/components/schemas/wild_month_model' + subscribers_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/user' + transaction_history_response: + required: + - latest_chain_block + - latest_chain_slot_plays + - latest_indexed_block + - latest_indexed_slot_plays + - signature + - timestamp + - version + type: object + properties: + latest_chain_block: + type: integer + latest_indexed_block: + type: integer + latest_chain_slot_plays: + type: integer + latest_indexed_slot_plays: + type: integer + signature: + type: string + timestamp: + type: string + version: + $ref: '#/components/schemas/version_metadata' + data: + type: array + items: + $ref: '#/components/schemas/transaction_details' + mood: + type: string + description: Music mood + enum: + - Peaceful + - Romantic + - Sentimental + - Tender + - Easygoing + - Yearning + - Sophisticated + - Sensual + - Cool + - Gritty + - Melancholy + - Serious + - Brooding + - Fiery + - Defiant + - Aggressive + - Rowdy + - Excited + - Energizing + - Empowering + - Stirring + - Upbeat + - Other + get_challenges: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/challenge_response' + sales_aggregate: + required: + - content_id + - content_type + - purchase_count + type: object + properties: + content_type: + type: string + content_id: + type: string + purchase_count: + type: integer + connected_wallets: + required: + - erc_wallets + - spl_wallets + type: object + properties: + erc_wallets: + type: array + items: + type: string + spl_wallets: + type: array + items: + type: string + comment_entity_type: + type: string + description: Type of entity that can be commented on + enum: + - Track + top_listener: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/top_listener' + collection_activity_without_tracks: + allOf: + - $ref: '#/components/schemas/activity' + - required: + - item + - item_type + type: object + properties: + item_type: + type: string + example: playlist + enum: + - playlist + item: + $ref: '#/components/schemas/playlist_without_tracks' + comment: + required: + - created_at + - entity_id + - entity_type + - id + - is_edited + - message + - react_count + - reply_count + type: object + properties: + id: + type: string + entity_id: + type: string + entity_type: + $ref: '#/components/schemas/comment_entity_type' + user_id: + type: string + message: + type: string + mentions: + type: array + items: + $ref: '#/components/schemas/comment_mention' + track_timestamp_s: + type: integer + react_count: + type: integer + reply_count: + type: integer + is_edited: + type: boolean + is_current_user_reacted: + type: boolean + is_artist_reacted: + type: boolean + is_tombstone: + type: boolean + is_muted: + type: boolean + created_at: + type: string + updated_at: + type: string + replies: + type: array + items: + $ref: '#/components/schemas/reply_comment' + parent_comment_id: + type: integer + reaction: + required: + - reacted_to + - reaction_type + - reaction_value + - sender_user_id + type: object + properties: + reaction_value: + type: string + reaction_type: + type: string + sender_user_id: + type: string + reacted_to: + type: string + stem: + required: + - blocknumber + - category + - cid + - id + - orig_filename + - parent_id + - user_id + type: object + properties: + id: + type: string + parent_id: + type: string + category: + type: string + cid: + type: string + user_id: + type: string + blocknumber: + type: integer + orig_filename: + type: string + user_id_address: + type: object + required: + - user_id + - address + properties: + user_id: + type: string + address: + type: string + album_backlink: + required: + - permalink + - playlist_id + - playlist_name + type: object + properties: + playlist_id: + type: integer + playlist_name: + type: string + permalink: + type: string + challenge_response: + required: + - amount + - challenge_id + - challenge_type + - disbursed_amount + - is_active + - is_complete + - is_disbursed + - metadata + - user_id + type: object + properties: + challenge_id: + type: string + user_id: + type: string + specifier: + type: string + is_complete: + type: boolean + is_active: + type: boolean + is_disbursed: + type: boolean + current_step_count: + type: integer + max_steps: + type: integer + challenge_type: + type: string + amount: + type: string + disbursed_amount: + type: integer + cooldown_days: + type: integer + metadata: + type: object + properties: {} + email_access: + required: + - created_at + - email_owner_user_id + - encrypted_key + - grantor_user_id + - id + - is_initial + - receiving_user_id + - updated_at + type: object + properties: + id: + type: integer + email_owner_user_id: + type: integer + receiving_user_id: + type: integer + grantor_user_id: + type: integer + encrypted_key: + type: string + is_initial: + type: boolean + created_at: + type: string + updated_at: + type: string + track_access_info: + required: + - blocknumber + - user_id + type: object + properties: + access: + type: object + description: Describes what access the given user has + allOf: + - $ref: '#/components/schemas/access' + user_id: + type: string + description: The user ID of the owner of this track + blocknumber: + type: integer + description: The blocknumber this track was last updated + is_stream_gated: + type: boolean + description: Whether or not the owner has restricted streaming behind an + access gate + stream_conditions: + type: object + description: How to unlock stream access to the track + allOf: + - $ref: '#/components/schemas/extended_access_gate' + is_download_gated: + type: boolean + description: Whether or not the owner has restricted downloading behind + an access gate + download_conditions: + type: object + description: How to unlock the track download + allOf: + - $ref: '#/components/schemas/extended_access_gate' + activity: + required: + - class + - item + - item_type + - timestamp + type: object + properties: + timestamp: + type: string + item_type: + type: string + example: track + enum: + - track + - playlist + item: + type: object + properties: {} + class: + type: string + discriminator: + propertyName: class + token_gate: + required: + - token_gate + type: object + properties: + token_gate: + type: object + description: Must hold an NFT of the given collection to unlock + allOf: + - $ref: '#/components/schemas/extended_token_gate' + cover_photo: + type: object + properties: + 640x: + type: string + 2000x: + type: string + mirrors: + type: array + items: + type: string + nft_gate: + required: + - nft_collection + type: object + properties: + nft_collection: + type: object + description: Must hold an NFT of the given collection to unlock + allOf: + - $ref: '#/components/schemas/nft_collection' + cid_data: + type: object + properties: + collectibles: + type: object + properties: {} + associated_sol_wallets: + type: object + properties: {} + associated_wallets: + type: object + properties: {} + trending_times_ids: + type: object + properties: + week: + type: array + items: + $ref: '#/components/schemas/track_id' + month: + type: array + items: + $ref: '#/components/schemas/track_id' + year: + type: array + items: + $ref: '#/components/schemas/track_id' + account: + required: + - playlists + - track_save_count + - user + type: object + properties: + user: + $ref: '#/components/schemas/user' + playlists: + type: array + items: + $ref: '#/components/schemas/account_collection' + playlist_library: + $ref: '#/components/schemas/playlist_library' + track_save_count: + type: integer + search_playlist: + required: + - access + - added_timestamps + - blocknumber + - created_at + - favorite_count + - has_current_user_reposted + - has_current_user_saved + - id + - is_album + - is_delete + - is_image_autogenerated + - is_private + - is_scheduled_release + - is_stream_gated + - permalink + - playlist_contents + - playlist_name + - repost_count + - total_play_count + - track_count + - updated_at + - user + - user_id + type: object + properties: + artwork: + $ref: '#/components/schemas/playlist_artwork' + description: + type: string + permalink: + type: string + id: + type: string + is_album: + type: boolean + is_image_autogenerated: + type: boolean + playlist_name: + type: string + playlist_contents: + type: array + items: + $ref: '#/components/schemas/playlist_added_timestamp' + repost_count: + type: integer + favorite_count: + type: integer + total_play_count: + type: integer + user: + $ref: '#/components/schemas/user' + ddex_app: + type: string + access: + $ref: '#/components/schemas/access' + upc: + type: string + track_count: + type: integer + blocknumber: + type: integer + created_at: + type: string + followee_reposts: + type: array + items: + $ref: '#/components/schemas/repost' + followee_favorites: + type: array + items: + $ref: '#/components/schemas/favorite' + has_current_user_reposted: + type: boolean + has_current_user_saved: + type: boolean + is_delete: + type: boolean + is_private: + type: boolean + updated_at: + type: string + added_timestamps: + type: array + description: DEPRECATED. Use playlist_contents instead. + items: + $ref: '#/components/schemas/playlist_added_timestamp' + user_id: + type: string + tracks: + type: array + items: + $ref: '#/components/schemas/track' + cover_art: + type: string + cover_art_sizes: + type: string + cover_art_cids: + $ref: '#/components/schemas/playlist_artwork' + is_stream_gated: + type: boolean + stream_conditions: + type: object + description: How to unlock stream access to the track + allOf: + - $ref: '#/components/schemas/access_gate' + is_scheduled_release: + type: boolean + release_date: + type: string + ddex_release_ids: + type: object + properties: {} + artists: + type: array + items: + type: object + properties: {} + copyright_line: + type: object + properties: {} + producer_copyright_line: + type: object + properties: {} + parental_warning_type: + type: string + nullable: true + best_selling_item: + required: + - content_id + - owner_id + - title + type: object + properties: + content_id: + type: string + content_type: + type: string + example: track + enum: + - track + - album + title: + type: string + owner_id: + type: string + comment_mention: + required: + - handle + - user_id + type: object + properties: + user_id: + type: integer + handle: + type: string + user_feed_item: + oneOf: + - $ref: '#/components/schemas/track_feed_item' + - $ref: '#/components/schemas/playlist_feed_item' + discriminator: + propertyName: type + mapping: + track: '#/components/schemas/track_feed_item' + playlist: '#/components/schemas/playlist_feed_item' + cover_art: + type: object + properties: + 150x150: + type: string + 480x480: + type: string + 1000x1000: + type: string + track_segment: + required: + - duration + - multihash + type: object + properties: + duration: + type: number + multihash: + type: string + transaction_details: + required: + - balance + - change + - metadata + - method + - signature + - transaction_date + - transaction_type + - user_bank + type: object + properties: + transaction_date: + type: string + transaction_type: + type: string + method: + type: string + signature: + type: string + user_bank: + type: string + change: + type: string + balance: + type: string + metadata: + type: object + properties: {} + discriminator: + propertyName: transaction_type + playlist_updates: + type: object + properties: + playlist_updates: + type: array + items: + $ref: '#/components/schemas/playlist_update' + playlist_library: + type: object + properties: + contents: + type: array + items: + type: object + properties: {} + profile_picture: + type: object + properties: + 150x150: + type: string + 480x480: + type: string + 1000x1000: + type: string + mirrors: + type: array + items: + type: string + remix_parent: + type: object + properties: + tracks: + type: array + items: + $ref: '#/components/schemas/remix' + extended_access_gate: + oneOf: + - $ref: '#/components/schemas/tip_gate' + - $ref: '#/components/schemas/follow_gate' + - $ref: '#/components/schemas/extended_purchase_gate' + - $ref: '#/components/schemas/token_gate' + coin_insights: + type: object + description: 'Additional token information from Birdeye''s defi token overview + API. + + Includes price, volume, supply, market cap, and other on-chain and market + data. + + ' + required: + - mint + - marketCap + - fdv + - liquidity + - lastTradeUnixTime + - lastTradeHumanTime + - price + - history24hPrice + - priceChange24hPercent + - uniqueWallet24h + - uniqueWalletHistory24h + - uniqueWallet24hChangePercent + - totalSupply + - circulatingSupply + - holder + - trade24h + - tradeHistory24h + - trade24hChangePercent + - sell24h + - sellHistory24h + - sell24hChangePercent + - buy24h + - buyHistory24h + - buy24hChangePercent + - v24h + - v24hUSD + - vHistory24h + - totalVolume + - totalVolumeUSD + - volumeBuy + - volumeBuyUSD + - volumeSell + - volumeSellUSD + - totalTrade + - buy + - sell + - dynamicBondingCurve + properties: + address: + type: string + description: The SPL token mint address + example: DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 + decimals: + type: integer + description: Number of decimals for the token + example: 5 + symbol: + type: string + description: The token symbol + example: BONK + name: + type: string + description: The token name + example: Bonk + marketCap: + type: number + description: Market capitalization in USD + example: 2625779824.994664 + fdv: + type: number + description: Fully diluted valuation in USD + example: 2625779824.994664 + extensions: + type: object + description: Token metadata and links + properties: + coingeckoId: + type: string + description: CoinGecko ID + example: bonk + description: + type: string + description: Token description + example: The Official Bonk Inu token + twitter: + type: string + description: Twitter URL + example: https://twitter.com/bonk_inu + website: + type: string + description: Website URL + example: https://www.bonkcoin.com/ + discord: + type: string + description: Discord invite URL + example: https://discord.gg/ubqvDDFUhf + liquidity: + type: number + description: Current liquidity in USD + example: 18977326.389274083 + lastTradeUnixTime: + type: integer + description: Unix timestamp of the last trade + example: 1752620592 + lastTradeHumanTime: + type: string + description: ISO8601 time of the last trade + example: '2025-07-15T23:03:12' + price: + type: number + description: Current price in USD + example: 2.9571022098881748e-05 + history24hPrice: + type: number + description: Price 24 hours ago in USD + example: 2.7195701160436288e-05 + priceChange24hPercent: + type: number + description: 24h price change in percent + example: 8.73417796596848 + uniqueWallet24h: + type: integer + description: Unique wallets traded in last 24h + example: 20242 + uniqueWalletHistory24h: + type: integer + description: Unique wallets traded in previous 24h + example: 21155 + uniqueWallet24hChangePercent: + type: number + description: 24h change in unique wallets (percent) + example: -4.315764594658473 + totalSupply: + type: number + description: Total supply of the token + example: 88795707372386.03 + circulatingSupply: + type: number + description: Circulating supply of the token + example: 88795707372386.03 + holder: + type: integer + description: Number of holders + example: 957291 + trade24h: + type: integer + description: Number of trades in last 24h + example: 449987 + tradeHistory24h: + type: integer + description: Number of trades in previous 24h + example: 390400 + trade24hChangePercent: + type: number + description: 24h change in trade count (percent) + example: 15.263063524590164 + sell24h: + type: integer + description: Number of sell trades in last 24h + example: 223845 + sellHistory24h: + type: integer + description: Number of sell trades in previous 24h + example: 191979 + sell24hChangePercent: + type: number + description: 24h change in sell trades (percent) + example: 16.598690481771445 + buy24h: + type: integer + description: Number of buy trades in last 24h + example: 226142 + buyHistory24h: + type: integer + description: Number of buy trades in previous 24h + example: 198421 + buy24hChangePercent: + type: number + description: 24h change in buy trades (percent) + example: 13.970799461750522 + v24h: + type: number + description: 24h trading volume (token units) + example: 2456470915352.043 + v24hUSD: + type: number + description: 24h trading volume in USD + example: 69961943.60091284 + vHistory24h: + type: number + description: Previous 24h trading volume (token units) + example: 1849367819551.6223 + vHistory24hUSD: + type: number + description: Previous 24h trading volume in USD + example: 49529721.91224754 + v24hChangePercent: + type: number + description: 24h change in volume (percent) + example: 32.82760137718911 + vBuy24h: + type: number + description: 24h buy volume (token units) + example: 1267704208631.2197 + vBuy24hUSD: + type: number + description: 24h buy volume in USD + example: 35985775.23314727 + vBuyHistory24h: + type: number + description: Previous 24h buy volume (token units) + example: 926415751610.5529 + vBuyHistory24hUSD: + type: number + description: Previous 24h buy volume in USD + example: 24916558.31987226 + vBuy24hChangePercent: + type: number + description: 24h change in buy volume (percent) + example: 36.83966474310746 + vSell24h: + type: number + description: 24h sell volume (token units) + example: 1188766706720.8232 + vSell24hUSD: + type: number + description: 24h sell volume in USD + example: 33976168.367765576 + vSellHistory24h: + type: number + description: Previous 24h sell volume (token units) + example: 922952067941.0695 + vSellHistory24hUSD: + type: number + description: Previous 24h sell volume in USD + example: 24613163.592375275 + vSell24hChangePercent: + type: number + description: 24h change in sell volume (percent) + example: 28.800481413161105 + numberMarkets: + type: integer + description: Number of markets the token is traded on + example: 317 + totalVolume: + type: number + description: Total volume of coin traded (all time) + example: 158766463.26959822 + totalVolumeUSD: + type: number + description: Total volume of coin traded in USD (all time) + example: 20188521260.405678 + volumeBuy: + type: number + description: Total volume bought (all time) + example: 78227859.16098201 + volumeBuyUSD: + type: number + description: Total volume bought in USD (all time) + example: 20188521260.405678 + volumeSell: + type: number + description: Total volume sold (all time) + example: 80538604.1086162 + volumeSellUSD: + type: number + description: Total volume sold in USD (all time) + example: 20188521260.405678 + totalTrade: + type: integer + description: Total number of trades (all time) + example: 258522892 + buy: + type: integer + description: Total number of buys (all time) + example: 87829497 + sell: + type: integer + description: Total number of sells (all time) + example: 170693395 + dynamicBondingCurve: + type: object + description: Information about the dynamic bonding curve if one exists for + the Coin + required: + - address + - price + - priceUSD + - curveProgress + - creatorQuoteFee + - totalTradingQuoteFee + - creatorWalletAddress + properties: + address: + type: string + description: Address of the bonding curve pool + example: 2AAsAwNPTNBk5N466xyPiwqdgbc5WLbDTdnn9gVuDKaN + price: + type: number + description: Current price in the pool's quote token (e.g., AUDIO) + example: 0.0028402095736478586 + priceUSD: + type: number + description: Current price in USD + example: 2.9571022098881748e-05 + curveProgress: + type: number + description: Progress along the bonding curve (0.0 - 1.0) + example: 0.75 + isMigrated: + type: boolean + description: Whether the bonding curve has been migrated + example: false + creatorQuoteFee: + type: number + description: Creator quote fee for the bonding curve + example: 0.05 + totalTradingQuoteFee: + type: number + description: Total trading quote fee accumulated + example: 0.001 + creatorWalletAddress: + type: string + description: Address of the pool creator's wallet + example: 2AAsAwNPTNBk5N466xyPiwqdgbc5WLbDTdnn9gVuDKaN + usdc_gate: + required: + - price + - splits + type: object + properties: + splits: + $ref: '#/components/schemas/wild_card_split' + price: + type: integer + search_track: + required: + - access + - artwork + - blocknumber + - comment_count + - cover_art_sizes + - created_at + - download + - duration + - favorite_count + - field_visibility + - genre + - has_current_user_reposted + - has_current_user_saved + - id + - is_available + - is_delete + - is_download_gated + - is_downloadable + - is_original_available + - is_owned_by_user + - is_scheduled_release + - is_stream_gated + - is_unlisted + - permalink + - play_count + - preview + - remix_of + - repost_count + - route_id + - stream + - title + - track_segments + - updated_at + - user + - user_id + type: object + properties: + artwork: + $ref: '#/components/schemas/track_artwork' + description: + type: string + genre: + type: string + id: + type: string + track_cid: + type: string + preview_cid: + type: string + orig_file_cid: + type: string + orig_filename: + type: string + is_original_available: + type: boolean + mood: + type: string + release_date: + type: string + remix_of: + $ref: '#/components/schemas/remix_parent' + repost_count: + type: integer + favorite_count: + type: integer + comment_count: + type: integer + tags: + type: string + title: + type: string + user: + $ref: '#/components/schemas/user' + duration: + type: integer + is_downloadable: + type: boolean + play_count: + type: integer + permalink: + type: string + is_streamable: + type: boolean + ddex_app: + type: string + playlists_containing_track: + type: array + items: + type: integer + pinned_comment_id: + type: integer + album_backlink: + $ref: '#/components/schemas/album_backlink' + access: + type: object + description: Describes what access the given user has + allOf: + - $ref: '#/components/schemas/access' + blocknumber: + type: integer + description: The blocknumber this track was last updated + create_date: + type: string + cover_art_sizes: + type: string + cover_art_cids: + $ref: '#/components/schemas/cover_art' + created_at: + type: string + credits_splits: + type: string + isrc: + type: string + license: + type: string + iswc: + type: string + field_visibility: + $ref: '#/components/schemas/field_visibility' + followee_reposts: + type: array + items: + $ref: '#/components/schemas/repost' + has_current_user_reposted: + type: boolean + is_scheduled_release: + type: boolean + is_unlisted: + type: boolean + has_current_user_saved: + type: boolean + followee_favorites: + type: array + items: + $ref: '#/components/schemas/favorite' + route_id: + type: string + stem_of: + $ref: '#/components/schemas/stem_parent' + track_segments: + type: array + items: + $ref: '#/components/schemas/track_segment' + updated_at: + type: string + user_id: + type: string + is_delete: + type: boolean + cover_art: + type: string + is_available: + type: boolean + ai_attribution_user_id: + type: integer + allowed_api_keys: + type: array + items: + type: string + audio_upload_id: + type: string + preview_start_seconds: + type: number + bpm: + type: number + is_custom_bpm: + type: boolean + musical_key: + type: string + is_custom_musical_key: + type: boolean + audio_analysis_error_count: + type: integer + comments_disabled: + type: boolean + ddex_release_ids: + type: object + properties: {} + artists: + type: array + items: + type: object + properties: {} + resource_contributors: + type: array + items: + type: object + properties: {} + indirect_resource_contributors: + type: array + items: + type: object + properties: {} + rights_controller: + type: object + properties: {} + copyright_line: + type: object + properties: {} + producer_copyright_line: + type: object + properties: {} + parental_warning_type: + type: string + nullable: true + is_stream_gated: + type: boolean + description: Whether or not the owner has restricted streaming behind an + access gate + stream_conditions: + type: object + description: How to unlock stream access to the track + allOf: + - $ref: '#/components/schemas/access_gate' + is_download_gated: + type: boolean + description: Whether or not the owner has restricted downloading behind + an access gate + download_conditions: + type: object + description: How to unlock the track download + allOf: + - $ref: '#/components/schemas/access_gate' + cover_original_song_title: + type: string + cover_original_artist: + type: string + is_owned_by_user: + type: boolean + description: Indicates whether the track is owned by the user for MRI sake + stream: + $ref: '#/components/schemas/url_with_mirrors' + download: + $ref: '#/components/schemas/url_with_mirrors' + preview: + $ref: '#/components/schemas/url_with_mirrors' + managed_user: + required: + - grant + - user + type: object + properties: + user: + $ref: '#/components/schemas/user' + grant: + $ref: '#/components/schemas/grant' + wild_month_model: + type: object + additionalProperties: + $ref: '#/components/schemas/monthly_aggregate_play' + url_with_mirrors: + required: + - mirrors + type: object + properties: + url: + type: string + mirrors: + type: array + items: + type: string + extended_token_gate: + required: + - token_mint + - token_amount + type: object + properties: + token_mint: + type: string + description: The mint of the token needed to unlock + token_amount: + type: integer + description: The amount of the token needed to unlock + nft_collection: + required: + - address + - chain + - name + type: object + properties: + chain: + type: string + example: eth + enum: + - eth + - sol + standard: + type: string + example: ERC721 + enum: + - ERC721 + - ERC1155 + address: + type: string + name: + type: string + imageUrl: + type: string + externalLink: + type: string + supporting: + required: + - amount + - rank + - receiver + type: object + properties: + rank: + type: integer + amount: + type: string + receiver: + $ref: '#/components/schemas/user' + track_element_write: + required: + - parent_track_id + type: object + properties: + parent_track_id: + type: string + example: x5pJ3Az + extended_purchase_gate: + required: + - usdc_purchase + type: object + properties: + usdc_purchase: + type: object + description: Must pay the total price and split to the given addresses to + unlock + allOf: + - $ref: '#/components/schemas/extended_usdc_gate' + comment_notification_setting: + required: + - is_muted + type: object + properties: + is_muted: + type: boolean + extended_usdc_gate: + required: + - price + - splits + type: object + properties: + price: type: integer - description: Number of trades in previous 24h - example: 390400 - trade24hChangePercent: - type: number - description: 24h change in trade count (percent) - example: 15.263063524590164 - sell24h: + splits: + type: array + items: + $ref: '#/components/schemas/extended_payment_split' + track_artwork: + type: object + properties: + 150x150: + type: string + 480x480: + type: string + 1000x1000: + type: string + mirrors: + type: array + items: + type: string + reply_comment: + required: + - created_at + - entity_id + - entity_type + - id + - is_edited + - message + - react_count + - user_id + type: object + properties: + id: + type: string + entity_id: + type: string + entity_type: + $ref: '#/components/schemas/comment_entity_type' + user_id: + type: string + message: + type: string + mentions: + type: array + items: + $ref: '#/components/schemas/comment_mention' + track_timestamp_s: type: integer - description: Number of sell trades in last 24h - example: 223845 - sellHistory24h: + react_count: type: integer - description: Number of sell trades in previous 24h - example: 191979 - sell24hChangePercent: - type: number - description: 24h change in sell trades (percent) - example: 16.598690481771445 - buy24h: + is_edited: + type: boolean + is_current_user_reacted: + type: boolean + is_artist_reacted: + type: boolean + created_at: + type: string + updated_at: + type: string + parent_comment_id: type: integer - description: Number of buy trades in last 24h - example: 226142 - buyHistory24h: + user_playlist_library: + type: object + description: User's playlist library with support for folders and playlists + required: + - contents + properties: + contents: + type: array + description: Array of folders and playlist identifiers + items: + oneOf: + - $ref: '#/components/schemas/playlist_library_folder' + - $ref: '#/components/schemas/playlist_library_playlist_identifier' + - $ref: '#/components/schemas/playlist_library_explore_playlist_identifier' + notifications: + required: + - unread_count + type: object + properties: + notifications: + type: array + items: + $ref: '#/components/schemas/notification' + unread_count: type: integer - description: Number of buy trades in previous 24h - example: 198421 - buy24hChangePercent: - type: number - description: 24h change in buy trades (percent) - example: 13.970799461750522 - v24h: - type: number - description: 24h trading volume (token units) - example: 2456470915352.043 - v24hUSD: - type: number - description: 24h trading volume in USD - example: 69961943.60091284 - vHistory24h: - type: number - description: Previous 24h trading volume (token units) - example: 1849367819551.6223 - vHistory24hUSD: - type: number - description: Previous 24h trading volume in USD - example: 49529721.91224754 - v24hChangePercent: - type: number - description: 24h change in volume (percent) - example: 32.82760137718911 - vBuy24h: - type: number - description: 24h buy volume (token units) - example: 1267704208631.2197 - vBuy24hUSD: - type: number - description: 24h buy volume in USD - example: 35985775.23314727 - vBuyHistory24h: - type: number - description: Previous 24h buy volume (token units) - example: 926415751610.5529 - vBuyHistory24hUSD: - type: number - description: Previous 24h buy volume in USD - example: 24916558.31987226 - vBuy24hChangePercent: - type: number - description: 24h change in buy volume (percent) - example: 36.83966474310746 - vSell24h: - type: number - description: 24h sell volume (token units) - example: 1188766706720.8232 - vSell24hUSD: - type: number - description: 24h sell volume in USD - example: 33976168.367765576 - vSellHistory24h: - type: number - description: Previous 24h sell volume (token units) - example: 922952067941.0695 - vSellHistory24hUSD: - type: number - description: Previous 24h sell volume in USD - example: 24613163.592375275 - vSell24hChangePercent: + wild_card_split: + type: object + additionalProperties: + type: integer + supporter: + required: + - amount + - rank + - sender + type: object + properties: + rank: + type: integer + amount: + type: string + sender: + $ref: '#/components/schemas/user' + decoded_user_token: + required: + - apiKey + - email + - handle + - iat + - name + - sub + - userId + - verified + type: object + properties: + apiKey: + type: string + userId: + type: string + email: + type: string + name: + type: string + handle: + type: string + verified: + type: boolean + profilePicture: + $ref: '#/components/schemas/profilePicture' + sub: + type: string + iat: + type: string + user_coin_account: + type: object + required: + - account + - owner + - balance + - balance_usd + - is_in_app_wallet + properties: + account: + type: string + description: The token account address + example: CTyFguG69kwYrzk24P3UuBvY1rR5atu9kf2S6XEwAU8X + owner: + type: string + description: The owner wallet of the token account + example: HzZ3EKACbH6XEHs59Rt1adVzUKv5cTDE9o9YWFaMhwpF + balance: + type: integer + description: The balance of the coin in the user's account (in wei) + example: 1000000000 + balance_usd: type: number - description: 24h change in sell volume (percent) - example: 28.800481413161105 - numberMarkets: + description: The balance of the coin in the user's account in USD + example: 1.23 + is_in_app_wallet: + type: boolean + description: Whether the account is in the user's in-app wallet + example: true + profilePicture: + type: object + properties: + 150x150: + type: string + 480x480: + type: string + 1000x1000: + type: string + sales_json_content: + type: object + properties: + sales: + type: array + items: + $ref: '#/components/schemas/sale_json' + tip: + required: + - amount + - created_at + - followee_supporters + - receiver + - sender + - slot + - tx_signature + type: object + properties: + amount: + type: string + sender: + $ref: '#/components/schemas/user' + receiver: + $ref: '#/components/schemas/user' + created_at: + type: string + slot: + type: integer + followee_supporters: + type: array + items: + $ref: '#/components/schemas/supporter_reference' + tx_signature: + type: string + track_id: + required: + - id + type: object + properties: + id: + type: string + user_coin: + required: + - mint + - ticker + - decimals + - owner_id + - balance + - has_discord + - balance_usd + type: object + properties: + mint: + type: string + description: The coin mint address + example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM + ticker: + type: string + description: The coin symbol + example: $AUDIO + decimals: + type: integer + description: The number of decimals for the coin + example: 8 + owner_id: + type: string + description: The ID of the user associated with the coin + example: 7eP5n + logo_uri: + type: string + nullable: true + description: URL to the coin's logo image + example: https://example.com/logo.png + banner_image_url: + type: string + nullable: true + description: URL to the coin's banner image + example: https://example.com/banner.png + has_discord: + type: boolean + description: Whether the coin has a Discord server + example: true + balance: type: integer - description: Number of markets the token is traded on - example: 317 - totalVolume: + description: The balance of the coin in the user's account (in wei) + example: 1000000000 + balance_usd: type: number - description: Total volume of coin traded (all time) - example: 158766463.26959822 - totalVolumeUSD: + description: The balance of the coin in the user's account in USD + example: 1.23 + track_feed_item: + required: + - item + - type + type: object + properties: + type: + type: string + item: + $ref: '#/components/schemas/track' + remix: + required: + - has_remix_author_reposted + - has_remix_author_saved + - parent_track_id + - user + type: object + properties: + parent_track_id: + type: string + user: + $ref: '#/components/schemas/user' + has_remix_author_reposted: + type: boolean + has_remix_author_saved: + type: boolean + account_collection: + required: + - id + - is_album + - name + - permalink + - user + type: object + properties: + id: + type: string + is_album: + type: boolean + name: + type: string + permalink: + type: string + user: + $ref: '#/components/schemas/account_collection_user' + playlist_update: + required: + - playlist_id + - updated_at + type: object + properties: + playlist_id: + type: string + updated_at: + type: integer + last_seen_at: + type: integer + supporter_reference: + required: + - user_id + type: object + properties: + user_id: + type: string + notification: + oneOf: + - $ref: '#/components/schemas/follow_notification' + - $ref: '#/components/schemas/save_notification' + - $ref: '#/components/schemas/repost_notification' + - $ref: '#/components/schemas/repost_of_repost_notification' + - $ref: '#/components/schemas/save_of_repost_notification' + - $ref: '#/components/schemas/tastemaker_notification' + - $ref: '#/components/schemas/remix_notification' + - $ref: '#/components/schemas/cosign_notification' + - $ref: '#/components/schemas/create_notification' + - $ref: '#/components/schemas/send_tip_notification' + - $ref: '#/components/schemas/receive_tip_notification' + - $ref: '#/components/schemas/supporter_dethroned_notification' + - $ref: '#/components/schemas/supporter_rank_up_notification' + - $ref: '#/components/schemas/supporter_rank_up_notification' + - $ref: '#/components/schemas/challenge_reward_notification' + - $ref: '#/components/schemas/claimable_reward_notification' + - $ref: '#/components/schemas/reaction_notification' + - $ref: '#/components/schemas/milestone_notification' + - $ref: '#/components/schemas/tier_change_notification' + - $ref: '#/components/schemas/track_added_to_playlist_notification' + - $ref: '#/components/schemas/track_added_to_purchased_album_notification' + - $ref: '#/components/schemas/usdc_purchase_seller_notification' + - $ref: '#/components/schemas/usdc_purchase_buyer_notification' + - $ref: '#/components/schemas/request_manager_notification' + - $ref: '#/components/schemas/approve_manager_request_notification' + - $ref: '#/components/schemas/trending_notification' + - $ref: '#/components/schemas/trending_playlist_notification' + - $ref: '#/components/schemas/trending_underground_notification' + - $ref: '#/components/schemas/announcement_notification' + - $ref: '#/components/schemas/comment_notification' + - $ref: '#/components/schemas/comment_thread_notification' + - $ref: '#/components/schemas/comment_mention_notification' + - $ref: '#/components/schemas/comment_reaction_notification' + - $ref: '#/components/schemas/listen_streak_reminder_notification' + - $ref: '#/components/schemas/fan_remix_contest_started_notification' + - $ref: '#/components/schemas/fan_remix_contest_ended_notification' + - $ref: '#/components/schemas/fan_remix_contest_ending_soon_notification' + - $ref: '#/components/schemas/artist_remix_contest_ended_notification' + - $ref: '#/components/schemas/artist_remix_contest_ending_soon_notification' + - $ref: '#/components/schemas/artist_remix_contest_submissions_notification' + - $ref: '#/components/schemas/fan_remix_contest_winners_selected_notification' + discriminator: + propertyName: type + mapping: + follow: '#/components/schemas/follow_notification' + save: '#/components/schemas/save_notification' + repost: '#/components/schemas/repost_notification' + repost_of_repost: '#/components/schemas/repost_of_repost_notification' + save_of_repost: '#/components/schemas/save_of_repost_notification' + tastemaker: '#/components/schemas/tastemaker_notification' + remix: '#/components/schemas/remix_notification' + cosign: '#/components/schemas/cosign_notification' + create: '#/components/schemas/create_notification' + tip_send: '#/components/schemas/send_tip_notification' + tip_receive: '#/components/schemas/receive_tip_notification' + supporter_dethroned: '#/components/schemas/supporter_dethroned_notification' + supporter_rank_up: '#/components/schemas/supporter_rank_up_notification' + supporting_rank_up: '#/components/schemas/supporter_rank_up_notification' + challenge_reward: '#/components/schemas/challenge_reward_notification' + claimable_reward: '#/components/schemas/claimable_reward_notification' + reaction: '#/components/schemas/reaction_notification' + milestone: '#/components/schemas/milestone_notification' + tier_change: '#/components/schemas/tier_change_notification' + track_added_to_playlist: '#/components/schemas/track_added_to_playlist_notification' + track_added_to_purchased_album: '#/components/schemas/track_added_to_purchased_album_notification' + usdc_purchase_seller: '#/components/schemas/usdc_purchase_seller_notification' + usdc_purchase_buyer: '#/components/schemas/usdc_purchase_buyer_notification' + request_manager: '#/components/schemas/request_manager_notification' + approve_manager_request: '#/components/schemas/approve_manager_request_notification' + trending: '#/components/schemas/trending_notification' + trending_playlist: '#/components/schemas/trending_playlist_notification' + trending_underground: '#/components/schemas/trending_underground_notification' + announcement: '#/components/schemas/announcement_notification' + comment: '#/components/schemas/comment_notification' + comment_thread: '#/components/schemas/comment_thread_notification' + comment_mention: '#/components/schemas/comment_mention_notification' + comment_reaction: '#/components/schemas/comment_reaction_notification' + listen_streak_reminder: '#/components/schemas/listen_streak_reminder_notification' + fan_remix_contest_started: '#/components/schemas/fan_remix_contest_started_notification' + fan_remix_contest_ended: '#/components/schemas/fan_remix_contest_ended_notification' + fan_remix_contest_ending_soon: '#/components/schemas/fan_remix_contest_ending_soon_notification' + artist_remix_contest_ended: '#/components/schemas/artist_remix_contest_ended_notification' + artist_remix_contest_ending_soon: '#/components/schemas/artist_remix_contest_ending_soon_notification' + artist_remix_contest_submissions: '#/components/schemas/artist_remix_contest_submissions_notification' + fan_remix_contest_winners_selected: '#/components/schemas/fan_remix_contest_winners_selected_notification' + save_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/save_notification_action' + sale_json: + type: object + properties: + title: + type: string + description: Title of the content (track/album/playlist) + link: + type: string + description: URL link to the content + purchased_by: + type: string + description: Name of the buyer + buyer_user_id: + type: integer + description: User ID of the buyer + date: + type: string + description: ISO format date string of when the sale occurred + sale_price: type: number - description: Total volume of coin traded in USD (all time) - example: 20188521260.405678 - volumeBuy: + description: Base sale price in USDC + network_fee: type: number - description: Total volume bought (all time) - example: 78227859.16098201 - volumeBuyUSD: + description: Network fee deducted from sale in USDC + pay_extra: type: number - description: Total volume bought in USD (all time) - example: 20188521260.405678 - volumeSell: + description: Extra amount paid by buyer in USDC + total: type: number - description: Total volume sold (all time) - example: 80538604.1086162 - volumeSellUSD: + description: Total amount received by seller in USDC + country: + type: string + description: Country code where purchase was made + encrypted_email: + type: string + description: Encrypted email of buyer if available + encrypted_key: + type: string + description: Encrypted key for decrypting the buyer's email + is_initial: + type: boolean + description: Whether this is an initial encryption from the backfill + pubkey_base64: + type: string + description: Base64 encoded public key of the buyer + playlist_feed_item: + required: + - item + - type + type: object + properties: + type: + type: string + item: + $ref: '#/components/schemas/playlist' + playlist_library_playlist_identifier: + type: object + description: Reference to a playlist + required: + - type + - playlist_id + properties: + type: + type: string + enum: + - playlist + playlist_id: + type: integer + description: Playlist ID + example: 1234 + extended_payment_split: + required: + - amount + - payout_wallet + - percentage + type: object + properties: + user_id: + type: integer + example: 1234 + percentage: type: number - description: Total volume sold in USD (all time) - example: 20188521260.405678 - totalTrade: + eth_wallet: + type: string + payout_wallet: + type: string + amount: type: integer - description: Total number of trades (all time) - example: 258522892 - buy: + fan_remix_contest_ended_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: type: integer - description: Total number of buys (all time) - example: 87829497 - sell: + actions: + type: array + items: + $ref: '#/components/schemas/fan_remix_contest_ended_notification_action' + fan_remix_contest_winners_selected_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: type: integer - description: Total number of sells (all time) - example: 170693395 - dynamicBondingCurve: - type: object - description: Information about the dynamic bonding curve if one exists for the Coin - required: - - address - - price - - priceUSD - - curveProgress - - creatorQuoteFee - - totalTradingQuoteFee - - creatorWalletAddress - properties: - address: - type: string - description: Address of the bonding curve pool - example: "2AAsAwNPTNBk5N466xyPiwqdgbc5WLbDTdnn9gVuDKaN" - price: - type: number - description: Current price in the pool's quote token (e.g., AUDIO) - example: 0.0028402095736478586927 - priceUSD: - type: number - description: Current price in USD - example: 0.000029571022098881748 - curveProgress: - type: number - description: Progress along the bonding curve (0.0 - 1.0) - example: 0.75 - isMigrated: - type: boolean - description: Whether the bonding curve has been migrated - example: false - creatorQuoteFee: - type: number - description: Creator quote fee for the bonding curve - example: 0.05 - totalTradingQuoteFee: - type: number - description: Total trading quote fee accumulated - example: 0.001 - creatorWalletAddress: - type: string - description: Address of the pool creator's wallet - example: "2AAsAwNPTNBk5N466xyPiwqdgbc5WLbDTdnn9gVuDKaN" - coin_insights_response: + actions: + type: array + items: + $ref: '#/components/schemas/fan_remix_contest_winners_selected_notification_action' + tier_change_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/tier_change_notification_action' + cosign_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/cosign_notification_action' + comment_reaction_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/comment_reaction_notification_action' + approve_manager_request_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/approve_manager_request_notification_action' + fan_remix_contest_ended_notification_action: + required: + - data + - specifier + - timestamp + - type type: object properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer data: - $ref: "#/components/schemas/coin_insights" - coin_member: + $ref: '#/components/schemas/fan_remix_contest_ended_notification_action_data' + monthly_aggregate_play: type: object - required: - - balance - - user_id properties: - balance: + totalListens: type: integer - description: The user's balance of the specific coin (in wei) - example: 100000 - user_id: + trackIds: + type: array + items: + type: integer + listenCounts: + type: array + items: + $ref: '#/components/schemas/listen_count' + save_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - description: The ID of the user with a non-zero balance - example: "7eP5n" - coin_members_response: + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/save_notification_action_data' + save_of_repost_notification: + required: + - actions + - group_id + - is_seen + - type type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/save_of_repost_notification_action' + approve_manager_request_notification_action: required: - - data + - data + - specifier + - timestamp + - type + type: object properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer data: + $ref: '#/components/schemas/approve_manager_request_notification_action_data' + comment_mention_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: type: array items: - $ref: "#/components/schemas/coin_member" - coin_members_count_response: + $ref: '#/components/schemas/comment_mention_notification_action' + fan_remix_contest_ended_notification_action_data: + required: + - entity_id + - entity_user_id + type: object + properties: + entity_user_id: + type: string + entity_id: + type: string + playlist_library_folder: + type: object + description: Folder containing nested playlists and folders + required: + - id + - type + - name + - contents + properties: + id: + type: string + description: Unique folder identifier + type: + type: string + enum: + - folder + name: + type: string + description: Folder name + contents: + type: array + description: Nested folders and playlist identifiers + items: + oneOf: + - $ref: '#/components/schemas/playlist_library_folder' + - $ref: '#/components/schemas/playlist_library_playlist_identifier' + - $ref: '#/components/schemas/playlist_library_explore_playlist_identifier' + playlist_library_explore_playlist_identifier: + type: object + description: Reference to an explore playlist + required: + - type + - playlist_id + properties: + type: + type: string + enum: + - explore_playlist + playlist_id: + type: string + description: Explore playlist identifier + send_tip_notification: + required: + - actions + - group_id + - is_seen + - type type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/send_tip_notification_action' + comment_reaction_notification_action: required: - - data + - data + - specifier + - timestamp + - type + type: object properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer data: + $ref: '#/components/schemas/comment_reaction_notification_action_data' + comment_thread_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: type: integer - description: The total number of users with a non-zero balance of the specific coin - example: 42 - coins_volume_leaders_response: + actions: + type: array + items: + $ref: '#/components/schemas/comment_thread_notification_action' + reaction_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/reaction_notification_action' + account_collection_user: + required: + - handle + - id type: object + properties: + id: + type: string + handle: + type: string + is_deactivated: + type: boolean + remix_notification: required: - - data + - actions + - group_id + - is_seen + - type + type: object properties: - data: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: type: array items: - type: object - required: - - address - - volume - properties: - address: - type: string - volume: - type: number - user: - $ref: "#/components/schemas/user" - user_coin: + $ref: '#/components/schemas/remix_notification_action' + cosign_notification_action: required: - - mint - - ticker - - decimals - - owner_id - - balance - - has_discord - - balance_usd + - data + - specifier + - timestamp + - type type: object properties: - mint: + specifier: type: string - description: The coin mint address - example: "9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM" - ticker: + type: type: string - description: The coin symbol - example: "$AUDIO" - decimals: + timestamp: type: integer - description: The number of decimals for the coin - example: 8 - owner_id: + data: + $ref: '#/components/schemas/cosign_notification_action_data' + announcement_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: type: string - description: The ID of the user associated with the coin - example: "7eP5n" - logo_uri: + group_id: type: string - nullable: true - description: URL to the coin's logo image - example: "https://example.com/logo.png" - banner_image_url: + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/announcement_notification_action' + listen_streak_reminder_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: type: string - nullable: true - description: URL to the coin's banner image - example: "https://example.com/banner.png" - has_discord: + group_id: + type: string + is_seen: type: boolean - description: Whether the coin has a Discord server - example: true - balance: + seen_at: type: integer - description: The balance of the coin in the user's account (in wei) - example: 1000000000 - balance_usd: - type: number - description: The balance of the coin in the user's account in USD - example: 1.23 - user_coins_response: + actions: + type: array + items: + $ref: '#/components/schemas/listen_streak_reminder_notification_action' + comment_thread_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/comment_thread_notification_action_data' + fan_remix_contest_winners_selected_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/fan_remix_contest_winners_selected_notification_action_data' + send_tip_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/send_tip_notification_action_data' + supporter_dethroned_notification: + required: + - actions + - group_id + - is_seen + - type type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/supporter_dethroned_notification_action' + reaction_notification_action: required: - - data + - data + - specifier + - timestamp + - type + type: object properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer data: + $ref: '#/components/schemas/reaction_notification_action_data' + receive_tip_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: type: array items: - $ref: "#/components/schemas/user_coin" - user_coin_with_accounts: - type: object + $ref: '#/components/schemas/receive_tip_notification_action' + tastemaker_notification: required: - - mint - - ticker - - decimals - - balance - - balance_usd - - accounts + - actions + - group_id + - is_seen + - type + type: object properties: - mint: - type: string - description: The coin mint address - example: "9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM" - ticker: + type: type: string - description: The coin symbol - example: "$AUDIO" - decimals: - type: integer - description: The number of decimals for the coin - example: 8 - logo_uri: + group_id: type: string - nullable: true - description: URL to the coin's logo image - example: "https://example.com/logo.png" - balance: + is_seen: + type: boolean + seen_at: type: integer - description: The total balance of the coin in the user's account (in wei) - example: 1000000000 - balance_usd: - type: number - description: The total balance of the coin in the user's account in USD - example: 1.23 - accounts: + actions: type: array items: - $ref: "#/components/schemas/user_coin_account" - user_coin_account: - type: object + $ref: '#/components/schemas/tastemaker_notification_action' + track_added_to_purchased_album_notification: required: - - account - - owner - - balance - - balance_usd - - is_in_app_wallet + - actions + - group_id + - is_seen + - type + type: object properties: - account: + type: type: string - description: The token account address - example: "CTyFguG69kwYrzk24P3UuBvY1rR5atu9kf2S6XEwAU8X" - owner: + group_id: type: string - description: The owner wallet of the token account - example: "HzZ3EKACbH6XEHs59Rt1adVzUKv5cTDE9o9YWFaMhwpF" - balance: - type: integer - description: The balance of the coin in the user's account (in wei) - example: 1000000000 - balance_usd: - type: number - description: The balance of the coin in the user's account in USD - example: 1.23 - is_in_app_wallet: + is_seen: type: boolean - description: Whether the account is in the user's in-app wallet - example: true - user_coin_response: - type: object - properties: - data: - $ref: "#/components/schemas/user_coin_with_accounts" - balance_history_response: - type: object + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/track_added_to_purchased_album_notification_action' + track_added_to_playlist_notification: required: - - data + - actions + - group_id + - is_seen + - type + type: object properties: - data: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: type: array items: - $ref: "#/components/schemas/balance_history_data_point" - balance_history_data_point: - type: object + $ref: '#/components/schemas/track_added_to_playlist_notification_action' + receive_tip_notification_action: required: - - timestamp - - balance_usd + - data + - specifier + - timestamp + - type + type: object properties: + specifier: + type: string + type: + type: string timestamp: type: integer - format: int64 - description: Unix timestamp in seconds - example: 1704067200 - balance_usd: - type: number - format: double - description: Total portfolio balance in USD at this timestamp - example: 1234.56 - claim_rewards_response: - type: object + data: + $ref: '#/components/schemas/receive_tip_notification_action_data' + trending_underground_notification: required: - - data + - actions + - group_id + - is_seen + - type + type: object properties: - data: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: type: array items: - type: object - required: - - challengeId - - specifier - properties: - challengeId: - type: string - description: The challenge ID - example: "u" - specifier: - type: string - description: The challenge specifier - example: "7eP5n" - amount: - type: string - description: The reward amount - example: "1000000000" - signatures: - type: array - items: - type: string - description: Transaction signatures - example: - [ - "5j7s1QjmRKFuDbCWMRVRNibSV2VAAEcNKP6HWU7GwPdXkBZvhz8n4vQl7bBq8tN4Rz9x1Kj3mP5wQ8rT2Y6zA", - ] - error: - type: string - description: Error message if claim failed - example: "Insufficient balance" - claim_rewards_request_body: + $ref: '#/components/schemas/trending_underground_notification_action' + listen_count: type: object + properties: + trackId: + type: integer + date: + type: string + listens: + type: integer + cosign_notification_action_data: required: - - userId + - parent_track_id + - track_id + - track_owner_id + type: object properties: - challengeId: + parent_track_id: type: string - description: The challenge ID to filter rewards (optional) - example: "u" - specifier: + track_id: type: string - description: The specifier to filter rewards (optional) - example: "7eP5n" - userId: + track_owner_id: type: string - description: The user ID to claim rewards for - example: "7eP5n" - redeem_amount_response: - type: object + receive_tip_notification_action_data: required: - - amount + - amount + - reaction_value + - receiver_user_id + - sender_user_id + - tip_tx_signature + type: object properties: amount: + type: string + sender_user_id: + type: string + receiver_user_id: + type: string + tip_tx_signature: + type: string + reaction_value: type: integer - description: Static amount indicator (always 1) - example: 1 - reward_code_response: - type: object + challenge_reward_notification: required: - - code - - amount + - actions + - group_id + - is_seen + - type + type: object properties: - code: + type: type: string - description: The reward code - example: "XYZ123" - amount: + group_id: + type: string + is_seen: + type: boolean + seen_at: type: integer - description: The amount of coins rewarded by this code - example: 100 - reward_code_error_response: + actions: + type: array + items: + $ref: '#/components/schemas/challenge_reward_notification_action' + usdc_purchase_seller_notification: + required: + - actions + - group_id + - is_seen + - type type: object properties: - error: + type: type: string - description: Error message indicating why the code cannot be redeemed - example: "used" - enum: - - used - - invalid - create_reward_code_request_body: - type: object + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/usdc_purchase_seller_notification_action' + supporter_rank_up_notification: required: - - signature - - mint - - amount + - actions + - group_id + - is_seen + - type + type: object properties: - signature: + type: type: string - description: Base64-encoded Solana Ed25519 signature of the string "code" - example: "3fG7xQh2L8vK9pN4mR5sT6uW7vX8yZ1aB2cD3eF4gH5iJ6kL7mN8oP9qR0sT1uV2wX3yZ4aB5cD6eF7gH8iJ9k=" - mint: + group_id: type: string - description: The coin mint address - example: "9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM" - amount: + is_seen: + type: boolean + seen_at: type: integer - description: The reward amount (must be greater than 0) - minimum: 1 - example: 100 - create_reward_code_response: - type: object + actions: + type: array + items: + $ref: '#/components/schemas/supporter_rank_up_notification_action' + fan_remix_contest_started_notification: required: - - code - - mint - - reward_address - - amount + - actions + - group_id + - is_seen + - type + type: object properties: - code: - type: string - description: The generated 6-character alphanumeric reward code - example: "aB3d5F" - mint: + type: type: string - description: The coin mint address - example: "9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM" - reward_address: + group_id: type: string - description: The reward address (authorized public key) - example: "9XeZbswbSSUU4AHVArQbTQjAEjAPhVweGU5cogBVkvh4" - amount: + is_seen: + type: boolean + seen_at: type: integer - description: The reward amount - example: 100 - prize_claim_request_body: - type: object + actions: + type: array + items: + $ref: '#/components/schemas/fan_remix_contest_started_notification_action' + track_added_to_purchased_album_notification_action: required: - - signature - - wallet + - data + - specifier + - timestamp + - type + type: object properties: - signature: + specifier: type: string - description: The Solana transaction signature for the 2 YAK payment - example: "5j7s1QjmRKFuDbCWMRVRNibSV2VAAEcNKP6HWU7GwPdXkBZvhz8n4vQl7bBq8tN4Rz9x1Kj3mP5wQ8rT2Y6zA" - wallet: + type: type: string - description: The wallet address that sent the transaction - example: "HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC" - prize_claim_response: - type: object + timestamp: + type: integer + data: + $ref: '#/components/schemas/track_added_to_purchased_album_notification_action_data' + remix_notification_action: required: - - prize_id - - prize_name - - wallet + - data + - specifier + - timestamp + - type + type: object properties: - prize_id: + specifier: type: string - description: The unique identifier of the prize won - example: "prize_1_yak_airdrop" - prize_name: + type: type: string - description: The name of the prize won - example: "1 YAK Airdrop" - wallet: + timestamp: + type: integer + data: + $ref: '#/components/schemas/remix_notification_action_data' + request_manager_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: type: string - description: The wallet address that claimed the prize - example: "HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC" - prize_type: + group_id: type: string - description: The type of prize (e.g., "coin_airdrop", "download") - example: "coin_airdrop" - action_data: - type: object - description: Prize-specific action data (e.g., redeem code/URL for coin airdrops, download URL for downloads) - additionalProperties: true - example: - code: "aB3d5F" - url: "/coins/YAK/redeem/aB3d5F" - prize_public: - type: object + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/request_manager_notification_action' + comment_notification: required: - - prize_id - - name - - weight + - actions + - group_id + - is_seen + - type + type: object properties: - prize_id: - type: string - description: The unique identifier of the prize - example: "prize_1_yak_airdrop" - name: + type: type: string - description: The name of the prize - example: "1 YAK Airdrop" - description: + group_id: type: string - description: Description of the prize - example: "Win 1 YAK coin airdrop" - weight: + is_seen: + type: boolean + seen_at: type: integer - description: Weight for random selection (higher = more likely) - example: 1 - metadata: - type: object - description: Sanitized metadata (excludes sensitive URLs) - additionalProperties: true - example: - type: "coin_airdrop" - amount: 1000000000 - prizes_response: - type: object + actions: + type: array + items: + $ref: '#/components/schemas/comment_notification_action' + claimable_reward_notification: required: - - data + - actions + - group_id + - is_seen + - type + type: object properties: - data: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: type: array items: - $ref: "#/components/schemas/prize_public" - description: List of active prizes available for claiming - claimed_prize: - type: object + $ref: '#/components/schemas/claimable_reward_notification_action' + create_notification: required: - - id - - wallet - - signature - - mint - - amount - - prize_id - - prize_name - - created_at + - actions + - group_id + - is_seen + - type + type: object properties: - id: - type: integer - description: The unique identifier of the claimed prize record - example: 1 - wallet: - type: string - description: The wallet address that claimed the prize - example: "HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC" - signature: + type: type: string - description: The transaction signature used to claim the prize - example: "5j7s1QjmRKFuDbCWMRVRNibSV2VAAEcNKP6HWU7GwPdXkBZvhz8n4vQl7bBq8tN4Rz9x1Kj3mP5wQ8rT2Y6zA" - mint: + group_id: type: string - description: The coin mint address used for the claim - example: "ZDaUDL4XFdEct7UgeztrFQAptsvh4ZdhyZDZ1RpxYAK" - amount: + is_seen: + type: boolean + seen_at: type: integer - description: The amount paid to claim the prize (in smallest unit, e.g., lamports) - example: 2000000000 - prize_id: + actions: + type: array + items: + $ref: '#/components/schemas/create_notification_action' + milestone_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: type: string - description: The unique identifier of the prize won - example: "prize_1_yak_airdrop" - prize_name: + group_id: type: string - description: The name of the prize won - example: "1 YAK Airdrop" - prize_type: + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/milestone_notification_action' + fan_remix_contest_ending_soon_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: type: string - description: The type of prize (e.g., "coin_airdrop", "download") - example: "coin_airdrop" - created_at: + group_id: type: string - format: date-time - description: When the prize was claimed - example: "2024-01-15T10:30:00Z" - claimed_prizes_response: - type: object + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/fan_remix_contest_ending_soon_notification_action' + trending_notification: required: - - data + - actions + - group_id + - is_seen + - type + type: object properties: - data: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: type: array items: - $ref: "#/components/schemas/claimed_prize" - description: List of claimed prizes for the wallet (action_data excluded for security) - write_response: + $ref: '#/components/schemas/trending_notification_action' + tastemaker_notification_action: + required: + - data + - specifier + - timestamp + - type type: object properties: - success: - type: boolean - description: Whether the operation was successful - transaction_hash: + specifier: type: string - description: The blockchain transaction hash - create_track_response: + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/tastemaker_notification_action_data' + comment_mention_notification_action: + required: + - data + - specifier + - timestamp + - type type: object properties: - success: - type: boolean - description: Whether the track was created successfully - transaction_hash: + specifier: type: string - description: The blockchain transaction hash - track_id: + type: type: string - description: The ID of the created track - create_playlist_response: + timestamp: + type: integer + data: + $ref: '#/components/schemas/comment_mention_notification_action_data' + claimable_reward_notification_action: + required: + - data + - specifier + - timestamp + - type type: object properties: - success: - type: boolean - description: Whether the playlist was created successfully - transaction_hash: + specifier: type: string - description: The blockchain transaction hash - playlist_id: + type: type: string - description: The ID of the created playlist - create_user_response: + timestamp: + type: integer + data: + $ref: '#/components/schemas/claimable_reward_notification_action_data' + announcement_notification_action: + required: + - data + - specifier + - timestamp + - type type: object properties: - success: - type: boolean - description: Whether the user was created successfully - transaction_hash: + specifier: type: string - description: The blockchain transaction hash - user_id: + type: type: string - description: The ID of the created user - create_comment_response: + timestamp: + type: integer + data: + $ref: '#/components/schemas/announcement_notification_action_data' + usdc_purchase_seller_notification_action: + required: + - data + - specifier + - timestamp + - type type: object properties: - success: - type: boolean - description: Whether the comment was created successfully - transaction_hash: + specifier: type: string - description: The blockchain transaction hash - comment_id: + type: type: string - description: The ID of the created comment - create_track_request_body: + timestamp: + type: integer + data: + $ref: '#/components/schemas/usdc_purchase_seller_notification_action_data' + fan_remix_contest_winners_selected_notification_action_data: + required: + - entity_id + - entity_user_id type: object + properties: + entity_user_id: + type: string + entity_id: + type: string + trending_notification_action: required: - - title - - genre - - track_cid + - data + - specifier + - timestamp + - type + type: object properties: - track_id: + specifier: type: string - description: Optional track ID (will be generated if not provided) - example: "x5pJ3Az" - title: + type: type: string - description: Track title - example: "My New Track" - genre: - $ref: "#/components/schemas/genre" - description: + timestamp: + type: integer + data: + $ref: '#/components/schemas/trending_notification_action_data' + request_manager_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - nullable: true - description: Track description - maxLength: 1000 - mood: - nullable: true - allOf: - - $ref: "#/components/schemas/mood" - bpm: - type: number - nullable: true - description: Beats per minute (tempo) - musical_key: + type: type: string - nullable: true - description: Musical key of the track - tags: + timestamp: + type: integer + data: + $ref: '#/components/schemas/request_manager_notification_action_data' + repost_of_repost_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: type: string - nullable: true - description: Comma-separated tags - license: + group_id: type: string - nullable: true - description: License type - isrc: + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/repost_of_repost_notification_action' + trending_playlist_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: type: string - nullable: true - description: International Standard Recording Code - iswc: + group_id: type: string - nullable: true - description: International Standard Musical Work Code - release_date: + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/trending_playlist_notification_action' + follow_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: type: string - format: date - description: Release date - track_cid: + group_id: type: string - description: IPFS CID for the track audio file (required) - orig_file_cid: + is_seen: + type: boolean + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/follow_notification_action' + comment_thread_notification_action_data: + required: + - comment_user_id + - entity_id + - entity_user_id + - type + type: object + properties: + type: type: string - description: IPFS CID for the original track file - orig_filename: + example: Track + enum: + - Track + - Playlist + - Album + entity_id: type: string - description: Original filename of the track - cover_art_cid: + entity_user_id: type: string - description: IPFS CID for cover art - cover_art_sizes: + comment_user_id: type: string - description: Cover art sizes metadata - preview_cid: + comment_id: type: string - description: IPFS CID for the track preview - preview_start_seconds: - type: number - format: float - description: Preview start time in seconds - minimum: 0 - duration: - type: number - format: float - description: Track duration in seconds - minimum: 0 - is_downloadable: - type: boolean - description: Whether the track is downloadable - is_unlisted: - type: boolean - description: Whether the track is unlisted - is_stream_gated: - type: boolean - nullable: true - description: Whether streaming is restricted behind an access gate - stream_conditions: - nullable: true - allOf: - - $ref: "#/components/schemas/access_gate" - download_conditions: - nullable: true - allOf: - - $ref: "#/components/schemas/access_gate" - field_visibility: - $ref: "#/components/schemas/field_visibility" - placement_hosts: + create_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - description: Placement hosts for the track - stem_of: - $ref: "#/components/schemas/stem_parent" - remix_of: - $ref: "#/components/schemas/remix_parent_write" - ddex_app: + type: type: string - nullable: true - description: DDEX application identifier - ddex_release_ids: - type: object - nullable: true - description: DDEX release identifiers - artists: + timestamp: + type: integer + data: + $ref: '#/components/schemas/create_notification_action_data' + trending_underground_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/trending_underground_notification_action_data' + repost_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: type: array - nullable: true items: - type: object - description: DDEX resource contributors / artists - resource_contributors: + $ref: '#/components/schemas/repost_notification_action' + artist_remix_contest_submissions_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: type: array - nullable: true items: - type: object - description: DDEX resource contributors - indirect_resource_contributors: + $ref: '#/components/schemas/artist_remix_contest_submissions_notification_action' + artist_remix_contest_ending_soon_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: + type: boolean + seen_at: + type: integer + actions: type: array - nullable: true items: - type: object - description: DDEX indirect resource contributors - rights_controller: - type: object - nullable: true - description: DDEX rights controller - copyright_line: - type: object - nullable: true - description: DDEX copyright line - producer_copyright_line: - type: object - nullable: true - description: DDEX producer copyright line - parental_warning_type: - type: string - nullable: true - description: Parental warning type - cover_original_song_title: + $ref: '#/components/schemas/artist_remix_contest_ending_soon_notification_action' + usdc_purchase_buyer_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: type: string - nullable: true - description: Original song title for cover tracks - cover_original_artist: + group_id: type: string - nullable: true - description: Original artist for cover tracks - is_owned_by_user: + is_seen: type: boolean - description: Whether the track is owned by the user - territory_codes: + seen_at: + type: integer + actions: type: array - nullable: true items: - type: string - description: Territory codes for distribution - no_ai_use: + $ref: '#/components/schemas/usdc_purchase_buyer_notification_action' + artist_remix_contest_ended_notification: + required: + - actions + - group_id + - is_seen + - type + type: object + properties: + type: + type: string + group_id: + type: string + is_seen: type: boolean - description: Whether AI use is prohibited - update_track_request_body: + seen_at: + type: integer + actions: + type: array + items: + $ref: '#/components/schemas/artist_remix_contest_ended_notification_action' + approve_manager_request_notification_action_data: + required: + - grantee_address + - grantee_user_id + - user_id type: object - description: Request body for updating track information. All fields are optional. properties: - title: + user_id: type: string - description: Track title - genre: - $ref: "#/components/schemas/genre" - description: + grantee_user_id: type: string - nullable: true - description: Track description - maxLength: 1000 - mood: - nullable: true - allOf: - - $ref: "#/components/schemas/mood" - bpm: - type: number - nullable: true - description: Beats per minute (tempo) - musical_key: + grantee_address: type: string - nullable: true - description: Musical key of the track - tags: + save_of_repost_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - nullable: true - description: Comma-separated tags - license: + type: type: string - nullable: true - description: License type - isrc: + timestamp: + type: integer + data: + $ref: '#/components/schemas/save_of_repost_notification_action_data' + supporter_dethroned_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - nullable: true - description: International Standard Recording Code - iswc: + type: type: string - nullable: true - description: International Standard Musical Work Code - release_date: + timestamp: + type: integer + data: + $ref: '#/components/schemas/supporter_dethroned_notification_action_data' + claimable_reward_notification_action_data: + required: + - amount + - challenge_id + - specifier + type: object + properties: + amount: type: string - format: date - description: Release date - track_cid: + specifier: type: string - description: IPFS CID for the track audio file - orig_file_cid: + challenge_id: type: string - description: IPFS CID for the original track file - orig_filename: + save_notification_action_data: + required: + - save_item_id + - type + - user_id + type: object + properties: + type: type: string - description: Original filename of the track - cover_art_cid: + example: track + enum: + - track + - playlist + - album + user_id: type: string - description: IPFS CID for cover art - cover_art_sizes: + save_item_id: type: string - description: Cover art sizes metadata - preview_cid: + tier_change_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - description: IPFS CID for the track preview - preview_start_seconds: - type: number - format: float - description: Preview start time in seconds - minimum: 0 - duration: - type: number - format: float - description: Track duration in seconds - minimum: 0 - is_downloadable: - type: boolean - description: Whether the track is downloadable - is_unlisted: - type: boolean - description: Whether the track is unlisted - is_stream_gated: - type: boolean - description: Whether streaming is restricted behind an access gate - stream_conditions: - nullable: true - allOf: - - $ref: "#/components/schemas/access_gate" - download_conditions: - nullable: true - allOf: - - $ref: "#/components/schemas/access_gate" - field_visibility: - $ref: "#/components/schemas/field_visibility" - placement_hosts: + type: type: string - description: Placement hosts for the track - stem_of: - $ref: "#/components/schemas/stem_parent" - remix_of: - $ref: "#/components/schemas/remix_parent_write" - ddex_app: + timestamp: + type: integer + data: + $ref: '#/components/schemas/tier_change_notification_action_data' + trending_underground_notification_action_data: + required: + - genre + - rank + - time_range + - track_id + type: object + properties: + rank: + type: integer + genre: type: string - nullable: true - description: DDEX application identifier - parental_warning_type: + track_id: type: string - nullable: true - description: Parental warning type - create_playlist_request_body: + time_range: + type: string + example: week + enum: + - week + - month + - year + challenge_reward_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/challenge_reward_notification_action_data' + artist_remix_contest_submissions_notification_action: + required: + - data + - specifier + - timestamp + - type type: object + properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/artist_remix_contest_submissions_notification_action_data' + create_notification_action_data: + oneOf: + - $ref: '#/components/schemas/create_playlist_notification_action_data' + - $ref: '#/components/schemas/create_track_notification_action_data' + tastemaker_notification_action_data: required: - - playlist_name + - action + - tastemaker_item_id + - tastemaker_item_owner_id + - tastemaker_item_type + - tastemaker_user_id + type: object properties: - playlist_id: + tastemaker_item_owner_id: type: string - description: Optional playlist ID (will be generated if not provided) - example: "x5pJ3Az" - playlist_name: + tastemaker_item_id: type: string - minLength: 1 - description: Playlist or album name - example: "My New Playlist" - description: + action: type: string - description: Playlist description - maxLength: 1000 - is_private: - type: boolean - description: Whether the playlist is private - is_album: - type: boolean - description: Whether this is an album - genre: - $ref: "#/components/schemas/genre" - mood: - allOf: - - $ref: "#/components/schemas/mood" - tags: + tastemaker_item_type: type: string - description: Comma-separated tags - license: + tastemaker_user_id: type: string - description: License type - upc: + tier_change_notification_action_data: + required: + - current_value + - new_tier + - new_tier_value + type: object + properties: + new_tier: type: string - description: Universal Product Code (for albums) - release_date: + current_value: type: string - format: date - description: Release date - cover_art_cid: + new_tier_value: + type: integer + remix_notification_action_data: + required: + - parent_track_id + - track_id + type: object + properties: + parent_track_id: type: string - description: IPFS CID for cover art - playlist_contents: - type: array - description: Array of tracks in the playlist - items: - $ref: "#/components/schemas/playlist_added_timestamp" - is_stream_gated: - type: boolean - nullable: true - description: Whether streaming is restricted behind an access gate - is_scheduled_release: - type: boolean - nullable: true - description: Whether the playlist/album is a scheduled release - stream_conditions: - nullable: true - allOf: - - $ref: "#/components/schemas/access_gate" - ddex_app: + track_id: type: string - description: DDEX application identifier - ddex_release_ids: - type: object - nullable: true - additionalProperties: - type: string - description: DDEX release identifiers - artists: - type: array - nullable: true - items: - $ref: "#/components/schemas/ddex_resource_contributor" - description: DDEX resource contributors / artists - copyright_line: - nullable: true - allOf: - - $ref: "#/components/schemas/ddex_copyright" - description: DDEX copyright line - producer_copyright_line: - nullable: true - allOf: - - $ref: "#/components/schemas/ddex_copyright" - description: DDEX producer copyright line - parental_warning_type: + artist_remix_contest_ended_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - nullable: true - description: Parental warning type - is_image_autogenerated: - type: boolean - nullable: true - description: Whether the image is autogenerated - update_playlist_request_body: + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/artist_remix_contest_ended_notification_action_data' + fan_remix_contest_ending_soon_notification_action: + required: + - data + - specifier + - timestamp + - type type: object - description: Request body for updating playlist information. All fields are optional. properties: - playlist_name: + specifier: type: string - minLength: 1 - description: Playlist or album name - description: + type: type: string - description: Playlist description - maxLength: 1000 - is_private: - type: boolean - description: Whether the playlist is private - is_album: - type: boolean - description: Whether this is an album - genre: - $ref: "#/components/schemas/genre" - mood: - allOf: - - $ref: "#/components/schemas/mood" - tags: + timestamp: + type: integer + data: + $ref: '#/components/schemas/fan_remix_contest_ending_soon_notification_action_data' + save_of_repost_notification_action_data: + required: + - save_of_repost_item_id + - type + - user_id + type: object + properties: + type: type: string - description: Comma-separated tags - license: + example: track + enum: + - track + - playlist + - album + user_id: type: string - description: License type - upc: + save_of_repost_item_id: type: string - description: Universal Product Code (for albums) - release_date: + reaction_notification_action_data: + required: + - reacted_to + - reaction_type + - reaction_value + - receiver_user_id + - sender_user_id + - sender_wallet + - tip_amount + type: object + properties: + reacted_to: type: string - format: date - description: Release date - cover_art_cid: + reaction_type: type: string - description: IPFS CID for cover art - playlist_contents: - type: array - description: Array of track IDs to include in the playlist - items: - $ref: "#/components/schemas/playlist_added_timestamp" - is_stream_gated: - type: boolean - nullable: true - description: Whether streaming is restricted behind an access gate - is_scheduled_release: - type: boolean - nullable: true - description: Whether the playlist/album is a scheduled release - stream_conditions: - nullable: true - allOf: - - $ref: "#/components/schemas/access_gate" - ddex_app: + reaction_value: + type: integer + receiver_user_id: type: string - description: DDEX application identifier - ddex_release_ids: - type: object - nullable: true - additionalProperties: - type: string - description: DDEX release identifiers - artists: - type: array - nullable: true - items: - $ref: "#/components/schemas/ddex_resource_contributor" - description: DDEX resource contributors / artists - copyright_line: - nullable: true - allOf: - - $ref: "#/components/schemas/ddex_copyright" - description: DDEX copyright line - producer_copyright_line: - nullable: true - allOf: - - $ref: "#/components/schemas/ddex_copyright" - description: DDEX producer copyright line - parental_warning_type: + sender_user_id: type: string - nullable: true - description: Parental warning type - is_image_autogenerated: - type: boolean - nullable: true - description: Whether the image is autogenerated - create_user_request_body: + sender_wallet: + type: string + tip_amount: + type: string + listen_streak_reminder_notification_action: + required: + - data + - specifier + - timestamp + - type type: object + properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/listen_streak_reminder_notification_action_data' + comment_reaction_notification_action_data: required: - - handle - - wallet + - entity_id + - entity_user_id + - reacter_user_id + - type + type: object properties: - user_id: + type: type: string - description: Optional user hash ID (will be generated if not provided) - example: "p9Km2Lx" - handle: + example: Track + enum: + - Track + - Playlist + - Album + entity_id: type: string - description: User handle (unique username) - example: "newartist" - wallet: + entity_user_id: type: string - description: Wallet address (required) - example: "0x1234..." - name: + reacter_user_id: type: string - description: Display name - example: "New Artist" - bio: + comment_id: type: string - description: User bio - maxLength: 256 - location: + supporter_dethroned_notification_action_data: + required: + - dethroned_user_id + - receiver_user_id + - sender_user_id + type: object + properties: + dethroned_user_id: type: string - description: User location - website: + sender_user_id: type: string - description: Website URL - format: uri - donation: + receiver_user_id: type: string - description: Donation link - twitter_handle: + repost_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - description: Twitter handle (without @) - instagram_handle: + type: type: string - description: Instagram handle (without @) - tiktok_handle: + timestamp: + type: integer + data: + $ref: '#/components/schemas/repost_notification_action_data' + challenge_reward_notification_action_data: + required: + - amount + - challenge_id + - specifier + type: object + properties: + amount: type: string - description: TikTok handle (without @) - profile_picture: + specifier: type: string - description: Profile picture CID or URL - profile_picture_sizes: + challenge_id: + type: string + listen_streak: + type: integer + comment_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: + type: string + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/comment_notification_action_data' + repost_notification_action_data: + required: + - repost_item_id + - type + - user_id + type: object + properties: + type: type: string - description: Profile picture sizes metadata - cover_photo: + example: track + enum: + - track + - playlist + - album + user_id: type: string - description: Cover photo CID or URL - cover_photo_sizes: + repost_item_id: type: string - description: Cover photo sizes metadata - profile_type: + repost_of_repost_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - nullable: true - enum: [label] - description: Type of profile (e.g., 'label' for record labels) - allow_ai_attribution: - type: boolean - description: Whether to allow AI attribution - spl_usdc_payout_wallet: + type: type: string - description: Solana USDC payout wallet address - playlist_library: - $ref: "#/components/schemas/user_playlist_library" - events: - type: object - description: User events for tracking referrals and mobile users - properties: - referrer: - type: string - description: Hash ID of the user who referred this user - example: "k9Xm5Pz" - is_mobile_user: - type: boolean - description: Whether the user is on mobile - update_user_request_body: + timestamp: + type: integer + data: + $ref: '#/components/schemas/repost_of_repost_notification_action_data' + trending_playlist_notification_action: + required: + - data + - specifier + - timestamp + - type type: object - description: Request body for updating user profile. All fields are optional. properties: - handle: + specifier: type: string - description: User handle. Can only be set if the user does not already have a handle. - name: + type: type: string - description: Display name - bio: + timestamp: + type: integer + data: + $ref: '#/components/schemas/trending_playlist_notification_action_data' + request_manager_notification_action_data: + required: + - grantee_address + - grantee_user_id + - user_id + type: object + properties: + user_id: type: string - description: User bio - maxLength: 256 - location: + grantee_user_id: type: string - description: User location - website: + grantee_address: type: string - description: Website URL - format: uri - donation: + follow_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - description: Donation link - twitter_handle: + type: type: string - description: Twitter handle (without @) - instagram_handle: + timestamp: + type: integer + data: + $ref: '#/components/schemas/follow_notification_action_data' + artist_remix_contest_ending_soon_notification_action: + required: + - data + - specifier + - timestamp + - type + type: object + properties: + specifier: type: string - description: Instagram handle (without @) - tiktok_handle: + type: type: string - description: TikTok handle (without @) - profile_picture: + timestamp: + type: integer + data: + $ref: '#/components/schemas/artist_remix_contest_ending_soon_notification_action_data' + comment_mention_notification_action_data: + required: + - comment_user_id + - entity_id + - entity_user_id + - type + type: object + properties: + type: type: string - description: Profile picture CID or URL - profile_picture_sizes: + example: Track + enum: + - Track + - Playlist + - Album + entity_id: type: string - description: Profile picture sizes metadata - cover_photo: + entity_user_id: type: string - description: Cover photo CID or URL - cover_photo_sizes: + comment_user_id: type: string - description: Cover photo sizes metadata - profile_type: + comment_id: type: string - nullable: true - enum: [label] - description: Type of profile (e.g., 'label' for record labels) - is_deactivated: - type: boolean - description: Whether the user is deactivated - artist_pick_track_id: + track_added_to_purchased_album_notification_action_data: + required: + - playlist_id + - playlist_owner_id + - track_id + type: object + properties: + track_id: type: string - description: Track hash ID to feature as artist pick - example: "x5pJ3Az" - allow_ai_attribution: - type: boolean - description: Whether to allow AI attribution - spl_usdc_payout_wallet: + playlist_id: type: string - description: Solana USDC payout wallet address - coin_flair_mint: + playlist_owner_id: type: string - description: Coin flair mint address - playlist_library: - $ref: "#/components/schemas/user_playlist_library" - events: - type: object - description: User events for tracking referrals and mobile users - properties: - referrer: - type: string - description: Hash ID of the user who referred this user - example: "k9Xm5Pz" - is_mobile_user: - type: boolean - description: Whether the user is on mobile - update_comment_request_body: - type: object + comment_notification_action_data: required: - - entityType - - entityId - - body + - comment_user_id + - entity_id + - type + type: object properties: - entityType: - allOf: - - $ref: "#/components/schemas/comment_entity_type" - example: "Track" - entityId: - type: integer - description: ID of the entity being commented on - example: 12345 - body: + type: type: string - description: The updated comment text - maxLength: 500 - mentions: - type: array - description: Array of user IDs mentioned in the comment (max 10) - maxItems: 10 - items: - type: integer - example: 67890 - create_comment_request_body: - type: object + example: Track + enum: + - Track + - Playlist + - Album + entity_id: + type: string + comment_user_id: + type: string + comment_id: + type: string + trending_notification_action_data: required: - - entityType - - entityId - - body + - genre + - rank + - time_range + - track_id + type: object properties: - entityType: - allOf: - - $ref: "#/components/schemas/comment_entity_type" - example: "Track" - entityId: + rank: type: integer - description: ID of the entity being commented on - example: 12345 - body: + genre: type: string - description: Comment text - maxLength: 500 - example: "Great track!" - commentId: - type: integer - description: Optional ID for the comment (will be generated if not provided) - example: 98765 - parentId: - type: integer - description: Parent comment ID if this is a reply - example: 54321 - trackTimestampS: - type: integer - description: Timestamp in the track where the comment was made (in seconds) - minimum: 0 - mentions: - type: array - description: Array of user IDs mentioned in the comment (max 10) - maxItems: 10 - items: - type: integer - example: 67890 - react_comment_request_body: - type: object + track_id: + type: string + time_range: + type: string + example: week + enum: + - week + - month + - year + milestone_notification_action: required: - - entityType - - entityId + - data + - specifier + - timestamp + - type + type: object properties: - entityType: - allOf: - - $ref: "#/components/schemas/comment_entity_type" - example: "Track" - entityId: + specifier: + type: string + type: + type: string + timestamp: type: integer - description: ID of the entity (track) being commented on - example: 12345 - favorite_request_body: + data: + $ref: '#/components/schemas/milestone_notification_action_data' + follow_notification_action_data: + required: + - followee_user_id + - follower_user_id type: object - description: Optional metadata for favorite/save operations properties: - is_save_of_repost: - type: boolean - description: Set to true when favoriting a reposted item (used for notifications) - repost_request_body: + follower_user_id: + type: string + followee_user_id: + type: string + announcement_notification_action_data: + required: + - long_description + - push_body + - short_description + - title + - route type: object - description: Optional metadata for repost operations properties: - is_repost_of_repost: - type: boolean - description: Set to true when reposting an item that was reposted (used for notifications) - pin_comment_request_body: - type: object + title: + type: string + push_body: + type: string + short_description: + type: string + long_description: + type: string + route: + type: string + supporter_rank_up_notification_action: required: - - entityType - - entityId - properties: - entityType: - allOf: - - $ref: "#/components/schemas/comment_entity_type" - example: "Track" - entityId: - type: integer - description: ID of the entity (track) the comment is on - example: 12345 - create_grant_request_body: + - data + - specifier + - timestamp + - type type: object - required: - - app_api_key properties: - app_api_key: + specifier: type: string - description: The developer app address (API key) to grant authorization to - add_manager_request_body: - type: object + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/supporter_rank_up_notification_action_data' + repost_of_repost_notification_action_data: required: - - manager_user_id + - repost_of_repost_item_id + - type + - user_id + type: object properties: - manager_user_id: + type: type: string - description: The user ID of the user to add as manager - approve_grant_request_body: - type: object + example: track + enum: + - track + - playlist + - album + user_id: + type: string + repost_of_repost_item_id: + type: string + send_tip_notification_action_data: required: - - grantor_user_id + - amount + - receiver_user_id + - sender_user_id + - tip_tx_signature + type: object properties: - grantor_user_id: + amount: type: string - description: The user ID of the child user who proposed the manager (grantor) - create_developer_app_request_body: - type: object + sender_user_id: + type: string + receiver_user_id: + type: string + tip_tx_signature: + type: string + trending_playlist_notification_action_data: required: - - name + - genre + - playlist_id + - rank + - time_range + type: object properties: - name: + rank: + type: integer + genre: type: string - description: Developer app name - example: "My API Key" - description: + playlist_id: type: string - description: App description - imageUrl: + time_range: type: string - description: App logo/image URL - create_developer_app_response: + example: week + enum: + - week + - month + - year + usdc_purchase_buyer_notification_action: + required: + - data + - specifier + - timestamp + - type type: object properties: - api_key: + specifier: type: string - description: The API key (address) for the developer app - api_secret: + type: type: string - description: The private key for the developer app (for signing) - bearer_token: + timestamp: + type: integer + data: + $ref: '#/components/schemas/usdc_purchase_buyer_notification_action_data' + fan_remix_contest_ending_soon_notification_action_data: + required: + - entity_id + - entity_user_id + type: object + properties: + entity_user_id: type: string - description: The bearer token for API authentication (use in Authorization header) - transaction_hash: + entity_id: type: string - description: Transaction hash of the creation - update_developer_app_request_body: - type: object + usdc_purchase_seller_notification_action_data: required: - - name + - amount + - buyer_user_id + - content_id + - content_type + - extra_amount + - seller_user_id + type: object properties: - name: + content_type: type: string - description: Developer app name - description: + buyer_user_id: type: string - description: App description - imageUrl: + seller_user_id: type: string - description: App logo/image URL (camelCase) - create_user_developer_app_request_body: - type: object + amount: + type: string + extra_amount: + type: string + content_id: + type: string + create_track_notification_action_data: required: - - name + - track_id + type: object properties: - name: + track_id: type: string - description: Developer app name - example: "My API Key" - deactivate_access_key_request_body: - type: object + create_playlist_notification_action_data: required: - - api_access_key + - is_album + - playlist_id + type: object properties: - api_access_key: + is_album: + type: boolean + playlist_id: type: string - description: The bearer token (API access key) to deactivate - create_access_key_response: - type: object + track_added_to_playlist_notification_action: required: - - api_access_key + - data + - specifier + - timestamp + - type + type: object properties: - api_access_key: + specifier: type: string - description: The newly created bearer token (API access key) - track_download_request_body: + type: + type: string + timestamp: + type: integer + data: + $ref: '#/components/schemas/track_added_to_playlist_notification_action_data' + fan_remix_contest_started_notification_action: + required: + - data + - specifier + - timestamp + - type type: object properties: - city: - type: string - description: City where the download occurred - region: + specifier: type: string - description: Region where the download occurred - country: + type: type: string - description: Country where the download occurred - developer_apps_response: + timestamp: + type: integer + data: + $ref: '#/components/schemas/fan_remix_contest_started_notification_action_data' + listen_streak_reminder_notification_action_data: + required: + - streak type: object properties: - data: - type: array - items: - $ref: "#/components/schemas/developer_app" - create_user_developer_app_response: + streak: + type: integer + artist_remix_contest_submissions_notification_action_data: + required: + - entity_id + - event_id + - milestone type: object properties: - api_key: - type: string - description: The API key (address) for the developer app - api_secret: - type: string - description: The private key for the developer app (for signing) - bearer_token: + event_id: type: string - description: The bearer token for API authentication (use in Authorization header) - transaction_hash: + milestone: + type: integer + entity_id: type: string - description: Transaction hash of the creation - deactivate_access_key_response: + artist_remix_contest_ended_notification_action_data: + required: + - entity_id type: object properties: - success: - type: boolean - description: Whether the deactivation was successful - user_playlist_library: + entity_id: + type: string + artist_remix_contest_ending_soon_notification_action_data: + required: + - entity_id + - entity_user_id type: object - description: User's playlist library with support for folders and playlists + properties: + entity_user_id: + type: string + entity_id: + type: string + fan_remix_contest_started_notification_action_data: required: - - contents + - entity_id + - entity_user_id + type: object properties: - contents: - type: array - description: Array of folders and playlist identifiers - items: - oneOf: - - $ref: "#/components/schemas/playlist_library_folder" - - $ref: "#/components/schemas/playlist_library_playlist_identifier" - - $ref: "#/components/schemas/playlist_library_explore_playlist_identifier" - playlist_library_folder: + entity_user_id: + type: string + entity_id: + type: string + supporter_rank_up_notification_action_data: + required: + - rank + - receiver_user_id + - sender_user_id type: object - description: Folder containing nested playlists and folders + properties: + rank: + type: integer + sender_user_id: + type: string + receiver_user_id: + type: string + track_added_to_playlist_notification_action_data: required: - - id - - type - - name - - contents + - playlist_id + - playlist_owner_id + - track_id + type: object properties: - id: + track_id: type: string - description: Unique folder identifier - type: + playlist_id: type: string - enum: [folder] - name: + playlist_owner_id: type: string - description: Folder name - contents: - type: array - description: Nested folders and playlist identifiers - items: - oneOf: - - $ref: "#/components/schemas/playlist_library_folder" - - $ref: "#/components/schemas/playlist_library_playlist_identifier" - - $ref: "#/components/schemas/playlist_library_explore_playlist_identifier" - playlist_library_playlist_identifier: - type: object - description: Reference to a playlist + milestone_notification_action_data: + oneOf: + - $ref: '#/components/schemas/user_milestone_notification_action_data' + - $ref: '#/components/schemas/track_milestone_notification_action_data' + - $ref: '#/components/schemas/playlist_milestone_notification_action_data' + user_milestone_notification_action_data: required: - - type - - playlist_id + - threshold + - type + - user_id + type: object properties: type: type: string - enum: [playlist] - playlist_id: + threshold: type: integer - description: Playlist ID - example: 1234 - playlist_library_explore_playlist_identifier: - type: object - description: Reference to an explore playlist + user_id: + type: string + playlist_milestone_notification_action_data: required: - - type - - playlist_id + - is_album + - playlist_id + - threshold + - type + type: object properties: type: type: string - enum: [explore_playlist] + threshold: + type: integer playlist_id: type: string - description: Explore playlist identifier - comment_entity_type: - type: string - enum: - - Track - ddex_resource_contributor: - type: object + is_album: + type: boolean + track_milestone_notification_action_data: required: - - name - - roles + - threshold + - track_id + - type + type: object properties: - name: + type: type: string - minLength: 1 - description: Contributor name - roles: - type: array - minItems: 1 - items: - type: string - minLength: 1 - description: Contributor roles - sequence_number: + threshold: type: integer - minimum: 0 - description: Sequence number for ordering - ddex_copyright: - type: object + track_id: + type: string + usdc_purchase_buyer_notification_action_data: required: - - year - - text + - amount + - buyer_user_id + - content_id + - content_type + - extra_amount + - seller_user_id + type: object properties: - year: + content_type: type: string - minLength: 4 - maxLength: 4 - description: Copyright year (4 characters) - text: + buyer_user_id: type: string - minLength: 1 - description: Copyright text - field_visibility: + seller_user_id: + type: string + amount: + type: string + extra_amount: + type: string + content_id: + type: string + user_response_single: type: object properties: - mood: - type: boolean - tags: - type: boolean - genre: - type: boolean - share: - type: boolean - play_count: - type: boolean - remixes: - type: boolean - genre: - type: string - description: Music genre - enum: - - Electronic - - Rock - - Metal - - Alternative - - Hip-Hop/Rap - - Experimental - - Punk - - Folk - - Pop - - Ambient - - Soundtrack - - World - - Jazz - - Acoustic - - Funk - - R&B/Soul - - Devotional - - Classical - - Reggae - - Podcasts - - Country - - Spoken Word - - Comedy - - Blues - - Kids - - Audiobooks - - Latin - - Lo-Fi - - Hyperpop - - Dancehall - - Techno - - Trap - - House - - Tech House - - Deep House - - Disco - - Electro - - Jungle - - Progressive House - - Hardstyle - - Glitch Hop - - Trance - - Future Bass - - Future House - - Tropical House - - Downtempo - - Drum & Bass - - Dubstep - - Jersey Club - - Vaporwave - - Moombahton - mood: - type: string - description: Music mood - enum: - - Peaceful - - Romantic - - Sentimental - - Tender - - Easygoing - - Yearning - - Sophisticated - - Sensual - - Cool - - Gritty - - Melancholy - - Serious - - Brooding - - Fiery - - Defiant - - Aggressive - - Rowdy - - Excited - - Energizing - - Empowering - - Stirring - - Upbeat - - Other + data: + $ref: '#/components/schemas/user' responses: ParseError: description: When a mask can't be parsed @@ -11171,38 +17660,62 @@ components: BasicAuth: type: http scheme: basic - description: | - HTTP Basic Authentication with Ethereum private key for write operations. + description: 'HTTP Basic Authentication with Ethereum private key for write + operations. + **Authentication** - Use HTTP Basic Authentication where the password field contains your Ethereum private key: + + Use HTTP Basic Authentication where the password field contains your Ethereum + private key: + ``` + Authorization: Basic + ``` - The username can be any value. The password must be your Ethereum private key in hex format (with or without 0x prefix). + + The username can be any value. The password must be your Ethereum private + key in hex format (with or without 0x prefix). + Example: + ``` + Authorization: Basic dXNlcm5hbWU6MHgxMjM0NTY3ODkwYWJjZGVmLi4u + ``` + **How it works:** + 1. The API decodes the Basic Auth credentials + 2. Extracts the private key from the password field + 3. Derives the Ethereum address from the private key + 4. Uses this address for authorization checks + **Authorization** + The derived wallet address must be either: + - The wallet of the user being acted upon (direct ownership) + - A wallet with an approved, non-revoked grant for the user (manager mode) + + ' BearerAuth: type: http scheme: bearer bearerFormat: JWT - description: | - The API bearer token or OAuth JWT token for the user. -x-original-swagger-version: "2.0" + description: 'The API bearer token or OAuth JWT token for the user. + + ' +x-original-swagger-version: '2.0'