openapi: 3.0.1
info:
  title: API
  version: "1.0"
servers:
- url: /v1/full
tags:
- name: tracks
  description: Full track operations
- name: playlists
  description: Full playlist related operations
- name: users
  description: Full user operations
- name: coins
  description: Coin related operations
- name: search
  description: Full search operations
- name: tips
  description: Full tip related operations
- name: reactions
  description: Reaction related operations
- name: transactions
  description: Full transaction history related operations
- name: cid_data
  description: Metadata related operations
- name: notifications
  description: Notifications related operations
- name: challenges
  description: Challenge related operations
- name: comments
  description: Full comment operations
- name: explore
  description: Full explore operations
paths:
  /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
      - name: oracle
        in: query
        description: "The address of a valid, registered Anti-Abuse Oracle"
        required: true
        schema:
          type: string
      - name: specifier
        in: query
        description: The specifier of the user challenge requiring the attestation
        required: true
        schema:
          type: string
      - name: user_id
        in: query
        description: The user ID of the user challenge requiring the attestation
        required: true
        schema:
          type: string
      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: {}
  /coins:
    get:
      tags:
        - coins
      operationId: Get Coins
      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
        style: form
        explode: true
      - name: mint
        in: query
        description: Filter by coin mint address(es)
        schema:
          type: array
          items:
            type: string
        style: form
        explode: true
      - name: owner_id
        in: query
        description: Filter by owner user ID(s)
        schema:
          type: array
          items:
            type: string
        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':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/coins_response'
    post:
      tags:
        - coins
      operationId: Create 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"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_coin_request'
      responses:
        '201':
          description: Success - Coin created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_coin_response'
        '400':
          description: Bad request - Invalid parameters
          content: {}
        '500':
          description: Server error
          content: {}
  /coins/{mint}:
    get:
      tags:
        - coins
      operationId: Get Coin
      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
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/coin_response'
    post:
      tags:
        - coins
      operationId: Update Coin
      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"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/update_coin_request'
      responses:
        '200':
          description: Success - Coin updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/update_coin_response'
        '400':
          description: Bad request - Invalid parameters or no fields provided
          content: {}
        '403':
          description: Forbidden - User does not own the coin
          content: {}
        '404':
          description: Not found - Coin does not exist
          content: {}
        '500':
          description: Server error
          content: {}
  /coins/ticker/{ticker}:
    get:
      tags:
        - coins
      operationId: Get Coin By Ticker
      description: 'Gets information about a specific coin by its ticker'
      parameters:
      - name: ticker
        in: path
        description: The ticker symbol of the coin
        required: true
        schema:
          type: string
          example: "$AUDIO"
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/coin_response'
  /coins/{mint}/members/count:
    get:
      tags:
        - coins
      operationId: Get Coin Members Count
      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
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/coin_members_count_response'
  /coins/volume-leaders:
    get:
      tags:
        - coins
      operationId: Get Volume Leaders
      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
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/coins_volume_leaders_response'
        '400':
          description: Bad Request
  /coins/{mint}/redeem:
    get:
      tags:
        - coins
      operationId: Get Coin Redeem Amount
      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
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/redeem_amount_response'
    post:
      tags:
        - coins
      operationId: Claim Coin Reward
      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
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $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':
          description: Server error
          content: {}
  /coins/{mint}/redeem/{code}:
    get:
      tags:
        - coins
      operationId: Get Reward Code
      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
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $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'
    post:
      tags:
        - coins
      operationId: Claim Coin Reward 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
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
               $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':
          description: Server error
          content: {}
  /rewards/code:
    post:
      tags:
      - rewards
      description: Creates a new reward code with Solana signature verification
      operationId: Create Reward Code
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_reward_code_request'
      responses:
        "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
          content: {}
        "403":
          description: Forbidden - Signature verification failed
          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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cid_data_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /comments/{comment_id}:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/comment_response'
        "500":
          description: Server error
          content: {}
  /comments/{comment_id}/replies:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/comment_replies_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /explore/best-selling:
    get:
      tags:
      - explore
      summary: Get best selling tracks and playlists with related entities
      description: Get best selling tracks and/or albums with related entities
      operationId: Get Full 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/best_selling_full_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
      - name: timestamp
        in: query
        description: The timestamp from which to paginate
        schema:
          type: integer
      - 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
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/playlist_updates_response'
  /playlists:
    get:
      tags:
      - 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:
          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":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_playlist_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /playlists/by_permalink/{handle}/{slug}:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_playlist_response'
  /playlists/trending:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_trending_playlists_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /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
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_trending_playlists_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /playlists/{playlist_id}:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_playlist_response'
  /playlists/{playlist_id}/favorites:
    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:
    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}/tracks:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_playlist_tracks_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
      - 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: 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
      - 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
          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
      - 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: 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
      - 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
          enum:
          - relevant
          - popular
          - recent
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/search_full_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
      - 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: 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
      - 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
          enum:
          - relevant
          - popular
          - recent
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/search_full_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /tips:
    get:
      tags:
      - 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:
          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":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_tips_response'
  /tracks:
    get:
      tags:
      - tracks
      description: Gets a list of tracks using their IDs or permalinks
      operationId: Get Bulk Tracks
      parameters:
      - 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":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
  /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
          default: 25
      - name: with_users
        in: query
        description: Boolean to include user info with tracks
        schema:
          type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
  /tracks/feeling-lucky:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
        "400":
          description: Bad request
          content: {}
  /tracks/recent-comments:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
        "400":
          description: Bad request
          content: {}
  /tracks/most-shared:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
  /tracks/recent-premium:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
  /tracks/recommended:
    get:
      tags:
      - tracks
      description: Get recommended tracks
      operationId: Get Recommended Tracks
      parameters:
      - 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: 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/full_tracks_response'
  /tracks/recommended/{version}:
    get:
      tags:
      - 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:
          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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/remixables_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /tracks/trending:
    get:
      tags:
      - 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: 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/full_tracks_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /tracks/trending/ids:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/trending_ids_response'
        "400":
          description: Bad request
          content: {}
        "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
      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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/trending_ids_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /tracks/trending/underground:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
  /tracks/trending/underground/{version}:
    get:
      tags:
      - 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 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":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
  /tracks/trending/{version}:
    get:
      tags:
      - 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/full_tracks_response'
  /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
      - name: with_users
        in: query
        description: Boolean to include user info with tracks
        schema:
          type: boolean
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
  /tracks/usdc-purchase:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
        "400":
          description: Bad request
          content: {}
        "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
      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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks_response'
  /tracks/{track_id}:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_track_response'
  /tracks/{track_id}/comments:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/track_comments_response_full'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /tracks/{track_id}/favorites:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/track_favorites_response_full'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /tracks/{track_id}/remixes:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/remixes_response_full'
  /tracks/{track_id}/remixing:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/remixing_response'
  /tracks/{track_id}/reposts:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/track_reposts_response_full'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /tracks/{track_id}/stems:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/stems_response'
  /tracks/{track_id}/top_listeners:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_top_listener'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /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
          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
      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
      - 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/transaction_history_count_response'
      deprecated: true
  /users:
    get:
      tags:
      - 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:
          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":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_user_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /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
      - 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/user_account_response_full'
        "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_full'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/handle/{handle}:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_user_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
      - 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/full_reposts'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/handle/{handle}/tracks:
    get:
      tags:
      - 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:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks'
        "400":
          description: Bad request
          content: {}
        "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
        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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks'
        "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:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_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:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_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
      - 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/top_users_response_full'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_user_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/albums:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/albums_response_full'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/comments:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/user_comments_response_full'
        "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 Favorites
      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: 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/track_library_response_full'
        "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
      - 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
      - name: with_users
        in: query
        description: Include user data with feed items
        schema:
          type: boolean
      - 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:
            type: integer
      - 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/user_feed_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/followers:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_followers_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/following:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/following_response_full'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/history/tracks:
    get:
      tags:
      - 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":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/history_response_full'
        "400":
          description: Bad request
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          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
      - 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 filter query
        schema:
          type: string
      - name: sort_direction
        in: query
        description: The sort direction
        schema:
          type: string
          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
          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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/collection_library_response_full'
        "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
      - 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: query
        in: query
        description: The filter query
        schema:
          type: string
      - name: sort_direction
        in: query
        description: The sort direction
        schema:
          type: string
          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
          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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/collection_library_response_full'
        "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
      - 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 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: 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/track_library_response_full'
        "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
      - 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/managed_users_response'
        "400":
          description: Bad request
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/managers:
    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":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/muted:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_user_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/mutuals:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_mutual_followers_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/playlists:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/playlists_response_full'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/purchasers:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_purchasers_response'
        "400":
          description: Bad request
          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
      - 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":
          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
      - 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
      - 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_count_response'
  /users/{id}/recommended-tracks:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks'
        "400":
          description: Bad request
          content: {}
        "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
        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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/related_artist_response_full'
        "400":
          description: Bad request
          content: {}
        "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"
      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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_remixers_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /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
      - 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":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/remixers_count_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/reposts:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_reposts'
        "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
      - 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
      - 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}/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:
            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/purchases_count_response'
  /users/{id}/subscribers:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_subscribers_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/supporters:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_get_supporters'
  /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: supporter_user_id
        in: path
        description: A User ID of a supporter
        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":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_get_supporter'
  /users/{id}/supporting:
    get:
      tags:
      - 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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_get_supported_users'
  /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
      - name: supported_user_id
        in: path
        description: A User ID of a supported user
        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":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_get_supporting'
  /users/{id}/tracks:
    get:
      tags:
      - 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:
          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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/full_tracks'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /users/{id}/tracks/count:
    get:
      tags:
      - 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:
          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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/tracks_count_response'
        "400":
          description: Bad request
          content: {}
        "500":
          description: Server error
          content: {}
  /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
      - 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
      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: 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/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
      - 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:
            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
          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
          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
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transaction_history_count_response'
components:
  schemas:
    full_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
        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/track_full'
    version_metadata:
      required:
      - service
      - version
      type: object
      properties:
        service:
          type: string
        version:
          type: string
    track_full:
      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_full'
        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/full_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_full'
        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
        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'
    track_artwork_full:
      type: object
      properties:
        "150x150":
          type: string
        "480x480":
          type: string
        "1000x1000":
          type: string
        mirrors:
          type: array
          items:
            type: string
    full_remix_parent:
      type: object
      properties:
        tracks:
          type: array
          items:
            $ref: '#/components/schemas/full_remix'
    full_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_full'
        has_remix_author_reposted:
          type: boolean
        has_remix_author_saved:
          type: boolean
    user_full:
      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_full'
        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_full'
        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
    cover_photo_full:
      type: object
      properties:
        "640x":
          type: string
        "2000x":
          type: string
        mirrors:
          type: array
          items:
            type: string
    profile_picture_full:
      type: object
      properties:
        "150x150":
          type: string
        "480x480":
          type: string
        "1000x1000":
          type: string
        mirrors:
          type: array
          items:
            type: string
    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
    playlist_library:
      type: object
      properties:
        contents:
          type: array
          items:
            type: object
            properties: {}
    album_backlink:
      required:
      - permalink
      - playlist_id
      - playlist_name
      type: object
      properties:
        playlist_id:
          type: integer
        playlist_name:
          type: string
        permalink:
          type: string
    access:
      required:
      - download
      - stream
      type: object
      properties:
        stream:
          type: boolean
        download:
          type: boolean
    cover_art:
      type: object
      properties:
        "150x150":
          type: string
        "480x480":
          type: string
        "1000x1000":
          type: string
    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
    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
    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
    stem_parent:
      required:
      - category
      - parent_track_id
      type: object
      properties:
        category:
          type: string
        parent_track_id:
          type: integer
    track_segment:
      required:
      - duration
      - multihash
      type: object
      properties:
        duration:
          type: number
        multihash:
          type: string
    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'
    tip_gate:
      required:
      - tip_user_id
      type: object
      properties:
        tip_user_id:
          type: integer
          description: Must tip the given user ID to unlock
    follow_gate:
      required:
      - follow_user_id
      type: object
      properties:
        follow_user_id:
          type: integer
          description: Must follow the given user ID to unlock
    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'
    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
    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'
    usdc_gate:
      required:
      - price
      - splits
      type: object
      properties:
        splits:
          $ref: '#/components/schemas/wild_card_split'
        price:
          type: integer
    wild_card_split:
      type: object
      additionalProperties:
        type: integer
    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'
    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
    url_with_mirrors:
      required:
      - mirrors
      type: object
      properties:
        url:
          type: string
        mirrors:
          type: array
          items:
            type: string
    full_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_full'
    track_comments_response_full:
      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:
      type: object
      description: A coin object
      required:
        - mint
        - ticker
        - 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"
        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"
        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: 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"
        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"
        has_discord:
          type: boolean
          description: Whether the coin has a Discord server
          example: false
        created_at:
          type: string
          format: date-time
          description: The date and time when the coin was created
          example: "2024-01-15T10:30:00Z"
        updated_at:
          type: string
          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 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"
    coin_response:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/coin'
    coins_response:
      type: object
      required:
        - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/coin'
    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
    tracks_count_response:
      type: object
      required:
        - data
      properties:
        data:
          type: integer
          description: The total number of tracks matching the filter criteria
          example: 15
    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_full'
    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
    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"
    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
    update_coin_response:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates if the update was successful
          example: true
    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:
          type: string
        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
    comment_mention:
      required:
      - handle
      - user_id
      type: object
      properties:
        user_id:
          type: integer
        handle:
          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:
          type: string
        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
        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
    related:
      type: object
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/user_full'
        tracks:
          type: array
          items:
            $ref: '#/components/schemas/track_full'
        playlists:
          type: array
          items:
            $ref: '#/components/schemas/playlist_full'
    playlist_full:
      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_full'
        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_full'
        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_full'
        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
    playlist_artwork_full:
      type: object
      properties:
        "150x150":
          type: string
        "480x480":
          type: string
        "1000x1000":
          type: string
        mirrors:
          type: array
          items:
            type: string
    playlist_added_timestamp:
      required:
      - metadata_timestamp
      - timestamp
      - track_id
      type: object
      properties:
        metadata_timestamp:
          type: integer
        timestamp:
          type: integer
        track_id:
          type: string
    playlist_artwork:
      type: object
      properties:
        "150x150":
          type: string
        "480x480":
          type: string
        "1000x1000":
          type: string
    trending_ids_response:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/trending_times_ids'
    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'
    track_id:
      required:
      - id
      type: object
      properties:
        id:
          type: string
    track_favorites_response_full:
      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_full'
    track_reposts_response_full:
      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_full'
    full_top_listener:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/full_top_listener'
    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_full'
    stem_full:
      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
    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_full'
    remixes_response_full:
      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/remixes_response'
    remixes_response:
      required:
      - count
      type: object
      properties:
        count:
          type: integer
        tracks:
          type: array
          items:
            $ref: '#/components/schemas/track_full'
    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_full'
    full_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_full'
    full_playlist_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_full'
    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
        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_full'
    full_trending_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_full'
    full_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
        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_full'
    full_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_full'
    full_reposts:
      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/activity_full'
    track_activity_full:
      allOf:
      - $ref: '#/components/schemas/activity_full'
      - required:
        - item
        - item_type
        type: object
        properties:
          item_type:
            type: string
            example: track
            enum:
            - track
          item:
            $ref: '#/components/schemas/track_full'
    activity_full:
      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
    collection_activity_full:
      allOf:
      - $ref: '#/components/schemas/activity_full'
      - required:
        - item
        - item_type
        type: object
        properties:
          item_type:
            type: string
            example: playlist
            enum:
            - playlist
          item:
            $ref: '#/components/schemas/playlist_full'
    playlists_response_full:
      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_full_without_tracks'
    playlist_full_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_full'
        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_full'
        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_full'
        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
    albums_response_full:
      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_full_without_tracks'
    track_library_response_full:
      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_full'
    collection_library_response_full:
      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_full_without_tracks'
    collection_activity_full_without_tracks:
      allOf:
      - $ref: '#/components/schemas/activity_full'
      - required:
        - item
        - item_type
        type: object
        properties:
          item_type:
            type: string
            example: playlist
            enum:
            - playlist
          item:
            $ref: '#/components/schemas/playlist_full_without_tracks'
    history_response_full:
      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_full'
    full_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_full'
    full_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
        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_subscribers'
    user_subscribers:
      required:
      - user_id
      type: object
      properties:
        user_id:
          type: string
        subscriber_ids:
          type: array
          items:
            type: string
    full_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_full'
    following_response_full:
      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_full'
    full_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_full'
    related_artist_response_full:
      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_full'
    top_genre_users_response_full:
      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_full'
    top_users_response_full:
      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_full'
    user_account_response_full:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/account_full'
    account_full:
      required:
      - playlists
      - track_save_count
      - user
      type: object
      properties:
        user:
          $ref: '#/components/schemas/user_full'
        playlists:
          type: array
          items:
            $ref: '#/components/schemas/account_collection'
        playlist_library:
          $ref: '#/components/schemas/playlist_library'
        track_save_count:
          type: integer
    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'
    account_collection_user:
      required:
      - handle
      - id
      type: object
      properties:
        id:
          type: string
        handle:
          type: string
        is_deactivated:
          type: boolean
    full_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/full_supporter'
    full_supporter:
      required:
      - amount
      - rank
      - sender
      type: object
      properties:
        rank:
          type: integer
        amount:
          type: string
        sender:
          $ref: '#/components/schemas/user_full'
    full_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/full_supporter'
    full_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/full_supporting'
    full_supporting:
      required:
      - amount
      - rank
      - receiver
      type: object
      properties:
        rank:
          type: integer
        amount:
          type: string
        receiver:
          $ref: '#/components/schemas/user_full'
    full_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/full_supporting'
    managed_users_response:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/managed_user'
    managed_user:
      required:
      - grant
      - user
      type: object
      properties:
        user:
          $ref: '#/components/schemas/user_full'
        grant:
          $ref: '#/components/schemas/grant'
    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
    managers_response:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/user_manager'
    user_manager:
      required:
      - grant
      - manager
      type: object
      properties:
        manager:
          $ref: '#/components/schemas/user_full'
        grant:
          $ref: '#/components/schemas/grant'
    purchases_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/purchase'
    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
    purchase_split:
      required:
      - amount
      - payout_wallet
      type: object
      properties:
        user_id:
          type: integer
        payout_wallet:
          type: string
        amount:
          type: string
    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
        timestamp:
          type: string
        version:
          $ref: '#/components/schemas/version_metadata'
        data:
          type: integer
    full_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_full'
    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
    full_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/user_full'
    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
    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'
    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'
    track_feed_item:
      required:
      - item
      - type
      type: object
      properties:
        type:
          type: string
        item:
          $ref: '#/components/schemas/track_full'
    playlist_feed_item:
      required:
      - item
      - type
      type: object
      properties:
        type:
          type: string
        item:
          $ref: '#/components/schemas/playlist_full'
    user_comments_response_full:
      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'
    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'
    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
    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
    search_full_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/search_model'
    search_model:
      required:
      - albums
      - playlists
      - tracks
      - users
      type: object
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/user_full'
        followed_users:
          type: array
          items:
            $ref: '#/components/schemas/user_full'
        tracks:
          type: array
          items:
            $ref: '#/components/schemas/search_track_full'
        saved_tracks:
          type: array
          items:
            $ref: '#/components/schemas/search_track_full'
        playlists:
          type: array
          items:
            $ref: '#/components/schemas/search_playlist_full'
        saved_playlists:
          type: array
          items:
            $ref: '#/components/schemas/search_playlist_full'
        albums:
          type: array
          items:
            $ref: '#/components/schemas/search_playlist_full'
        saved_albums:
          type: array
          items:
            $ref: '#/components/schemas/search_playlist_full'
    search_track_full:
      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_full'
        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/full_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_full'
        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
        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'
    search_playlist_full:
      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_full'
        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_full'
        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_full'
        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
    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
        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/search_model'
    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/full_tip'
    full_tip:
      required:
      - amount
      - created_at
      - followee_supporters
      - receiver
      - sender
      - slot
      - tx_signature
      type: object
      properties:
        amount:
          type: string
        sender:
          $ref: '#/components/schemas/user_full'
        receiver:
          $ref: '#/components/schemas/user_full'
        created_at:
          type: string
        slot:
          type: integer
        followee_supporters:
          type: array
          items:
            $ref: '#/components/schemas/supporter_reference'
        tx_signature:
          type: string
    supporter_reference:
      required:
      - user_id
      type: object
      properties:
        user_id:
          type: string
    reactions:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/reaction'
    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
    cid_data_response:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/data_and_type'
    data_and_type:
      type: object
      properties:
        type:
          type: string
        data:
          $ref: '#/components/schemas/cid_data'
    cid_data:
      type: object
      properties:
        collectibles:
          type: object
          properties: {}
        associated_sol_wallets:
          type: object
          properties: {}
        associated_wallets:
          type: object
          properties: {}
    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'
    notifications:
      required:
      - unread_count
      type: object
      properties:
        notifications:
          type: array
          items:
            $ref: '#/components/schemas/notification'
        unread_count:
          type: integer
    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'
    follow_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/follow_notification_action'
    follow_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/follow_notification_action_data'
    follow_notification_action_data:
      required:
      - followee_user_id
      - follower_user_id
      type: object
      properties:
        follower_user_id:
          type: string
        followee_user_id:
          type: string
    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'
    save_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/save_notification_action_data'
    save_notification_action_data:
      required:
      - save_item_id
      - type
      - user_id
      type: object
      properties:
        type:
          type: string
          example: track
          enum:
          - track
          - playlist
          - album
        user_id:
          type: string
        save_item_id:
          type: string
    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/repost_notification_action'
    repost_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/repost_notification_action_data'
    repost_notification_action_data:
      required:
      - repost_item_id
      - type
      - user_id
      type: object
      properties:
        type:
          type: string
          example: track
          enum:
          - track
          - playlist
          - album
        user_id:
          type: string
        repost_item_id:
          type: string
    repost_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/repost_of_repost_notification_action'
    repost_of_repost_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/repost_of_repost_notification_action_data'
    repost_of_repost_notification_action_data:
      required:
      - repost_of_repost_item_id
      - type
      - user_id
      type: object
      properties:
        type:
          type: string
          example: track
          enum:
          - track
          - playlist
          - album
        user_id:
          type: string
        repost_of_repost_item_id:
          type: string
    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'
    save_of_repost_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/save_of_repost_notification_action_data'
    save_of_repost_notification_action_data:
      required:
      - save_of_repost_item_id
      - type
      - user_id
      type: object
      properties:
        type:
          type: string
          example: track
          enum:
          - track
          - playlist
          - album
        user_id:
          type: string
        save_of_repost_item_id:
          type: string
    tastemaker_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/tastemaker_notification_action'
    tastemaker_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/tastemaker_notification_action_data'
    tastemaker_notification_action_data:
      required:
      - action
      - tastemaker_item_id
      - tastemaker_item_owner_id
      - tastemaker_item_type
      - tastemaker_user_id
      type: object
      properties:
        tastemaker_item_owner_id:
          type: string
        tastemaker_item_id:
          type: string
        action:
          type: string
        tastemaker_item_type:
          type: string
        tastemaker_user_id:
          type: string
    remix_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/remix_notification_action'
    remix_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/remix_notification_action_data'
    remix_notification_action_data:
      required:
      - parent_track_id
      - track_id
      type: object
      properties:
        parent_track_id:
          type: string
        track_id:
          type: string
    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'
    cosign_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/cosign_notification_action_data'
    cosign_notification_action_data:
      required:
      - parent_track_id
      - track_id
      - track_owner_id
      type: object
      properties:
        parent_track_id:
          type: string
        track_id:
          type: string
        track_owner_id:
          type: string
    create_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/create_notification_action'
    create_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/create_notification_action_data'
    create_notification_action_data:
      oneOf:
      - $ref: '#/components/schemas/create_playlist_notification_action_data'
      - $ref: '#/components/schemas/create_track_notification_action_data'
    create_playlist_notification_action_data:
      required:
      - is_album
      - playlist_id
      type: object
      properties:
        is_album:
          type: boolean
        playlist_id:
          type: string
    create_track_notification_action_data:
      required:
      - track_id
      type: object
      properties:
        track_id:
          type: string
    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'
    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'
    send_tip_notification_action_data:
      required:
      - amount
      - 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
    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/receive_tip_notification_action'
    receive_tip_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/receive_tip_notification_action_data'
    receive_tip_notification_action_data:
      required:
      - 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
    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'
    supporter_dethroned_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/supporter_dethroned_notification_action_data'
    supporter_dethroned_notification_action_data:
      required:
      - dethroned_user_id
      - receiver_user_id
      - sender_user_id
      type: object
      properties:
        dethroned_user_id:
          type: string
        sender_user_id:
          type: string
        receiver_user_id:
          type: string
    supporter_rank_up_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_rank_up_notification_action'
    supporter_rank_up_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/supporter_rank_up_notification_action_data'
    supporter_rank_up_notification_action_data:
      required:
      - rank
      - receiver_user_id
      - sender_user_id
      type: object
      properties:
        rank:
          type: integer
        sender_user_id:
          type: string
        receiver_user_id:
          type: string
    challenge_reward_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/challenge_reward_notification_action'
    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'
    challenge_reward_notification_action_data:
      required:
      - amount
      - challenge_id
      - specifier
      type: object
      properties:
        amount:
          type: string
        specifier:
          type: string
        challenge_id:
          type: string
        listen_streak:
          type: integer
    claimable_reward_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/claimable_reward_notification_action'
    claimable_reward_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/claimable_reward_notification_action_data'
    claimable_reward_notification_action_data:
      required:
      - amount
      - challenge_id
      - specifier
      type: object
      properties:
        amount:
          type: string
        specifier:
          type: string
        challenge_id:
          type: string
    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'
    reaction_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/reaction_notification_action_data'
    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
        reaction_type:
          type: string
        reaction_value:
          type: integer
        receiver_user_id:
          type: string
        sender_user_id:
          type: string
        sender_wallet:
          type: string
        tip_amount:
          type: string
    milestone_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/milestone_notification_action'
    milestone_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/milestone_notification_action_data'
    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:
      - threshold
      - type
      - user_id
      type: object
      properties:
        type:
          type: string
        threshold:
          type: integer
        user_id:
          type: string
    track_milestone_notification_action_data:
      required:
      - threshold
      - track_id
      - type
      type: object
      properties:
        type:
          type: string
        threshold:
          type: integer
        track_id:
          type: string
    playlist_milestone_notification_action_data:
      required:
      - is_album
      - playlist_id
      - threshold
      - type
      type: object
      properties:
        type:
          type: string
        threshold:
          type: integer
        playlist_id:
          type: string
        is_album:
          type: boolean
    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'
    tier_change_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/tier_change_notification_action_data'
    tier_change_notification_action_data:
      required:
      - current_value
      - new_tier
      - new_tier_value
      type: object
      properties:
        new_tier:
          type: string
        current_value:
          type: string
        new_tier_value:
          type: integer
    track_added_to_playlist_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/track_added_to_playlist_notification_action'
    track_added_to_playlist_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/track_added_to_playlist_notification_action_data'
    track_added_to_playlist_notification_action_data:
      required:
      - playlist_id
      - playlist_owner_id
      - track_id
      type: object
      properties:
        track_id:
          type: string
        playlist_id:
          type: string
        playlist_owner_id:
          type: string
    track_added_to_purchased_album_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/track_added_to_purchased_album_notification_action'
    track_added_to_purchased_album_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/track_added_to_purchased_album_notification_action_data'
    track_added_to_purchased_album_notification_action_data:
      required:
      - playlist_id
      - playlist_owner_id
      - track_id
      type: object
      properties:
        track_id:
          type: string
        playlist_id:
          type: string
        playlist_owner_id:
          type: string
    usdc_purchase_seller_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/usdc_purchase_seller_notification_action'
    usdc_purchase_seller_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/usdc_purchase_seller_notification_action_data'
    usdc_purchase_seller_notification_action_data:
      required:
      - amount
      - buyer_user_id
      - content_id
      - content_type
      - extra_amount
      - seller_user_id
      type: object
      properties:
        content_type:
          type: string
        buyer_user_id:
          type: string
        seller_user_id:
          type: string
        amount:
          type: string
        extra_amount:
          type: string
        content_id:
          type: string
    usdc_purchase_buyer_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/usdc_purchase_buyer_notification_action'
    usdc_purchase_buyer_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/usdc_purchase_buyer_notification_action_data'
    usdc_purchase_buyer_notification_action_data:
      required:
      - amount
      - buyer_user_id
      - content_id
      - content_type
      - extra_amount
      - seller_user_id
      type: object
      properties:
        content_type:
          type: string
        buyer_user_id:
          type: string
        seller_user_id:
          type: string
        amount:
          type: string
        extra_amount:
          type: string
        content_id:
          type: string
    request_manager_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/request_manager_notification_action'
    request_manager_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/request_manager_notification_action_data'
    request_manager_notification_action_data:
      required:
      - grantee_address
      - grantee_user_id
      - user_id
      type: object
      properties:
        user_id:
          type: string
        grantee_user_id:
          type: string
        grantee_address:
          type: string
    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'
    approve_manager_request_notification_action:
      required:
      - 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'
    approve_manager_request_notification_action_data:
      required:
      - grantee_address
      - grantee_user_id
      - user_id
      type: object
      properties:
        user_id:
          type: string
        grantee_user_id:
          type: string
        grantee_address:
          type: string
    trending_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/trending_notification_action'
    trending_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/trending_notification_action_data'
    trending_notification_action_data:
      required:
      - genre
      - rank
      - time_range
      - track_id
      type: object
      properties:
        rank:
          type: integer
        genre:
          type: string
        track_id:
          type: string
        time_range:
          type: string
          example: week
          enum:
          - week
          - month
          - year
    trending_playlist_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/trending_playlist_notification_action'
    trending_playlist_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/trending_playlist_notification_action_data'
    trending_playlist_notification_action_data:
      required:
      - genre
      - playlist_id
      - rank
      - time_range
      type: object
      properties:
        rank:
          type: integer
        genre:
          type: string
        playlist_id:
          type: string
        time_range:
          type: string
          example: week
          enum:
          - week
          - month
          - year
    trending_underground_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/trending_underground_notification_action'
    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'
    trending_underground_notification_action_data:
      required:
      - genre
      - rank
      - time_range
      - track_id
      type: object
      properties:
        rank:
          type: integer
        genre:
          type: string
        track_id:
          type: string
        time_range:
          type: string
          example: week
          enum:
          - week
          - month
          - year
    announcement_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/announcement_notification_action'
    announcement_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/announcement_notification_action_data'
    announcement_notification_action_data:
      required:
      - long_description
      - push_body
      - short_description
      - title
      - route
      type: object
      properties:
        title:
          type: string
        push_body:
          type: string
        short_description:
          type: string
        long_description:
          type: string
        route:
          type: string
    comment_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_notification_action'
    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'
    comment_notification_action_data:
      required:
      - comment_user_id
      - entity_id
      - type
      type: object
      properties:
        type:
          type: string
          example: Track
          enum:
          - Track
          - Playlist
          - Album
        entity_id:
          type: string
        comment_user_id:
          type: string
        comment_id:
          type: string
    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
        actions:
          type: array
          items:
            $ref: '#/components/schemas/comment_thread_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'
    comment_thread_notification_action_data:
      required:
      - comment_user_id
      - entity_id
      - entity_user_id
      - type
      type: object
      properties:
        type:
          type: string
          example: Track
          enum:
          - Track
          - Playlist
          - Album
        entity_id:
          type: string
        entity_user_id:
          type: string
        comment_user_id:
          type: string
        comment_id:
          type: string
    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/comment_mention_notification_action'
    comment_mention_notification_action:
      required:
      - data
      - specifier
      - timestamp
      - type
      type: object
      properties:
        specifier:
          type: string
        type:
          type: string
        timestamp:
          type: integer
        data:
          $ref: '#/components/schemas/comment_mention_notification_action_data'
    comment_mention_notification_action_data:
      required:
      - comment_user_id
      - entity_id
      - entity_user_id
      - type
      type: object
      properties:
        type:
          type: string
          example: Track
          enum:
          - Track
          - Playlist
          - Album
        entity_id:
          type: string
        entity_user_id:
          type: string
        comment_user_id:
          type: string
        comment_id:
          type: string
    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'
    comment_reaction_notification_action:
      required:
      - 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_reaction_notification_action_data:
      required:
      - entity_id
      - entity_user_id
      - reacter_user_id
      - type
      type: object
      properties:
        type:
          type: string
          example: Track
          enum:
          - Track
          - Playlist
          - Album
        entity_id:
          type: string
        entity_user_id:
          type: string
        reacter_user_id:
          type: string
        comment_id:
          type: string
    listen_streak_reminder_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/listen_streak_reminder_notification_action'
    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'
    listen_streak_reminder_notification_action_data:
      required:
      - streak
      type: object
      properties:
        streak:
          type: integer
    fan_remix_contest_started_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/fan_remix_contest_started_notification_action'
    fan_remix_contest_started_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_started_notification_action_data'
    fan_remix_contest_started_notification_action_data:
      required:
      - entity_id
      - entity_user_id
      type: object
      properties:
        entity_user_id:
          type: string
        entity_id:
          type: string
    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
        actions:
          type: array
          items:
            $ref: '#/components/schemas/fan_remix_contest_ended_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/fan_remix_contest_ended_notification_action_data'
    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
    fan_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
          items:
            $ref: '#/components/schemas/fan_remix_contest_ending_soon_notification_action'
    fan_remix_contest_ending_soon_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_ending_soon_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
        entity_id:
          type: string
    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
        seen_at:
          type: integer
        actions:
          type: array
          items:
            $ref: '#/components/schemas/artist_remix_contest_ended_notification_action'
    artist_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/artist_remix_contest_ended_notification_action_data'
    artist_remix_contest_ended_notification_action_data:
      required:
      - entity_id
      type: object
      properties:
        entity_id:
          type: string
    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
          items:
            $ref: '#/components/schemas/artist_remix_contest_ending_soon_notification_action'
    artist_remix_contest_ending_soon_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_ending_soon_notification_action_data'
    artist_remix_contest_ending_soon_notification_action_data:
      required:
      - entity_id
      - entity_user_id
      type: object
      properties:
        entity_user_id:
          type: string
        entity_id:
          type: string
    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
          items:
            $ref: '#/components/schemas/artist_remix_contest_submissions_notification_action'
    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'
    artist_remix_contest_submissions_notification_action_data:
      required:
      - entity_id
      - event_id
      - milestone
      type: object
      properties:
        event_id:
          type: string
        milestone:
          type: integer
        entity_id:
          type: string
    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
        actions:
          type: array
          items:
            $ref: '#/components/schemas/fan_remix_contest_winners_selected_notification_action'
    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'
    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
    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'
    playlist_updates:
      type: object
      properties:
        playlist_updates:
          type: array
          items:
            $ref: '#/components/schemas/playlist_update'
    playlist_update:
      required:
      - playlist_id
      - updated_at
      type: object
      properties:
        playlist_id:
          type: string
        updated_at:
          type: integer
        last_seen_at:
          type: integer
    attestation_reponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/attestation'
    attestation:
      required:
      - attestation
      - owner_wallet
      type: object
      properties:
        owner_wallet:
          type: string
        attestation:
          type: string
    comment_response:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/comment'
    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"
    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'
    best_selling_full_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'
    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
    redeem_amount_response:
      type: object
      required:
        - amount
      properties:
        amount:
          type: integer
          description: Static amount indicator (always 1)
          example: 1
    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
    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_reward_code_request:
      type: object
      required:
        - signature
        - mint
        - amount
      properties:
        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
          description: The reward amount (must be greater than 0)
          minimum: 1
          example: 100
    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
  responses:
    ParseError:
      description: When a mask can't be parsed
      content: {}
    MaskError:
      description: When any error occurs on mask
      content: {}
x-original-swagger-version: "2.0"
