List available music categories based on user's premium tier
Back to API DocsReturns a list of music categories available to the authenticated user based on their premium tier. Only categories accessible to the user's current subscription level are returned.
GET https://premium.regardingwork.com/api/music/categories
Authorization: Bearer <jwt_token>
Authorization: Bearer your_jwt_token
No request body or query parameters required.
{
"user_tier": "PREMIUM_PLUS",
"categories": [
{
"id": 1,
"name": "Intense Work Music",
"description": "High-energy tracks for focused work sessions",
"icon": "fa-bolt",
"required_tier": "PREMIUM",
"sort_order": 1,
"is_active": true,
"created_at": "2024-08-28T12:00:00Z"
},
{
"id": 2,
"name": "Reading/Study Music",
"description": "Calm background music for reading and studying",
"icon": "fa-book",
"required_tier": "PREMIUM",
"sort_order": 2,
"is_active": true,
"created_at": "2024-08-28T12:00:00Z"
},
{
"id": 4,
"name": "Nature Sounds",
"description": "Relaxing natural soundscapes",
"icon": "fa-leaf",
"required_tier": "PREMIUM_PLUS",
"sort_order": 4,
"is_active": true,
"created_at": "2024-08-28T12:00:00Z"
}
]
}
sort_order
.
async function getMusicCategories(token) {
const response = await fetch('https://premium.regardingwork.com/api/music/categories', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + token
}
});
if (response.ok) {
const data = await response.json();
console.log(`User tier: ${data.user_tier}`);
console.log(`Available categories: ${data.categories.length}`);
// Display categories in UI
data.categories.forEach(category => {
console.log(`${category.name} (${category.required_tier})`);
});
return data.categories;
} else {
throw new Error('Failed to get categories');
}
}
func getMusicCategories(token: String) async throws -> CategoriesResponse {
let url = URL(string: "https://premium.regardingwork.com/api/music/categories")!
var request = URLRequest(url: url)
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
let (data, response) = try await URLSession.shared.data(for: request)
guard let httpResponse = response as? HTTPURLResponse,
httpResponse.statusCode == 200 else {
throw APIError.requestFailed
}
return try JSONDecoder().decode(CategoriesResponse.self, from: data)
}
// Usage example
let categories = try await getMusicCategories(token: userToken)
for category in categories.categories {
print("\(category.name) - \(category.description)")
}
Each category includes: