Skip to content

Album Tracks

Track ordering and metadata within albums

Resource Overview

Album Tracks represent the many-to-many relationships between albums and tracks, managing track order within albums and providing metadata for the album-track associations. This pivot resource is essential for organizing track sequences in albums.

Base Endpoint
/album-tracks
Resource Type
album-tracks
User Scope
Album owner-restricted

Schema

Required Relationships

Relationship Type Related Resource Description
album BelongsTo albums Album to associate track with
track BelongsTo tracks Track to associate with album

Optional Attributes

Field Type Validation Description
order integer nullable, min:1, unique within its disc Track display order within its disc
disc-number integer nullable, min:1, max:99, defaults to 1 Disc/volume the track belongs to within the album

Read-only Attributes

Field Type Description
id string Unique identifier
track-id integer ID of the associated track
track-title string Title of the associated track
album-id integer ID of the associated album
album-title string Title of the associated album

Business Validations

  • Unique combination: Same track cannot be added twice to same album
  • Album ownership: Can only associate tracks with albums you own
  • Order uniqueness: Order position must be unique within each disc of the album
  • Multi-disc support: Track numbering restarts on each disc, so the same position can appear once per disc; results are returned in disc and track order
  • Read-only resource: Managed through Albums and Tracks resources

List Album Tracks

GET /album-tracks
GET /album-tracks
Authorization: Bearer {token}
Accept: application/vnd.api+json

Query Parameters

Filtering

  • filter[album] - Filter by album ID
  • filter[track] - Filter by track ID
  • filter[order] - Filter by track order
  • filter[disc-number] - Filter by disc number

Other Parameters

  • include - Include relationships
  • sort - Sort by field
  • page[number] - Page number
  • page[size] - Results per page

Example Request

GET /album-tracks?include=album,track&filter[album]=1&sort=disc-number,order

Success Response

200 OK
{
  "data": [
    {
      "type": "album-tracks",
      "id": "1",
      "attributes": {
        "order": 1,
        "disc-number": 1,
        "track-id": 15,
        "track-title": "Electric Opening",
        "album-id": 3,
        "album-title": "Digital Dreams"
      },
      "relationships": {
        "album": {
          "data": { "type": "albums", "id": "3" }
        },
        "track": {
          "data": { "type": "tracks", "id": "15" }
        }
      }
    },
    {
      "type": "album-tracks",
      "id": "2",
      "attributes": {
        "order": 2,
        "disc-number": 1,
        "track-id": 16,
        "track-title": "Neon Nights",
        "album-id": 3,
        "album-title": "Digital Dreams"
      },
      "relationships": {
        "album": {
          "data": { "type": "albums", "id": "3" }
        },
        "track": {
          "data": { "type": "tracks", "id": "16" }
        }
      }
    }
  ],
  "included": [
    {
      "type": "albums",
      "id": "3",
      "attributes": {
        "title": "Digital Dreams",
        "artwork": "https://storage.example.com/artwork/digital-dreams.jpg"
      }
    },
    {
      "type": "tracks",
      "id": "15",
      "attributes": {
        "title": "Electric Opening",
        "length": "00:03:42",
        "is-explicit": false
      }
    },
    {
      "type": "tracks",
      "id": "16",
      "attributes": {
        "title": "Neon Nights",
        "length": "00:04:18",
        "is-explicit": false
      }
    }
  ],
  "meta": {
    "page": {
      "currentPage": 1,
      "from": 1,
      "lastPage": 1,
      "perPage": 20,
      "to": 2,
      "total": 2
    }
  }
}

Get Album Track

GET /album-tracks/{id}
GET /album-tracks/1
Authorization: Bearer {token}
Accept: application/vnd.api+json

Success Response

200 OK
{
  "data": {
    "type": "album-tracks",
    "id": "1",
    "attributes": {
      "order": 1,
      "disc-number": 1,
      "track-id": 15,
      "track-title": "Electric Opening",
      "album-id": 3,
      "album-title": "Digital Dreams"
    },
    "relationships": {
      "album": {
        "data": { "type": "albums", "id": "3" }
      },
      "track": {
        "data": { "type": "tracks", "id": "15" }
      }
    }
  }
}

Key Features

Track Ordering

  • • Manage track sequence
  • • Unique order per disc
  • • Multi-disc support
  • • Ordered by disc, then order

Read-Only Access

  • • Query associations
  • • Filter by album/track
  • • Include relationships
  • • User-scoped results

Relationships

  • • Links albums to tracks
  • • Maintains ordering
  • • Provides metadata
  • • Supports inclusion