MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your API token by sending POST request to v1/auth/login (See docs).

Few tokens to use:
Admin: 1|4AI27ybFZZg0G1GARE65HdvJqoLtMXSSaoVXGc1G
Author: 2|Uwdd4odgSa6QXbMQCy7U6xxKGGw9R5wkflicHnpA
Fan: 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Authentication

Check email

Check if email is available for the registration

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/auth/check/email?email=joe%40example.com" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/auth/check/email"
);

const params = {
    "email": "joe@example.com",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/auth/check/email';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'email' => 'joe@example.com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
x-ratelimit-limit: 300
x-ratelimit-remaining: 299
access-control-allow-origin: *
set-cookie: qplet_core_service_session=NWJFxlbWt2AyxZ2HGJQKoo7BmvljNsE28NdmEpbn; expires=Fri, 08 Aug 2025 12:54:41 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "is_available": false
    }
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

GET v1/auth/check/email

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

email   string   

Must be a valid email address. Example: joe@example.com

Register

Endpoint for registering new users

Example request:
curl --request POST \
    "http://localhost:8083/v1/auth/register" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"Joe Shmoe\",
    \"email\": \"another.joe@example.com\",
    \"type\": \"fan\",
    \"password\": \"Ye4oKoEa3Ro9ll\",
    \"password_repeat\": \"Ye4oKoEa3Ro9ll\"
}"
const url = new URL(
    "http://localhost:8083/v1/auth/register"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "Joe Shmoe",
    "email": "another.joe@example.com",
    "type": "fan",
    "password": "Ye4oKoEa3Ro9ll",
    "password_repeat": "Ye4oKoEa3Ro9ll"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/auth/register';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'Joe Shmoe',
            'email' => 'another.joe@example.com',
            'type' => 'fan',
            'password' => 'Ye4oKoEa3Ro9ll',
            'password_repeat' => 'Ye4oKoEa3Ro9ll',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
x-ratelimit-limit: 300
x-ratelimit-remaining: 298
access-control-allow-origin: *
set-cookie: qplet_core_service_session=G0AMIwJLVsh7R9jtemXxZPFKQ7qeK3rX45glLSeg; expires=Fri, 08 Aug 2025 12:54:43 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "name": "Joe Shmoe",
        "email": "another.joe@example.com",
        "type": "fan"
    }
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/auth/register

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

name   string   

Must be a full name of the user. Example: Joe Shmoe

email   string   

Must be a valid email address. Example: another.joe@example.com

type   string   

Example: fan

Must be one of:
  • author
  • fan
password   string   

Must be at least 8 characters. Example: Ye4oKoEa3Ro9ll

password_repeat   string   

The password_repeat and password must match. The value and password must match. Example: Ye4oKoEa3Ro9ll

Authenticate

Authenticate user

Example request:
curl --request POST \
    "http://localhost:8083/v1/auth/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"email\": \"joe@example.com\",
    \"password\": \"Ye4oKoEa3Ro9ll\",
    \"device\": \"IPhone 14\"
}"
const url = new URL(
    "http://localhost:8083/v1/auth/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "email": "joe@example.com",
    "password": "Ye4oKoEa3Ro9ll",
    "device": "IPhone 14"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/auth/login';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'email' => 'joe@example.com',
            'password' => 'Ye4oKoEa3Ro9ll',
            'device' => 'IPhone 14',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
x-ratelimit-limit: 300
x-ratelimit-remaining: 297
access-control-allow-origin: *
set-cookie: qplet_core_service_session=KG3SWRQytO86rl1q5agKfolb7S7b0XxwTQeyVUX5; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "token": "191|qR9AhLybjLNWyyR7bK8nXwuinmw6jTdLeddYicghbd7cbbe0"
    }
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/auth/login

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

email   string   

Email address. Must be a valid email address. Example: joe@example.com

password   string   

User Password. Example: Ye4oKoEa3Ro9ll

device   string  optional  

Device name user is authenticating with. Example: IPhone 14

Request password reset

Request a password reset mail

Example request:
curl --request POST \
    "http://localhost:8083/v1/auth/password-reset?email=joe%40example.com" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/auth/password-reset"
);

const params = {
    "email": "joe@example.com",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/auth/password-reset';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'email' => 'joe@example.com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/auth/password-reset

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

email   string   

Must be a valid email address. Example: joe@example.com

Reset password

Set new password for the account

Example request:
curl --request PUT \
    "http://localhost:8083/v1/auth/password-reset/illo" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"email\": \"joe@example.com\",
    \"password\": \"Ye4oKoEa3Ro9ll\",
    \"password_repeat\": \"Ye4oKoEa3Ro9ll\"
}"
const url = new URL(
    "http://localhost:8083/v1/auth/password-reset/illo"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "email": "joe@example.com",
    "password": "Ye4oKoEa3Ro9ll",
    "password_repeat": "Ye4oKoEa3Ro9ll"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/auth/password-reset/illo';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'email' => 'joe@example.com',
            'password' => 'Ye4oKoEa3Ro9ll',
            'password_repeat' => 'Ye4oKoEa3Ro9ll',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (404):


{
    "type": "PasswordReset",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PUT v1/auth/password-reset/{token}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

token   string   

Example: illo

Body Parameters

email   string   

Must be a valid email address. Example: joe@example.com

password   string   

Must be at least 8 characters. Example: Ye4oKoEa3Ro9ll

password_repeat   string   

The password_repeat and password must match. The value and password must match. Example: Ye4oKoEa3Ro9ll

Validate password request code

Check validation code before asking for filling in the password

Example request:
curl --request POST \
    "http://localhost:8083/v1/auth/password-reset/hic/validate?email=joe%40example.com" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/auth/password-reset/hic/validate"
);

const params = {
    "email": "joe@example.com",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/auth/password-reset/hic/validate';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'email' => 'joe@example.com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
x-ratelimit-limit: 300
x-ratelimit-remaining: 296
access-control-allow-origin: *
set-cookie: qplet_core_service_session=q10Lp5ZTW5z0j9mQG7oiP3Ll7fzBkZQhvydEbEPA; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "is_valid": false
    }
}
 

Request      

POST v1/auth/password-reset/{token}/validate

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

token   string   

Example: hic

Query Parameters

email   string   

Must be a valid email address. Example: joe@example.com

Users

Show

Current user

requires authentication

Endpoint for fetching details about logged in user

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users/me" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/me"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=5WNNqYEeZ4m6O8QPkzUWq5Xd5oGb4VtA8s4gGKMF; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-df85-4307-a069-68612c4471e3",
        "name": "Admin Test Country",
        "email": "admin@qplet.ru",
        "is_subscribed": false,
        "analytics": {
            "tracks": 42,
            "albums": 3,
            "subscribers": 192
        },
        "type": "admin"
    }
}
 

Request      

GET v1/users/me

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

By ID

Endpoint for fetching user details

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=byEH4xSI8nWPqT4DMfaCD6WXylHH4kAac1lF5fxv; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-df85-4307-a069-68612c4471e1",
        "name": "Fan Test Country",
        "is_subscribed": false,
        "analytics": {
            "tracks": 98,
            "albums": 3,
            "subscribers": 420
        }
    }
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Request      

GET v1/users/{user_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Delete

requires authentication

Soft deletes own account

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/users/me" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/me"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

DELETE v1/users/me

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Update

requires authentication

Update currently logged in user

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/users/me" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"Joe Shmoe\",
    \"password\": \"Ye4oKoEa3Ro9ll\",
    \"password_repeat\": \"Ye4oKoEa3Ro9ll\",
    \"profile\": {
        \"gender\": \"male\",
        \"nickname\": \"joe_shmoe\",
        \"website\": \"https:\\/\\/qplet.ru\",
        \"about\": \"I`m Joe Shmoe\\n\\n I love singing and dancing.\",
        \"avatar_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
        \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
        \"birthdate\": \"2000-01-01\"
    }
}"
const url = new URL(
    "http://localhost:8083/v1/users/me"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "Joe Shmoe",
    "password": "Ye4oKoEa3Ro9ll",
    "password_repeat": "Ye4oKoEa3Ro9ll",
    "profile": {
        "gender": "male",
        "nickname": "joe_shmoe",
        "website": "https:\/\/qplet.ru",
        "about": "I`m Joe Shmoe\n\n I love singing and dancing.",
        "avatar_id": "00000000-422e-41ff-a266-2b0a093307e6",
        "cover_id": "00000000-422e-41ff-a266-2b0a093307e6",
        "birthdate": "2000-01-01"
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'Joe Shmoe',
            'password' => 'Ye4oKoEa3Ro9ll',
            'password_repeat' => 'Ye4oKoEa3Ro9ll',
            'profile' => [
                'gender' => 'male',
                'nickname' => 'joe_shmoe',
                'website' => 'https://qplet.ru',
                'about' => 'I`m Joe Shmoe'."\n"
                    ."\n"
                    .' I love singing and dancing.',
                'avatar_id' => '00000000-422e-41ff-a266-2b0a093307e6',
                'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
                'birthdate' => '2000-01-01',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=5cypfGPHW0SUuXkJZravYXTw3HO5e9zPB0KJRpGc; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

Request      

PATCH v1/users/me

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

name   string  optional  

Must be a full name of the user. Example: Joe Shmoe

password   string  optional  

Must be at least 8 characters. Example: Ye4oKoEa3Ro9ll

password_repeat   string  optional  

The password_repeat and password must match. This field is required when password is present. The value and password must match. Example: Ye4oKoEa3Ro9ll

profile   object  optional  
gender   string  optional  

Example: male

Must be one of:
  • male
  • female
nickname   string  optional  

Must be unique. Must match the regex /^[A-Za-z0-9_-]+$/. Must be between 6 and 20 characters. Example: joe_shmoe

website   string  optional  

Fully qualified URL. Must be a valid URL. Example: https://qplet.ru

about   string  optional  

Freeform multiline input. Example: Im Joe Shmoe

I love singing and dancing.`

avatar_id   string  optional  

MediaAssets ID that belongs to the user. Example: 00000000-422e-41ff-a266-2b0a093307e6

cover_id   string  optional  

MediaAssets ID that belongs to the user. Example: 00000000-422e-41ff-a266-2b0a093307e6

birthdate   string  optional  

Must be a valid date in the format Y-m-d. Example: 2000-01-01

List

Endpoint for fetching list of users

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users?filters[name]=Joe+Shmoe&filters[type]=author&filters[genres]=%5B%229f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12%22%2C%229f95986e-f2d8-434d-b282-8c39b9996cdb%22%5D&filters[subscribed]=&per_page=20&page=1&pagination_type=page" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users"
);

const params = {
    "filters[name]": "Joe Shmoe",
    "filters[type]": "author",
    "filters[genres]": "["9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12","9f95986e-f2d8-434d-b282-8c39b9996cdb"]",
    "filters[subscribed]": "",
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[name]' => 'Joe Shmoe',
            'filters[type]' => 'author',
            'filters[genres]' => '["9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12","9f95986e-f2d8-434d-b282-8c39b9996cdb"]',
            'filters[subscribed]' => '',
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=EJ5bzQFZ3PAiYCJMXpbSShz01zTcrWp6kiL0MKOr; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [],
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "path": "http://localhost:8083/v1/users",
        "per_page": 20,
        "to": null,
        "total": 0
    }
}
 

Request      

GET v1/users

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object  optional  
filters.name   string  optional  

Example: Joe Shmoe

filters.type   string   

Example: author

Must be one of:
  • author
  • fan
filters.genres   string  optional  

List of genre IDs. Must be a valid JSON string. Example: ["9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12","9f95986e-f2d8-434d-b282-8c39b9996cdb"]

filters.subscribed   boolean  optional  

Example: false

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Access

Blocked users

requires authentication

Users being blocked by the currently logged-in user

Example request:
curl --request POST \
    "http://localhost:8083/v1/users/me/blocked?per_page=20&page=1&pagination_type=page&sort[by]=created_at&sort[order]=asc" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/me/blocked"
);

const params = {
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
    "sort[by]": "created_at",
    "sort[order]": "asc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/blocked';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
            'sort[by]' => 'created_at',
            'sort[order]' => 'asc',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Request      

POST v1/users/me/blocked

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page
sort   object  optional  
sort.by   string  optional  

Example: created_at

Must be one of:
  • created_at
sort.order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc

Block

requires authentication

Block a user

Example request:
curl --request POST \
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/block" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/block"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/block';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/users/{user_id}/block

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Unblock

requires authentication

Unblock a user

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/block" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/block"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/block';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Request      

DELETE v1/users/{user_id}/block

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Subscriptions

Subscribe

requires authentication

Subscribe to a user

Example request:
curl --request POST \
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscribe" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscribe"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscribe';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Request      

POST v1/users/{user_id}/subscribe

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Unsubscribe

requires authentication

Unsubscribe from a user

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscribe" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscribe"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscribe';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Request      

DELETE v1/users/{user_id}/subscribe

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Subscriptions

requires authentication

List of users that the user is subscribed to

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscriptions?per_page=20&page=1&pagination_type=page&sort[by]=created_at&sort[order]=asc" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscriptions"
);

const params = {
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
    "sort[by]": "created_at",
    "sort[order]": "asc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscriptions';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
            'sort[by]' => 'created_at',
            'sort[order]' => 'asc',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Request      

GET v1/users/{user_id}/subscriptions

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Query Parameters

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page
sort   object  optional  
sort.by   string  optional  

Example: created_at

Must be one of:
  • created_at
sort.order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc

Subscribers

requires authentication

List of users that are subscribed to the user

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscribers?per_page=20&page=1&pagination_type=page&sort[by]=created_at&sort[order]=asc" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscribers"
);

const params = {
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
    "sort[by]": "created_at",
    "sort[order]": "asc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/subscribers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
            'sort[by]' => 'created_at',
            'sort[order]' => 'asc',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Request      

GET v1/users/{user_id}/subscribers

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Query Parameters

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page
sort   object  optional  
sort.by   string  optional  

Example: created_at

Must be one of:
  • created_at
sort.order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc

Posts

Store

requires authentication

Create a post with optionally shared entity

Example request:
curl --request POST \
    "http://localhost:8083/v1/posts" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"content\": \"My Post content\",
    \"share\": {
        \"entity\": \"post\",
        \"id\": \"00000000-fdb0-43ce-b555-e0a26ed563ac\"
    }
}"
const url = new URL(
    "http://localhost:8083/v1/posts"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "content": "My Post content",
    "share": {
        "entity": "post",
        "id": "00000000-fdb0-43ce-b555-e0a26ed563ac"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/posts';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'content' => 'My Post content',
            'share' => [
                'entity' => 'post',
                'id' => '00000000-fdb0-43ce-b555-e0a26ed563ac',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=iYNzgi4IpjGuzvRNPPfimX5NbmbqulzoZXEURMAn; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95a3dc-5b1c-41a8-97aa-9ad8a7f4c734",
        "author": {
            "id": "00000000-df85-4307-a069-68612c4471e3",
            "name": "Admin Test Country",
            "avatar_url": null
        },
        "content": "My Post content",
        "created_at": 1754650480,
        "share": {
            "id": "00000000-fdb0-43ce-b555-e0a26ed563ac",
            "type": "post"
        },
        "analytics": {
            "views": 0,
            "likes": 0,
            "comments": 0,
            "shares": 0
        },
        "is_liked": 0
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/posts

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

content   string   

Example: My Post content

share   object  optional  
entity   string  optional  

This field is required when share is present. Example: post

Must be one of:
  • album
  • event
  • playlist
  • post
  • track
  • media_asset
id   string  optional  

This field is required when share is present. Must be a valid UUID. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

Update

requires authentication

Update own post

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/posts/00000000-fdb0-43ce-b555-e0a26ed563ac" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"content\": \"My Post content updated\"
}"
const url = new URL(
    "http://localhost:8083/v1/posts/00000000-fdb0-43ce-b555-e0a26ed563ac"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "content": "My Post content updated"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/posts/00000000-fdb0-43ce-b555-e0a26ed563ac';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'content' => 'My Post content updated',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=QWGzKGcQBoNjqT9FWtk6SWm3gAZdkTkepr1wnwpQ; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-fdb0-43ce-b555-e0a26ed563ac",
        "author": {
            "id": "00000000-df85-4307-a069-68612c4471e1",
            "name": "Fan Test Country",
            "avatar_url": null
        },
        "content": "My Post content updated",
        "created_at": 1754648587,
        "updated_at": 1754650480,
        "analytics": {
            "views": 0,
            "likes": 0,
            "comments": 0,
            "shares": 0
        },
        "is_liked": 0
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Post",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PATCH v1/posts/{post_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

post_id   string   

The ID of the post. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

Body Parameters

content   string   

Example: My Post content updated

Delete

requires authentication

Delete own post

Admin can remove any post

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/posts/00000000-fdb0-43ce-b555-e0a26ed563ac" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/posts/00000000-fdb0-43ce-b555-e0a26ed563ac"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/posts/00000000-fdb0-43ce-b555-e0a26ed563ac';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=D9BcKOHq1H3pHb7TnOdMibjHnF9p8D2ntXU6CYUR; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Post",
    "message": "No query results"
}
 

Request      

DELETE v1/posts/{post_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

post_id   string   

The ID of the post. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

List

Endpoint for fetching list of posts

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/posts?filters[author_id]=00000000-df85-4307-a069-68612c4471e2&filters[subscribed]=1&per_page=20&page=1&pagination_type=page&sort[by]=created_at&sort[order]=asc" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/posts"
);

const params = {
    "filters[author_id]": "00000000-df85-4307-a069-68612c4471e2",
    "filters[subscribed]": "1",
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
    "sort[by]": "created_at",
    "sort[order]": "asc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/posts';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[author_id]' => '00000000-df85-4307-a069-68612c4471e2',
            'filters[subscribed]' => '1',
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
            'sort[by]' => 'created_at',
            'sort[order]' => 'asc',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=xH0fPfxEyO51CkEoIZ1PIYa5Iw15tM2pc2hhXWG6; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [],
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "path": "http://localhost:8083/v1/posts",
        "per_page": 20,
        "to": null,
        "total": 0
    }
}
 

Request      

GET v1/posts

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object  optional  
filters.author_id   string  optional  

Must be a valid UUID. Example: 00000000-df85-4307-a069-68612c4471e2

filters.subscribed   boolean  optional  

Example: true

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page
sort   object  optional  
sort.by   string  optional  

Example: created_at

Must be one of:
  • created_at
sort.order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc

Show

Returns single post

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/posts/00000000-fdb0-43ce-b555-e0a26ed563ac" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/posts/00000000-fdb0-43ce-b555-e0a26ed563ac"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/posts/00000000-fdb0-43ce-b555-e0a26ed563ac';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=zl2x37sRJaCylsaz7KCRkE0iHwvuAwLTYamTctLk; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-fdb0-43ce-b555-e0a26ed563ac",
        "author": {
            "id": "00000000-df85-4307-a069-68612c4471e1",
            "name": "Fan Test Country",
            "avatar_url": null
        },
        "content": "Eaque dolore facilis illo sint. Aut corrupti qui mollitia officia. Nihil nemo corporis consequatur id quia exercitationem illum.",
        "created_at": 1754648587,
        "analytics": {
            "views": 0,
            "likes": 0,
            "comments": 0,
            "shares": 0
        },
        "is_liked": 0
    }
}
 

Example response (404):


{
    "type": "Post",
    "message": "No query results"
}
 

Request      

GET v1/posts/{post_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

post_id   string   

The ID of the post. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

Comments

Store

requires authentication

Create a comment in association to an entity

Example request:
curl --request POST \
    "http://localhost:8083/v1/comments" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"entity\": {
        \"type\": \"post\",
        \"id\": \"00000000-53f7-4a5b-8c34-e171172c8ba8\"
    },
    \"content\": \"My comment to the post\"
}"
const url = new URL(
    "http://localhost:8083/v1/comments"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "entity": {
        "type": "post",
        "id": "00000000-53f7-4a5b-8c34-e171172c8ba8"
    },
    "content": "My comment to the post"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/comments';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'entity' => [
                'type' => 'post',
                'id' => '00000000-53f7-4a5b-8c34-e171172c8ba8',
            ],
            'content' => 'My comment to the post',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=0DSHQSoRT2rFTAzpwAFtc1YVYpGyuDRAU8J40AMu; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95a3d7-ac94-4990-8079-0f66379d2606",
        "entity": {
            "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
            "type": "post"
        },
        "attachments": [],
        "content": "My comment to the post",
        "created_at": 1754650477
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/comments

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

entity   object   
type   string   

Example: post

Must be one of:
  • album
  • event
  • playlist
  • post
  • track
  • media_asset
id   string   

Must be a valid UUID. Example: 00000000-53f7-4a5b-8c34-e171172c8ba8

content   string   

Example: My comment to the post

Update

requires authentication

Update own comment

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/comments/00000000-4113-4f04-bf25-cbca8546be74" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"content\": \"My comment to the post\"
}"
const url = new URL(
    "http://localhost:8083/v1/comments/00000000-4113-4f04-bf25-cbca8546be74"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "content": "My comment to the post"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/comments/00000000-4113-4f04-bf25-cbca8546be74';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'content' => 'My comment to the post',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=xKAZwrWYLMsSB3KmTz1Lvd3KP3m81H2DGR7HqgFb; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-4113-4f04-bf25-cbca8546be74",
        "entity": {
            "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
            "type": "post"
        },
        "attachments": [
            null
        ],
        "content": "My comment to the post",
        "created_at": 1754648586,
        "updated_at": 1754650477
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Comment",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PATCH v1/comments/{comment_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

comment_id   string   

The ID of the comment. Example: 00000000-4113-4f04-bf25-cbca8546be74

Body Parameters

content   string   

Example: My comment to the post

Delete

requires authentication

Delete own comment

Admin can remove any comment

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/comments/00000000-4113-4f04-bf25-cbca8546be74" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/comments/00000000-4113-4f04-bf25-cbca8546be74"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/comments/00000000-4113-4f04-bf25-cbca8546be74';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=AwgBGPOEQCeC5wgHhqEfwXJBLJWJlz4TjBHmIZbX; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Comment",
    "message": "No query results"
}
 

Request      

DELETE v1/comments/{comment_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

comment_id   string   

The ID of the comment. Example: 00000000-4113-4f04-bf25-cbca8546be74

List

Endpoint for fetching list of comments

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/comments?filters[entity_type]=post&filters[entity_id]=00000000-53f7-4a5b-8c34-e171172c8ba8&per_page=20&page=1&pagination_type=page" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/comments"
);

const params = {
    "filters[entity_type]": "post",
    "filters[entity_id]": "00000000-53f7-4a5b-8c34-e171172c8ba8",
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/comments';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[entity_type]' => 'post',
            'filters[entity_id]' => '00000000-53f7-4a5b-8c34-e171172c8ba8',
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=noF9dTK6VGZJwHC5rfbk8BAMB4DtXCWxs6EAZ1IM; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "00000000-4113-4f04-bf25-cbca8546be74",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [
                null
            ],
            "content": "Sed asperiores voluptatem sapiente suscipit odio. Molestias officia architecto et vel magnam ut. Voluptatem laboriosam ipsa quis dolorem velit. Qui vel eaque sint enim aut quam in.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-5066-4285-82dd-caba53be84da",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Dignissimos perspiciatis vero reiciendis. Deserunt voluptatem saepe quam rem veritatis qui deserunt. Aut animi dolorem aut ullam officiis culpa dolor itaque.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-5146-4d0d-bc12-8484a297bb0f",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Ex nisi dicta enim dicta. Sed soluta nostrum praesentium deleniti error eos beatae. Soluta a earum quia accusamus laborum. Fuga non sit nam maiores magni est.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-5320-4ad5-9404-95f5e428aa04",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Expedita iste beatae nesciunt et vel sed. Incidunt dolores praesentium accusamus provident. Ut rerum labore sit voluptatem. Deleniti quis repellat voluptas accusamus occaecati in.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-553d-4b51-bf4a-49a1fcc171e2",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Cupiditate illum quas et eligendi atque accusantium reprehenderit. Architecto est ut natus minus impedit. Explicabo quos facilis et.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-56ca-4f2a-ad58-2761fa7ea5df",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Tempora ut voluptas labore eum nam. In qui ipsum ad tempore illo ullam. Illo quam earum vitae aspernatur.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-581e-4884-a265-13c7c7bc6a7d",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Est quidem labore laboriosam molestiae laboriosam. Animi qui quia et qui dignissimos cupiditate debitis. Error dolor nam quam. Et rerum sit illum.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-59de-4180-85ae-d994a15cc73d",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Rerum animi inventore sit odit earum voluptatum. Magnam incidunt ut laudantium. Ea eveniet ab maiores rem sunt nobis quasi.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-5b68-4874-bae8-6c6f3a47484e",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Voluptatem et quis ut quia cumque deleniti. Ullam nemo non similique. Qui soluta in enim nemo error. Explicabo quaerat officiis necessitatibus quis.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-5ce4-4c17-933d-2795d9d09df7",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Quaerat sit delectus et porro. Necessitatibus facere iure tenetur delectus placeat. Aspernatur ut non est impedit. Dolor aut dolores explicabo et et minus.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-5e69-47f7-80d5-a10a5fe1e809",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Voluptas ex non aut in adipisci beatae est corrupti. Nihil voluptatem architecto ullam qui qui quam velit. Vel laboriosam vel in.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-5f68-4fb4-bd27-d6750a8155bf",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Cupiditate amet ut odit saepe. Delectus in est tempora aut nisi. Voluptate neque et id quidem.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-611f-4a7e-b0b2-cedcfccdaa9c",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Qui voluptate omnis quidem id. Ducimus perspiciatis reprehenderit pariatur corporis necessitatibus. Aut pariatur sed molestiae suscipit similique et qui.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-62c3-480d-98f4-88ab3657eb10",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Vel fugit architecto quo optio. Est debitis explicabo qui distinctio doloremque id. Debitis non sunt dolores officia eaque labore magnam. Quaerat culpa et est error maiores nihil natus recusandae.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-64f9-48e5-96e3-0435d4022345",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Qui dignissimos error nulla laudantium eos. Aut dicta iste suscipit. Accusamus voluptate facilis esse laborum expedita qui.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-6701-4a37-bb63-d7d77ec89f92",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Repudiandae molestiae in consequatur ut ut eum laboriosam. Suscipit reprehenderit voluptas quo animi vel. Voluptatem animi impedit qui velit quas. Eos labore vel quod magni.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-68c1-47d4-a0e4-27d5668c746b",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Cumque rerum culpa commodi voluptatem voluptas. Perspiciatis provident incidunt cum. Ut velit repudiandae et qui. Doloribus quis amet asperiores et esse.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-6aaa-4864-a6e8-16b5a4d31e0f",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Nam cumque perferendis et. Eaque qui tenetur et est nemo. Quaerat qui ipsam eveniet rerum et.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-6c39-48cf-a547-4c2a251e1d3a",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Dicta nostrum a quidem ullam. Eveniet sit sed hic voluptatem tempore consequuntur. Unde sed deleniti porro doloremque cupiditate aliquid assumenda.",
            "created_at": 1754648586
        },
        {
            "id": "9f959892-6dff-4c88-b768-7f5a857d9978",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Corporis voluptas iusto nesciunt ut soluta ea. Ut sit assumenda ea nulla sit sit. Nihil autem laudantium dolor dolorum quos.",
            "created_at": 1754648586
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 3,
        "path": "http://localhost:8083/v1/comments",
        "per_page": 20,
        "to": 20,
        "total": 51
    }
}
 

Request      

GET v1/comments

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object   
filters.entity_type   string   

Example: post

Must be one of:
  • album
  • event
  • playlist
  • post
  • track
  • media_asset
filters.entity_id   string   

Must be a valid UUID. Example: 00000000-53f7-4a5b-8c34-e171172c8ba8

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Show

Returns single comment

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/comments/00000000-4113-4f04-bf25-cbca8546be74" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/comments/00000000-4113-4f04-bf25-cbca8546be74"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/comments/00000000-4113-4f04-bf25-cbca8546be74';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=yRA0JHldHZYBVwRwMjBq7vrlZrMImwV87XG8kngH; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-4113-4f04-bf25-cbca8546be74",
        "entity": {
            "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
            "type": "post"
        },
        "attachments": [
            {
                "type": "image",
                "id": "00000000-422e-41ff-a266-2b0a093307e6",
                "filename": "libero-etsilo",
                "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo",
                "extension": "silo",
                "created_at": "2025-08-08T10:23:05.000000Z"
            }
        ],
        "content": "Sed asperiores voluptatem sapiente suscipit odio. Molestias officia architecto et vel magnam ut. Voluptatem laboriosam ipsa quis dolorem velit. Qui vel eaque sint enim aut quam in.",
        "created_at": 1754648586
    }
}
 

Example response (404):


{
    "type": "Comment",
    "message": "No query results"
}
 

Request      

GET v1/comments/{comment_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

comment_id   string   

The ID of the comment. Example: 00000000-4113-4f04-bf25-cbca8546be74

Albums

Create

requires authentication

Add new Album

Example request:
curl --request POST \
    "http://localhost:8083/v1/albums" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"My favourite\",
    \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
    \"description\": \"Write short or long description about your album in here ...\",
    \"tracks\": [
        \"00000000-a791-4783-9845-4b571a9e579f\"
    ]
}"
const url = new URL(
    "http://localhost:8083/v1/albums"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "My favourite",
    "cover_id": "00000000-422e-41ff-a266-2b0a093307e6",
    "description": "Write short or long description about your album in here ...",
    "tracks": [
        "00000000-a791-4783-9845-4b571a9e579f"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/albums';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'My favourite',
            'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
            'description' => 'Write short or long description about your album in here ...',
            'tracks' => [
                '00000000-a791-4783-9845-4b571a9e579f',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=6fCBKU9FDmCNBlgTrX2YKKf79fPPLAYZs0K5a4YN; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95a3dc-302a-40c5-890a-3d244691a1cc",
        "name": "My favourite",
        "description": "Write short or long description about your album in here ...",
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo",
            "filename": "libero-etsilo",
            "created_at": "2025-08-08T10:23:05+00:00",
            "type": "image",
            "analytics": {
                "views": 1479,
                "likes": 0,
                "comments": 0,
                "shares": 11
            }
        },
        "owner": {
            "id": "00000000-df85-4307-a069-68612c4471e3",
            "name": "Admin Test Country",
            "avatar_url": null
        },
        "tracks_count": 1,
        "tracks": [
            {
                "id": "00000000-a791-4783-9845-4b571a9e579f",
                "title": "Rolling in the Deep",
                "media_asset": {
                    "id": "9f959894-3151-46c4-89fa-b5ce57247988",
                    "url": "http://localhost:8083/v1/media-assets/9f959894-3151-46c4-89fa-b5ce57247988.wm"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 0,
                    "shares": 2
                },
                "is_liked": 0
            }
        ],
        "created_at": 1754650480
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/albums

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

name   string   

Example: My favourite

cover_id   string  optional  

Media Asset UUID. Must be a valid UUID. Example: 00000000-422e-41ff-a266-2b0a093307e6

description   string  optional  

Example: Write short or long description about your album in here ...

tracks   string[]   

Media Asset ID. Must be a valid UUID.

Update

requires authentication

Update a Album

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/albums/00000000-b7fa-4324-b250-a3c6c78b65c4" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"My favourite\",
    \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
    \"description\": \"Write short or long description about your album in here ...\",
    \"tracks\": [
        \"00000000-a791-4783-9845-4b571a9e579f\"
    ]
}"
const url = new URL(
    "http://localhost:8083/v1/albums/00000000-b7fa-4324-b250-a3c6c78b65c4"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "My favourite",
    "cover_id": "00000000-422e-41ff-a266-2b0a093307e6",
    "description": "Write short or long description about your album in here ...",
    "tracks": [
        "00000000-a791-4783-9845-4b571a9e579f"
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/albums/00000000-b7fa-4324-b250-a3c6c78b65c4';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'My favourite',
            'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
            'description' => 'Write short or long description about your album in here ...',
            'tracks' => [
                '00000000-a791-4783-9845-4b571a9e579f',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=zXIh4hUeSGGIJGrel1n3elwLehzsifLOGha9ihEo; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-b7fa-4324-b250-a3c6c78b65c4",
        "name": "My favourite",
        "description": "Write short or long description about your album in here ...",
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo",
            "filename": "libero-etsilo",
            "created_at": "2025-08-08T10:23:05+00:00",
            "type": "image",
            "analytics": {
                "views": 1927,
                "likes": 0,
                "comments": 0,
                "shares": 10
            }
        },
        "owner": {
            "id": "00000000-df85-4307-a069-68612c4471e1",
            "name": "Fan Test Country",
            "avatar_url": null
        },
        "tracks_count": 1,
        "tracks": [
            {
                "id": "00000000-a791-4783-9845-4b571a9e579f",
                "title": "Rolling in the Deep",
                "media_asset": {
                    "id": "9f959894-3151-46c4-89fa-b5ce57247988",
                    "url": "http://localhost:8083/v1/media-assets/9f959894-3151-46c4-89fa-b5ce57247988.wm"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 4,
                    "likes": 0,
                    "comments": 0,
                    "shares": 12
                },
                "is_liked": 0
            }
        ],
        "created_at": 1754648641
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Album",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PATCH v1/albums/{album_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

album_id   string   

The ID of the album. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

Body Parameters

name   string   

Example: My favourite

cover_id   string  optional  

Media Asset UUID. Must be a valid UUID. Example: 00000000-422e-41ff-a266-2b0a093307e6

description   string  optional  

Example: Write short or long description about your album in here ...

tracks   string[]   

Media Asset ID. Must be a valid UUID.

Delete

requires authentication

Delete a Album

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/albums/00000000-b7fa-4324-b250-a3c6c78b65c4" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/albums/00000000-b7fa-4324-b250-a3c6c78b65c4"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/albums/00000000-b7fa-4324-b250-a3c6c78b65c4';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=2zjGc3F78LahTq5hrkRpzeEBPEpP8bdZIgUpDqm6; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Album",
    "message": "No query results"
}
 

Request      

DELETE v1/albums/{album_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

album_id   string   

The ID of the album. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

List

Endpoint for fetching all available albums.

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/albums?filters[name]=&filters[owner]=&per_page=5&page=68&cursor=labore&pagination_type=cursor&sort[by]=name&sort[order]=asc" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/albums"
);

const params = {
    "filters[name]": "",
    "filters[owner]": "",
    "per_page": "5",
    "page": "68",
    "cursor": "labore",
    "pagination_type": "cursor",
    "sort[by]": "name",
    "sort[order]": "asc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/albums';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[name]' => '',
            'filters[owner]' => '',
            'per_page' => '5',
            'page' => '68',
            'cursor' => 'labore',
            'pagination_type' => 'cursor',
            'sort[by]' => 'name',
            'sort[order]' => 'asc',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=aj9zv9leFXxOlpnNtuQZgGSwxnrWdizxoNCQfOBU; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "9f9598e5-45fd-49db-b869-77c85bee671b",
            "name": "Accusamus",
            "description": null,
            "tracks_count": 0,
            "tracks": [],
            "created_at": 1754648641
        },
        {
            "id": "9f9598e5-428c-4e8a-b7f3-cefc034bf029",
            "name": "Adipisci",
            "description": null,
            "tracks_count": 0,
            "tracks": [],
            "created_at": 1754648641
        },
        {
            "id": "9f9598e5-433b-4493-8dd4-abbeb2a0da86",
            "name": "Aliquid",
            "description": null,
            "tracks_count": 0,
            "tracks": [],
            "created_at": 1754648641
        },
        {
            "id": "9f9598e5-55da-4650-8716-b2a88460ed0b",
            "name": "Amet",
            "description": null,
            "tracks_count": 0,
            "tracks": [],
            "created_at": 1754648641
        },
        {
            "id": "9f9598e5-5793-4d34-892e-f76864e1804d",
            "name": "Animi",
            "description": null,
            "tracks_count": 0,
            "tracks": [],
            "created_at": 1754648641
        }
    ],
    "meta": {
        "path": "http://localhost:8083/v1/albums",
        "per_page": 5,
        "next_cursor": "eyJuYW1lIjoiQW5pbWkiLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9",
        "prev_cursor": null
    }
}
 

Request      

GET v1/albums

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object  optional  
filters.name   string  optional  
filters.owner   string  optional  

Must be a valid UUID.

per_page   integer  optional  

Must be between 5 and 100. Example: 5

page   integer  optional  

Must be at least 1. Example: 68

cursor   string  optional  

Example: labore

pagination_type   string  optional  

Example: cursor

Must be one of:
  • cursor
  • page
sort   object  optional  
sort.by   string  optional  

Example: name

Must be one of:
  • created_at
  • name
sort.order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc

Show

requires authentication

Endpoint for fetching album details

When album is private it can only be viewed by admin

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/albums/00000000-b7fa-4324-b250-a3c6c78b65c4" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/albums/00000000-b7fa-4324-b250-a3c6c78b65c4"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/albums/00000000-b7fa-4324-b250-a3c6c78b65c4';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=iW1dhBi6mzz27Ol6EHDoAxaREJgUwgJ0IOQcm694; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-b7fa-4324-b250-a3c6c78b65c4",
        "name": "My favourite",
        "description": null,
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo",
            "filename": "libero-etsilo",
            "created_at": "2025-08-08T10:23:05+00:00",
            "type": "image",
            "analytics": {
                "views": 2325,
                "likes": 0,
                "comments": 0,
                "shares": 6
            }
        },
        "owner": {
            "id": "00000000-df85-4307-a069-68612c4471e1",
            "name": "Fan Test Country",
            "avatar_url": null
        },
        "tracks_count": 21,
        "tracks": [
            {
                "id": "00000000-a791-4783-9845-4b571a9e579f",
                "title": "Rolling in the Deep",
                "media_asset": {
                    "id": "9f959894-3151-46c4-89fa-b5ce57247988",
                    "url": "http://localhost:8083/v1/media-assets/9f959894-3151-46c4-89fa-b5ce57247988.wm"
                },
                "cover": {
                    "id": "9f959894-3598-41dd-916e-705f73fff6d6",
                    "url": "https://via.placeholder.com/640x480.png/00cc33?text=aliquam"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 6,
                    "likes": 0,
                    "comments": 8,
                    "shares": 4
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-5390-4d7b-a4a6-1a77166e73ca",
                "title": "Ut aspernatur nihil repellat earum dolor praesentium.",
                "media_asset": {
                    "id": "9f9598e6-c64e-49d0-829d-fa9f7a2ada3f",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e6-c64e-49d0-829d-fa9f7a2ada3f.class"
                },
                "cover": {
                    "id": "9f9598e6-c93b-41f2-9438-96f6d2564a1e",
                    "url": "https://via.placeholder.com/640x480.png/0099dd?text=cum"
                },
                "owner": {
                    "id": "9f9598e6-c3c4-4659-aa56-6e774a6f2fc1",
                    "name": "Leonora Weimann DVM",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 5,
                    "likes": 0,
                    "comments": 12,
                    "shares": 4
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-5499-43cc-94eb-4956dc917669",
                "title": "Aperiam eum adipisci praesentium quam illum.",
                "media_asset": {
                    "id": "9f9598e6-cde0-498e-9cbc-ee0f5ec1d9f1",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e6-cde0-498e-9cbc-ee0f5ec1d9f1.xlf"
                },
                "cover": {
                    "id": "9f9598e6-cffa-4df6-9959-5be3d245478a",
                    "url": "https://via.placeholder.com/640x480.png/002266?text=labore"
                },
                "owner": {
                    "id": "9f9598e6-cbc3-4154-bd60-722a4ee2fa32",
                    "name": "Isabell Greenholt",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 12,
                    "likes": 0,
                    "comments": 7,
                    "shares": 11
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-55c1-4234-802e-18f636144070",
                "title": "Dolorum numquam quae velit ut.",
                "media_asset": {
                    "id": "9f9598e6-d44e-43fe-bf73-0806fd0e8a9a",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e6-d44e-43fe-bf73-0806fd0e8a9a.wav"
                },
                "cover": {
                    "id": "9f9598e6-d62f-46e2-ba12-ef2b7928447b",
                    "url": "https://via.placeholder.com/640x480.png/00cc11?text=omnis"
                },
                "owner": {
                    "id": "9f9598e6-d27e-45a8-a37b-c976311b480d",
                    "name": "Claud Rath",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 1,
                    "shares": 7
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-56f8-44dd-adc9-ba0d6093b8de",
                "title": "Est inventore ipsa alias facilis nemo.",
                "media_asset": {
                    "id": "9f9598e6-da8d-48b9-9204-01c97fbb057c",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e6-da8d-48b9-9204-01c97fbb057c.wma"
                },
                "cover": {
                    "id": "9f9598e6-dcb3-400a-9f26-d654b78346e5",
                    "url": "https://via.placeholder.com/640x480.png/00ffbb?text=vel"
                },
                "owner": {
                    "id": "9f9598e6-d875-48b4-ab93-3d9fcd517ef7",
                    "name": "Nelle Bradtke",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 6,
                    "likes": 0,
                    "comments": 14,
                    "shares": 0
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-5821-4431-9c2f-a2b15557cd53",
                "title": "Sunt nihil facere eum.",
                "media_asset": {
                    "id": "9f9598e6-e097-4b9e-99ff-53861fe33ad2",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e6-e097-4b9e-99ff-53861fe33ad2.npx"
                },
                "cover": {
                    "id": "9f9598e6-e223-4482-94eb-55438f71fd71",
                    "url": "https://via.placeholder.com/640x480.png/005599?text=sed"
                },
                "owner": {
                    "id": "9f9598e6-dee3-4cf4-bfdf-d74d34a6dc3b",
                    "name": "Sven Bartoletti",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 12,
                    "likes": 0,
                    "comments": 13,
                    "shares": 10
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-5918-457a-8245-6a5bc1567c1f",
                "title": "Aperiam earum sint ex quam sed labore in.",
                "media_asset": {
                    "id": "9f9598e6-e54e-4e7a-9987-6aefdcf3348c",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e6-e54e-4e7a-9987-6aefdcf3348c.jpgv"
                },
                "cover": {
                    "id": "9f9598e6-e6c6-4c9f-ad9e-007f8157ca81",
                    "url": "https://via.placeholder.com/640x480.png/00dd33?text=debitis"
                },
                "owner": {
                    "id": "9f9598e6-e3d6-4aa3-94f6-fc9ff3448f00",
                    "name": "Andreanne Larkin",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 9,
                    "likes": 0,
                    "comments": 6,
                    "shares": 8
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-5a07-4392-afc7-feeaa51a11a2",
                "title": "Aut eos reprehenderit hic et.",
                "media_asset": {
                    "id": "9f9598e6-eaf1-4b74-8520-95b3f8c9a809",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e6-eaf1-4b74-8520-95b3f8c9a809.movie"
                },
                "cover": {
                    "id": "9f9598e6-ee06-4584-bed1-2817ee8a03d9",
                    "url": "https://via.placeholder.com/640x480.png/00ee00?text=quidem"
                },
                "owner": {
                    "id": "9f9598e6-e87c-4f33-8724-9c5c5ffc6f87",
                    "name": "Prof. Sterling Little III",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 13,
                    "likes": 0,
                    "comments": 5,
                    "shares": 3
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-5b92-44a9-80d1-036f21b57a72",
                "title": "At vero quae adipisci nulla illo natus blanditiis.",
                "media_asset": {
                    "id": "9f9598e6-f34e-4c82-b320-8bc1045acdd7",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e6-f34e-4c82-b320-8bc1045acdd7.pdf"
                },
                "cover": {
                    "id": "9f9598e6-f5a8-4cac-a16a-fa7f75aaed3b",
                    "url": "https://via.placeholder.com/640x480.png/008844?text=occaecati"
                },
                "owner": {
                    "id": "9f9598e6-f0e2-4508-8f2d-c3b1ece66556",
                    "name": "Dr. Maci Erdman DVM",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 8,
                    "likes": 0,
                    "comments": 12,
                    "shares": 2
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-5c80-4afd-9520-50a7c833e270",
                "title": "Sint provident est porro et fugiat.",
                "media_asset": {
                    "id": "9f9598e6-fa8e-422d-a69c-aa04238ebd37",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e6-fa8e-422d-a69c-aa04238ebd37.x3db"
                },
                "cover": {
                    "id": "9f9598e6-fc8f-4e29-b88b-4ffbdc1d1e8c",
                    "url": "https://via.placeholder.com/640x480.png/00bbee?text=dignissimos"
                },
                "owner": {
                    "id": "9f9598e6-f821-4370-9142-438d642cb4e3",
                    "name": "Dr. Kamren DuBuque",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 1,
                    "likes": 0,
                    "comments": 3,
                    "shares": 13
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-5d94-4e5e-be9e-49ef867f0ce7",
                "title": "Consequatur occaecati illo illo voluptatem officiis eum.",
                "media_asset": {
                    "id": "9f9598e7-01b4-4ad2-9958-0d3894c193d6",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-01b4-4ad2-9958-0d3894c193d6.ssf"
                },
                "cover": {
                    "id": "9f9598e7-0467-4b3a-9165-2dcad273fba4",
                    "url": "https://via.placeholder.com/640x480.png/003344?text=nesciunt"
                },
                "owner": {
                    "id": "9f9598e6-ff69-4803-b370-b2e7b3223735",
                    "name": "Lila Bins III",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 8,
                    "likes": 0,
                    "comments": 9,
                    "shares": 1
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-5eff-413c-a936-2c15594d865e",
                "title": "Ut aut nostrum vero aut quia qui suscipit.",
                "media_asset": {
                    "id": "9f9598e7-0968-412f-a97f-80fc5ddaa6f7",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-0968-412f-a97f-80fc5ddaa6f7.3ds"
                },
                "cover": {
                    "id": "9f9598e7-0c24-4eb7-9949-a2702393e01f",
                    "url": "https://via.placeholder.com/640x480.png/00eeaa?text=quia"
                },
                "owner": {
                    "id": "9f9598e7-0716-4a94-a43f-009c33efcf53",
                    "name": "Libbie Medhurst",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 10,
                    "likes": 0,
                    "comments": 3,
                    "shares": 10
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-602a-4783-b573-5c2a02d90ad1",
                "title": "Consequatur qui et dolorum cupiditate.",
                "media_asset": {
                    "id": "9f9598e7-0fe7-495b-888f-f2a15b59bdaa",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-0fe7-495b-888f-f2a15b59bdaa.srt"
                },
                "cover": {
                    "id": "9f9598e7-1238-4817-9775-c87c826b428b",
                    "url": "https://via.placeholder.com/640x480.png/0033ee?text=ut"
                },
                "owner": {
                    "id": "9f9598e7-0e47-4509-9843-7a4b299c9e92",
                    "name": "Molly O'Kon",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 7,
                    "likes": 0,
                    "comments": 14,
                    "shares": 4
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-612b-4f54-b857-83dc73ff7ea6",
                "title": "Ad expedita a quasi reprehenderit.",
                "media_asset": {
                    "id": "9f9598e7-1727-47ce-bd6f-4a831f457e0e",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-1727-47ce-bd6f-4a831f457e0e.vcf"
                },
                "cover": {
                    "id": "9f9598e7-1988-47d2-b2c0-80d42869c2e4",
                    "url": "https://via.placeholder.com/640x480.png/0033ff?text=qui"
                },
                "owner": {
                    "id": "9f9598e7-14ee-441c-b0b9-7e3495a203e0",
                    "name": "Angelita Renner",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 15,
                    "likes": 0,
                    "comments": 0,
                    "shares": 14
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-6257-44b6-a1b8-5e281d834661",
                "title": "Qui expedita et et et soluta ea ipsam reprehenderit.",
                "media_asset": {
                    "id": "9f9598e7-1ea2-438a-b95e-0ee210922a50",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-1ea2-438a-b95e-0ee210922a50.x3db"
                },
                "cover": {
                    "id": "9f9598e7-20ff-4899-918a-9db5c7dc5392",
                    "url": "https://via.placeholder.com/640x480.png/0077dd?text=rem"
                },
                "owner": {
                    "id": "9f9598e7-1bf1-4fa7-a177-9705c82d7ed0",
                    "name": "Dr. Demetris Spencer",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 13,
                    "likes": 0,
                    "comments": 12,
                    "shares": 7
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-6343-4550-bf18-e0e1f9341de5",
                "title": "Maxime in dicta recusandae nisi laudantium consectetur ab.",
                "media_asset": {
                    "id": "9f9598e7-25c7-43b1-a151-7b22172eab24",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-25c7-43b1-a151-7b22172eab24.sxg"
                },
                "cover": {
                    "id": "9f9598e7-2830-45a2-bdba-bdb836910416",
                    "url": "https://via.placeholder.com/640x480.png/00bbdd?text=ipsam"
                },
                "owner": {
                    "id": "9f9598e7-237e-45e7-a8d1-6406a538c190",
                    "name": "Hubert Fahey Jr.",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 2,
                    "likes": 0,
                    "comments": 9,
                    "shares": 2
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-6468-4072-80a6-11aa7bdcd561",
                "title": "Ut quae modi sed nemo officia sint.",
                "media_asset": {
                    "id": "9f9598e7-2d84-4ea5-b092-3f40f8f6ec6d",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-2d84-4ea5-b092-3f40f8f6ec6d.icc"
                },
                "cover": {
                    "id": "9f9598e7-2fe7-4b8e-a907-c8332ff79794",
                    "url": "https://via.placeholder.com/640x480.png/00dd44?text=eum"
                },
                "owner": {
                    "id": "9f9598e7-2b08-478e-8537-73767256d56e",
                    "name": "Pete Johns",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 13,
                    "likes": 0,
                    "comments": 2,
                    "shares": 13
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-659c-4186-8239-25c193a21e95",
                "title": "Aliquid ab labore suscipit maxime excepturi consequatur.",
                "media_asset": {
                    "id": "9f9598e7-3564-4db4-98b8-04975a2a5189",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-3564-4db4-98b8-04975a2a5189.uri"
                },
                "cover": {
                    "id": "9f9598e7-37f0-4264-be45-f6a91b026e6f",
                    "url": "https://via.placeholder.com/640x480.png/0000cc?text=quis"
                },
                "owner": {
                    "id": "9f9598e7-32f3-4ef5-b0d0-1c90664a335b",
                    "name": "Erich Cummings I",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 1,
                    "likes": 0,
                    "comments": 8,
                    "shares": 15
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-6748-4c18-96cd-4e2a7242fa0f",
                "title": "Exercitationem necessitatibus aliquid sit a exercitationem at.",
                "media_asset": {
                    "id": "9f9598e7-3d2e-4962-b880-82599e42b074",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-3d2e-4962-b880-82599e42b074.sti"
                },
                "cover": {
                    "id": "9f9598e7-3fa4-4eab-a9e6-bdad713364a0",
                    "url": "https://via.placeholder.com/640x480.png/00bb77?text=ab"
                },
                "owner": {
                    "id": "9f9598e7-3acf-4ebc-a6f4-997675bf8566",
                    "name": "Alessia Sporer",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 9,
                    "shares": 4
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-6865-45e5-9db7-03acfc978903",
                "title": "Sunt aliquam qui et nam quo ut.",
                "media_asset": {
                    "id": "9f9598e7-44e2-4e34-a3d1-4ea636d972f3",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-44e2-4e34-a3d1-4ea636d972f3.sxm"
                },
                "cover": {
                    "id": "9f9598e7-4872-4d75-8c5b-3fe867a4d8ce",
                    "url": "https://via.placeholder.com/640x480.png/00eedd?text=incidunt"
                },
                "owner": {
                    "id": "9f9598e7-4256-4f05-8363-c3294dccdc8a",
                    "name": "Mrs. Chelsie Dare",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 6,
                    "likes": 0,
                    "comments": 14,
                    "shares": 0
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e7-694e-4813-a566-beeba4bda32f",
                "title": "Aliquam facere libero omnis consectetur cumque ea dicta qui.",
                "media_asset": {
                    "id": "9f9598e7-4eff-4643-b36a-b0dfec1ea033",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e7-4eff-4643-b36a-b0dfec1ea033.webp"
                },
                "cover": {
                    "id": "9f9598e7-5123-472c-b85f-e007d4e50005",
                    "url": "https://via.placeholder.com/640x480.png/00ffee?text=ipsum"
                },
                "owner": {
                    "id": "9f9598e7-4c35-42eb-9ff0-b9d5805a1ea1",
                    "name": "Ms. Lupe Price",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 3,
                    "likes": 0,
                    "comments": 9,
                    "shares": 9
                },
                "is_liked": 0
            }
        ],
        "created_at": 1754648641
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Album",
    "message": "No query results"
}
 

Request      

GET v1/albums/{album_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

album_id   string   

The ID of the album. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

Playlists

System

New tracks

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/playlists/new" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/playlists/new"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists/new';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=KBpv6FwVpoMLEsMCGfqoqu0OgCl1Mm7ngeeMEzyA; expires=Fri, 08 Aug 2025 12:54:36 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

Request      

GET v1/playlists/new

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/playlists/popular" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/playlists/popular"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists/popular';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=0BvKEgU42TbXsCYXSghWfhvGrPOvZieoHSCnkVnG; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/playlists/recommended" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/playlists/recommended"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists/recommended';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=hYiIthEWVvxdGgltqE04XlNyl0vfl19tGN8T9btF; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

Show

requires authentication

Endpoint for fetching playlist details

When playlist is private it can only be viewed by admin

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=SB2VCwCH96eXVn5oBTBsxXllaSAA2RrObrBAjysZ; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-b7fa-4324-b250-a3c6c78b65c4",
        "name": "My favourite",
        "description": null,
        "cover": null,
        "tracks_count": 21,
        "tracks": [
            {
                "id": "00000000-a791-4783-9845-4b571a9e579f",
                "title": "Rolling in the Deep",
                "media_asset": {
                    "id": "9f959894-3151-46c4-89fa-b5ce57247988",
                    "url": "http://localhost:8083/v1/media-assets/9f959894-3151-46c4-89fa-b5ce57247988.wm"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 5,
                    "likes": 0,
                    "comments": 15,
                    "shares": 3
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-86a2-4a07-9aec-1e0ad641d0a6",
                "title": "Nihil ut et fugiat voluptatum.",
                "media_asset": {
                    "id": "9f9598e1-0a23-4736-9acf-c16c4178dd78",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-0a23-4736-9acf-c16c4178dd78.xaml"
                },
                "owner": {
                    "id": "9f9598e1-0893-4583-9b92-a37c18a7bbad",
                    "name": "Mrs. Gerry Koch II",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 9,
                    "likes": 0,
                    "comments": 11,
                    "shares": 8
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-8786-4e2d-b02e-3c53d40d17b0",
                "title": "Nemo corrupti fugiat quisquam modi neque rerum.",
                "media_asset": {
                    "id": "9f9598e1-0e95-487a-82bf-66d239d5aaff",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-0e95-487a-82bf-66d239d5aaff.xul"
                },
                "owner": {
                    "id": "9f9598e1-0d13-45ae-b66a-8ae1b66e6fc5",
                    "name": "Bo Hodkiewicz",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 10,
                    "likes": 0,
                    "comments": 7,
                    "shares": 1
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-8876-417d-b700-6a4102cb6a11",
                "title": "Magni velit eius exercitationem distinctio dolorum aut.",
                "media_asset": {
                    "id": "9f9598e1-14ff-4225-8a34-1450bdf77219",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-14ff-4225-8a34-1450bdf77219.m2v"
                },
                "owner": {
                    "id": "9f9598e1-131c-4fb5-988d-b1c82067ba22",
                    "name": "Maci Tremblay",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 13,
                    "likes": 0,
                    "comments": 4,
                    "shares": 13
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-8985-437e-9edb-aa71781fb61e",
                "title": "Enim non soluta vero repellat laboriosam deleniti odio.",
                "media_asset": {
                    "id": "9f9598e1-1afe-4a47-abdd-1033e1e9b31b",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-1afe-4a47-abdd-1033e1e9b31b.odp"
                },
                "owner": {
                    "id": "9f9598e1-196f-417e-a617-dd6b49698694",
                    "name": "Mrs. Sallie Barrows DDS",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 2,
                    "likes": 0,
                    "comments": 1,
                    "shares": 1
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-8aa0-4089-939c-4b3525f07437",
                "title": "Possimus quod non optio fugit minima quo quae voluptatem.",
                "media_asset": {
                    "id": "9f9598e1-20bb-4f47-af75-fa1709ab0564",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-20bb-4f47-af75-fa1709ab0564.wml"
                },
                "owner": {
                    "id": "9f9598e1-1f07-4932-ae0b-c5b9a77dacb7",
                    "name": "Burley Krajcik",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 5,
                    "likes": 0,
                    "comments": 4,
                    "shares": 12
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-8ba3-4ce1-9613-1c738dd28e20",
                "title": "Exercitationem veniam nesciunt pariatur impedit.",
                "media_asset": {
                    "id": "9f9598e1-2712-4fcf-8c4a-0c353836d7fc",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-2712-4fcf-8c4a-0c353836d7fc.pfm"
                },
                "owner": {
                    "id": "9f9598e1-2567-48ae-bfde-5a92e12d04b8",
                    "name": "Ms. Otilia Toy I",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 15,
                    "likes": 0,
                    "comments": 3,
                    "shares": 4
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-8c74-4159-b31c-7c28b2707404",
                "title": "Quia praesentium ipsum repellendus.",
                "media_asset": {
                    "id": "9f9598e1-2bcf-4e05-852c-1c8947fe1e92",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-2bcf-4e05-852c-1c8947fe1e92.icm"
                },
                "owner": {
                    "id": "9f9598e1-2a33-419b-8887-c590d3a9dc68",
                    "name": "Prof. Demetris Halvorson V",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 7,
                    "likes": 0,
                    "comments": 1,
                    "shares": 0
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-8d1f-44e0-a3f2-499969180d35",
                "title": "Et beatae neque blanditiis error aperiam ipsam et.",
                "media_asset": {
                    "id": "9f9598e1-3221-40f7-a7da-7c6efb49cd84",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-3221-40f7-a7da-7c6efb49cd84.tao"
                },
                "owner": {
                    "id": "9f9598e1-2feb-4608-a6f9-d4e849b99fc3",
                    "name": "Emmie Bartoletti",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 3,
                    "likes": 0,
                    "comments": 15,
                    "shares": 14
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-8e51-4fd8-a052-8f6805068905",
                "title": "Quis sed doloremque dolor tenetur vero quibusdam quibusdam quos.",
                "media_asset": {
                    "id": "9f9598e1-3909-4db8-91a1-b80b4b2e6476",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-3909-4db8-91a1-b80b4b2e6476.mods"
                },
                "owner": {
                    "id": "9f9598e1-36bf-4515-9085-2eeb001d6acf",
                    "name": "Lillie Sauer III",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 10,
                    "likes": 0,
                    "comments": 5,
                    "shares": 9
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-8f2f-4c23-8591-e1a51db64429",
                "title": "Doloribus et porro nam enim adipisci architecto.",
                "media_asset": {
                    "id": "9f9598e1-4000-444f-8a49-7c2d22ee6b11",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-4000-444f-8a49-7c2d22ee6b11.jsonml"
                },
                "owner": {
                    "id": "9f9598e1-3dd8-4ebe-b9c0-c2b994a16430",
                    "name": "Claudie Wolff II",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 14,
                    "likes": 0,
                    "comments": 8,
                    "shares": 6
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-8ff0-4eed-a7c0-6792a9669118",
                "title": "Rem fugit consequatur temporibus non qui natus molestiae repudiandae.",
                "media_asset": {
                    "id": "9f9598e1-4709-458d-b818-1606f3ab8fd7",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-4709-458d-b818-1606f3ab8fd7.pki"
                },
                "owner": {
                    "id": "9f9598e1-44c3-4317-af4a-68e64ee554c4",
                    "name": "Adaline Schamberger",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 2,
                    "likes": 0,
                    "comments": 12,
                    "shares": 3
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-90a2-4ac2-87db-c25f5a419466",
                "title": "Corrupti dolor alias quae minima quis veritatis perspiciatis.",
                "media_asset": {
                    "id": "9f9598e1-4cf2-46ea-b029-9520c7688ecb",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-4cf2-46ea-b029-9520c7688ecb.wav"
                },
                "owner": {
                    "id": "9f9598e1-4b1a-4249-bfea-194d0b75c1b4",
                    "name": "Gracie Kunze IV",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 12,
                    "likes": 0,
                    "comments": 6,
                    "shares": 8
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-9170-4fb7-8c1b-95a20d5a06e6",
                "title": "Qui ea voluptatem et perspiciatis ut et aut.",
                "media_asset": {
                    "id": "9f9598e1-53d8-4fca-9ccc-2c8765bd50de",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-53d8-4fca-9ccc-2c8765bd50de.blorb"
                },
                "owner": {
                    "id": "9f9598e1-516d-4243-96e9-1ecdc89d0724",
                    "name": "Ms. Johanna Bechtelar",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 15,
                    "likes": 0,
                    "comments": 7,
                    "shares": 4
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-929a-4574-9c93-239e2881fc25",
                "title": "Temporibus dignissimos expedita aperiam placeat harum.",
                "media_asset": {
                    "id": "9f9598e1-5a86-4c5f-a4bc-13ae86489a1a",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-5a86-4c5f-a4bc-13ae86489a1a.vis"
                },
                "owner": {
                    "id": "9f9598e1-5888-46c2-9be8-fb9c3eddc74d",
                    "name": "Israel Huel",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 3,
                    "likes": 0,
                    "comments": 5,
                    "shares": 12
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-93ba-4095-8c05-ea3b77617245",
                "title": "Amet incidunt aliquam saepe inventore rem dolorum voluptatum numquam.",
                "media_asset": {
                    "id": "9f9598e1-6020-4472-a988-b6c3e2269fd3",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-6020-4472-a988-b6c3e2269fd3.pskcxml"
                },
                "owner": {
                    "id": "9f9598e1-5e11-4d26-bb90-1857f82e9f67",
                    "name": "Hettie Rippin I",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 10,
                    "likes": 0,
                    "comments": 13,
                    "shares": 7
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-94e9-4dfc-bc7a-c66917c83d8c",
                "title": "Omnis veniam temporibus et non sint dolorem.",
                "media_asset": {
                    "id": "9f9598e1-673e-4877-aeb7-beca8282ef09",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-673e-4877-aeb7-beca8282ef09.tmo"
                },
                "owner": {
                    "id": "9f9598e1-64f4-4da3-8fe0-7e87875d5d97",
                    "name": "Mr. Brennon Durgan",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 2,
                    "likes": 0,
                    "comments": 14,
                    "shares": 13
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-95d5-470f-aa4b-48e835cca9b7",
                "title": "Dolor rerum quibusdam illo quaerat molestiae.",
                "media_asset": {
                    "id": "9f9598e1-6cf5-4ca4-a2d5-9a30e66d4903",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-6cf5-4ca4-a2d5-9a30e66d4903.so"
                },
                "owner": {
                    "id": "9f9598e1-6b34-467d-96dd-e5ce69e72fff",
                    "name": "Janiya Emmerich",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 2,
                    "likes": 0,
                    "comments": 11,
                    "shares": 3
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-9693-4b71-905b-89978dd8d8d4",
                "title": "Ullam quod quos exercitationem error ad voluptatibus vel ea.",
                "media_asset": {
                    "id": "9f9598e1-743b-4fe0-942c-66a1ffd4be64",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-743b-4fe0-942c-66a1ffd4be64.knp"
                },
                "owner": {
                    "id": "9f9598e1-718e-40c0-836f-0502c8290859",
                    "name": "Dr. Michael McKenzie",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 7,
                    "likes": 0,
                    "comments": 14,
                    "shares": 0
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-975e-440b-9e68-40a97205114b",
                "title": "Impedit qui non culpa.",
                "media_asset": {
                    "id": "9f9598e1-7b3b-4d86-ac14-aab7551118ea",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-7b3b-4d86-ac14-aab7551118ea.xpm"
                },
                "owner": {
                    "id": "9f9598e1-78f6-4bbe-8183-bc7777ae33b4",
                    "name": "Jerrod Satterfield",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 15,
                    "likes": 0,
                    "comments": 0,
                    "shares": 10
                },
                "is_liked": 0
            },
            {
                "id": "9f9598e1-9850-4f33-b7e1-65a17581b7e2",
                "title": "Non doloremque minima et illo sequi.",
                "media_asset": {
                    "id": "9f9598e1-8218-4f5e-bd93-6dd2d91b280f",
                    "url": "http://localhost:8083/v1/media-assets/9f9598e1-8218-4f5e-bd93-6dd2d91b280f.djvu"
                },
                "owner": {
                    "id": "9f9598e1-7fea-4aea-ab2f-b1b8de246344",
                    "name": "Bobby Wilderman",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 9,
                    "likes": 0,
                    "comments": 12,
                    "shares": 5
                },
                "is_liked": 0
            }
        ],
        "is_editable": true
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Playlist",
    "message": "No query results"
}
 

Request      

GET v1/playlists/{playlist_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

playlist_id   string   

The ID of the playlist. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

Create

requires authentication

Add new Playlist

Example request:
curl --request POST \
    "http://localhost:8083/v1/playlists" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"My favourite\",
    \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
    \"description\": \"Write short or long description about your album in here ...\",
    \"tracks\": [
        \"00000000-a791-4783-9845-4b571a9e579f\"
    ]
}"
const url = new URL(
    "http://localhost:8083/v1/playlists"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "My favourite",
    "cover_id": "00000000-422e-41ff-a266-2b0a093307e6",
    "description": "Write short or long description about your album in here ...",
    "tracks": [
        "00000000-a791-4783-9845-4b571a9e579f"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'My favourite',
            'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
            'description' => 'Write short or long description about your album in here ...',
            'tracks' => [
                '00000000-a791-4783-9845-4b571a9e579f',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=a8yUkxGae6a3WjluzMhMIcVlgC2Z9ZcOoJcZ5RTT; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95a3da-8392-49b0-935f-95fe77307aa6",
        "name": "My favourite",
        "description": "Write short or long description about your album in here ...",
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo",
            "filename": "libero-etsilo",
            "created_at": "2025-08-08T10:23:05+00:00",
            "type": "image",
            "analytics": {
                "views": 1304,
                "likes": 0,
                "comments": 0,
                "shares": 15
            }
        },
        "tracks_count": 1,
        "tracks": [
            {
                "id": "00000000-a791-4783-9845-4b571a9e579f",
                "title": "Rolling in the Deep",
                "media_asset": {
                    "id": "9f959894-3151-46c4-89fa-b5ce57247988",
                    "url": "http://localhost:8083/v1/media-assets/9f959894-3151-46c4-89fa-b5ce57247988.wm"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 6,
                    "likes": 0,
                    "comments": 3,
                    "shares": 15
                },
                "is_liked": 0
            }
        ],
        "is_editable": true
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/playlists

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

name   string   

Example: My favourite

cover_id   string  optional  

Media Asset ID. Must be a valid UUID. Example: 00000000-422e-41ff-a266-2b0a093307e6

description   string  optional  

Example: Write short or long description about your album in here ...

tracks   string[]   

Media Asset ID. Must be a valid UUID.

Update

requires authentication

Update a Playlist

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"My favourite\",
    \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
    \"description\": \"Write short or long description about your album in here ...\",
    \"tracks\": [
        \"00000000-a791-4783-9845-4b571a9e579f\"
    ]
}"
const url = new URL(
    "http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "My favourite",
    "cover_id": "00000000-422e-41ff-a266-2b0a093307e6",
    "description": "Write short or long description about your album in here ...",
    "tracks": [
        "00000000-a791-4783-9845-4b571a9e579f"
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'My favourite',
            'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
            'description' => 'Write short or long description about your album in here ...',
            'tracks' => [
                '00000000-a791-4783-9845-4b571a9e579f',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=Z389GuIj2X6ETdvYDDgJ1BSGePl98BxO29XmTu07; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-b7fa-4324-b250-a3c6c78b65c4",
        "name": "My favourite",
        "description": "Write short or long description about your album in here ...",
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo",
            "filename": "libero-etsilo",
            "created_at": "2025-08-08T10:23:05+00:00",
            "type": "image",
            "analytics": {
                "views": 671,
                "likes": 0,
                "comments": 0,
                "shares": 14
            }
        },
        "tracks_count": 1,
        "tracks": [
            {
                "id": "00000000-a791-4783-9845-4b571a9e579f",
                "title": "Rolling in the Deep",
                "media_asset": {
                    "id": "9f959894-3151-46c4-89fa-b5ce57247988",
                    "url": "http://localhost:8083/v1/media-assets/9f959894-3151-46c4-89fa-b5ce57247988.wm"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 7,
                    "likes": 0,
                    "comments": 5,
                    "shares": 8
                },
                "is_liked": 0
            }
        ],
        "is_editable": true
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Playlist",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PATCH v1/playlists/{playlist_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

playlist_id   string   

The ID of the playlist. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

Body Parameters

name   string   

Example: My favourite

cover_id   string  optional  

Media Asset UUID. Must be a valid UUID. Example: 00000000-422e-41ff-a266-2b0a093307e6

description   string  optional  

Example: Write short or long description about your album in here ...

tracks   string[]   

Media Asset ID. Must be a valid UUID.

Delete

requires authentication

Delete a Playlist

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=HBsphtJt8ByrPkbo35vEId5du5yTx1LgixkWIHwK; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Playlist",
    "message": "No query results"
}
 

Request      

DELETE v1/playlists/{playlist_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

playlist_id   string   

The ID of the playlist. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

List

Endpoint for fetching all available playlists.

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/playlists?filters[name]=" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/playlists"
);

const params = {
    "filters[name]": "",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[name]' => '',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=Uw3OlUIYvWGq7cUwQVQ9a6iLrqomFWanMVhtAV1S; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "a5bd1de4-1bee-427b-9288-e832f254bd8a",
            "name": "New",
            "description": null,
            "cover": null,
            "tracks_count": 0,
            "tracks": [],
            "is_editable": false
        },
        {
            "id": "a5bd1de4-1bee-427b-9288-e832f254bd8b",
            "name": "Popular",
            "description": null,
            "cover": null,
            "tracks_count": 0,
            "tracks": [],
            "is_editable": false
        },
        {
            "id": "a5bd1de4-1bee-427b-9288-e832f254bd8c",
            "name": "Recommended",
            "description": null,
            "cover": null,
            "tracks_count": 0,
            "tracks": [],
            "is_editable": false
        },
        {
            "id": "9f9598df-8545-4cbe-a969-ea0036a5995e",
            "name": "Est",
            "description": null,
            "cover": null,
            "tracks_count": 0,
            "tracks": [],
            "is_editable": true
        },
        {
            "id": "9f9598df-84ad-4044-bc4e-7f7256394221",
            "name": "Id",
            "description": null,
            "cover": null,
            "tracks_count": 0,
            "tracks": [],
            "is_editable": true
        },
        {
            "id": "9f9598df-8402-4804-9c95-92959ea58bd7",
            "name": "Quidem",
            "description": null,
            "cover": null,
            "tracks_count": 0,
            "tracks": [],
            "is_editable": true
        }
    ]
}
 

Request      

GET v1/playlists

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object  optional  
filters.name   string  optional  

Tracks

Add track

requires authentication

Add track to the playlist

Example request:
curl --request POST \
    "http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4/00000000-a791-4783-9845-4b571a9e579f" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4/00000000-a791-4783-9845-4b571a9e579f"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4/00000000-a791-4783-9845-4b571a9e579f';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=4GB0j52FZw7AIgkPxrvCtHGbeue6JvfAITPpycpy; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Playlist",
    "message": "No query results"
}
 

Example response (404):


{
    "type": "Track",
    "message": "No query results"
}
 

Request      

POST v1/playlists/{playlist_id}/{track_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

playlist_id   string   

The ID of the playlist. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

track_id   string   

The ID of the track. Example: 00000000-a791-4783-9845-4b571a9e579f

Remove track

requires authentication

Remove track from the playlist

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4/00000000-a791-4783-9845-4b571a9e579f" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4/00000000-a791-4783-9845-4b571a9e579f"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4/00000000-a791-4783-9845-4b571a9e579f';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=38FFXypbUMWsb1S4V82BvFzOV3qz4Q2p4nUZCuYv; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Playlist",
    "message": "No query results"
}
 

Example response (404):


{
    "type": "Track",
    "message": "No query results"
}
 

Request      

DELETE v1/playlists/{playlist_id}/{track_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

playlist_id   string   

The ID of the playlist. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

track_id   string   

The ID of the track. Example: 00000000-a791-4783-9845-4b571a9e579f

Tracks

Store

requires authentication

Create a track in association to an entity

Example request:
curl --request POST \
    "http://localhost:8083/v1/tracks" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"media_asset_id\": \"00000000-422e-41ff-a266-2b0a093307e7\",
    \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
    \"album_id\": \"00000000-b7fa-4324-b250-a3c6c78b65c4\",
    \"title\": \"Rolling in the Deep\",
    \"genres\": [
        \"cf61fb7c-7681-3569-a52f-b82f3a8e301d\"
    ],
    \"lyrics\": {
        \"is_own\": false,
        \"author\": \"Hubby Bobby\",
        \"content\": \"Lorem ipsum dolor sit amet\\\\nconsectetur adipiscing elit\\\\nPhasellus consectetur\\\\nfelis eu pretium accumsan\"
    },
    \"music\": {
        \"is_own\": false,
        \"author\": \"Bobby Hubby\"
    }
}"
const url = new URL(
    "http://localhost:8083/v1/tracks"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "media_asset_id": "00000000-422e-41ff-a266-2b0a093307e7",
    "cover_id": "00000000-422e-41ff-a266-2b0a093307e6",
    "album_id": "00000000-b7fa-4324-b250-a3c6c78b65c4",
    "title": "Rolling in the Deep",
    "genres": [
        "cf61fb7c-7681-3569-a52f-b82f3a8e301d"
    ],
    "lyrics": {
        "is_own": false,
        "author": "Hubby Bobby",
        "content": "Lorem ipsum dolor sit amet\\nconsectetur adipiscing elit\\nPhasellus consectetur\\nfelis eu pretium accumsan"
    },
    "music": {
        "is_own": false,
        "author": "Bobby Hubby"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/tracks';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'media_asset_id' => '00000000-422e-41ff-a266-2b0a093307e7',
            'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
            'album_id' => '00000000-b7fa-4324-b250-a3c6c78b65c4',
            'title' => 'Rolling in the Deep',
            'genres' => [
                'cf61fb7c-7681-3569-a52f-b82f3a8e301d',
            ],
            'lyrics' => [
                'is_own' => false,
                'author' => 'Hubby Bobby',
                'content' => 'Lorem ipsum dolor sit amet\\nconsectetur adipiscing elit\\nPhasellus consectetur\\nfelis eu pretium accumsan',
            ],
            'music' => [
                'is_own' => false,
                'author' => 'Bobby Hubby',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=FTXU8hYTc3JyZUwvl7ZUKQmPTzhtgjACNYb8EoXU; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95a3dc-49d5-4f14-8575-0d8294d7734b",
        "title": "Rolling in the Deep",
        "media_asset": {
            "id": "00000000-422e-41ff-a266-2b0a093307e7",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e7.sh"
        },
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "https://via.placeholder.com/640x480.png/0044cc?text=rerum"
        },
        "owner": {
            "id": "00000000-df85-4307-a069-68612c4471e3",
            "name": "Admin Test Country",
            "avatar_url": null
        },
        "genres": [],
        "analytics": {
            "playbacks": 10,
            "likes": 0,
            "comments": 7,
            "shares": 2
        },
        "is_liked": 0,
        "lyrics": {
            "is_own": false,
            "author": "Hubby Bobby",
            "content": "Lorem ipsum dolor sit amet\\nconsectetur adipiscing elit\\nPhasellus consectetur\\nfelis eu pretium accumsan"
        },
        "music": {
            "is_own": false,
            "author": "Bobby Hubby"
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/tracks

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

media_asset_id   string   

Must be a valid UUID. Example: 00000000-422e-41ff-a266-2b0a093307e7

cover_id   string  optional  

Must be a valid UUID. Example: 00000000-422e-41ff-a266-2b0a093307e6

album_id   string  optional  

Must be a valid UUID. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

title   string   

Example: Rolling in the Deep

genres   string[]  optional  

Must be a valid UUID.

lyrics   object   
is_own   boolean   

Example: false

author   string  optional  

Example: Hubby Bobby

content   string  optional  

Example: Lorem ipsum dolor sit amet\nconsectetur adipiscing elit\nPhasellus consectetur\nfelis eu pretium accumsan

music   object   
is_own   boolean   

Example: false

author   string  optional  

Example: Bobby Hubby

Update

requires authentication

Update own track

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/tracks/00000000-a791-4783-9845-4b571a9e579f" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"media_asset_id\": \"00000000-422e-41ff-a266-2b0a093307e7\",
    \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
    \"album_id\": \"00000000-b7fa-4324-b250-a3c6c78b65c4\",
    \"title\": \"Rolling in the Deep (Updated)\",
    \"genres\": [
        \"90229558-a7a3-355b-846f-ac0e83533e32\"
    ],
    \"lyrics\": {
        \"is_own\": false,
        \"author\": \"Hubby Bobby\",
        \"content\": \"Lorem ipsum dolor sit amet\\\\nconsectetur adipiscing elit\\\\nPhasellus consectetur\\\\nfelis eu pretium accumsan\"
    },
    \"music\": {
        \"is_own\": false,
        \"author\": \"Bobby Hubby\"
    }
}"
const url = new URL(
    "http://localhost:8083/v1/tracks/00000000-a791-4783-9845-4b571a9e579f"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "media_asset_id": "00000000-422e-41ff-a266-2b0a093307e7",
    "cover_id": "00000000-422e-41ff-a266-2b0a093307e6",
    "album_id": "00000000-b7fa-4324-b250-a3c6c78b65c4",
    "title": "Rolling in the Deep (Updated)",
    "genres": [
        "90229558-a7a3-355b-846f-ac0e83533e32"
    ],
    "lyrics": {
        "is_own": false,
        "author": "Hubby Bobby",
        "content": "Lorem ipsum dolor sit amet\\nconsectetur adipiscing elit\\nPhasellus consectetur\\nfelis eu pretium accumsan"
    },
    "music": {
        "is_own": false,
        "author": "Bobby Hubby"
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/tracks/00000000-a791-4783-9845-4b571a9e579f';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'media_asset_id' => '00000000-422e-41ff-a266-2b0a093307e7',
            'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
            'album_id' => '00000000-b7fa-4324-b250-a3c6c78b65c4',
            'title' => 'Rolling in the Deep (Updated)',
            'genres' => [
                '90229558-a7a3-355b-846f-ac0e83533e32',
            ],
            'lyrics' => [
                'is_own' => false,
                'author' => 'Hubby Bobby',
                'content' => 'Lorem ipsum dolor sit amet\\nconsectetur adipiscing elit\\nPhasellus consectetur\\nfelis eu pretium accumsan',
            ],
            'music' => [
                'is_own' => false,
                'author' => 'Bobby Hubby',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=jde6QyX7HQQLBMwCOI9OuYl3W62jZoyf9f2eH8HI; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-a791-4783-9845-4b571a9e579f",
        "title": "Rolling in the Deep (Updated)",
        "media_asset": {
            "id": "9f959894-3151-46c4-89fa-b5ce57247988",
            "url": "http://localhost:8083/v1/media-assets/9f959894-3151-46c4-89fa-b5ce57247988.wm"
        },
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "https://via.placeholder.com/640x480.png/0044cc?text=rerum"
        },
        "owner": {
            "id": "00000000-df85-4307-a069-68612c4471e1",
            "name": "Fan Test Country",
            "avatar_url": null
        },
        "genres": [],
        "analytics": {
            "playbacks": 4,
            "likes": 0,
            "comments": 7,
            "shares": 7
        },
        "is_liked": 0,
        "lyrics": {
            "is_own": false,
            "author": "Hubby Bobby",
            "content": "Lorem ipsum dolor sit amet\\nconsectetur adipiscing elit\\nPhasellus consectetur\\nfelis eu pretium accumsan"
        },
        "music": {
            "is_own": false,
            "author": "Bobby Hubby"
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Track",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PATCH v1/tracks/{track_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

track_id   string   

The ID of the track. Example: 00000000-a791-4783-9845-4b571a9e579f

Body Parameters

media_asset_id   string   

Must be a valid UUID. Example: 00000000-422e-41ff-a266-2b0a093307e7

cover_id   string  optional  

Must be a valid UUID. Example: 00000000-422e-41ff-a266-2b0a093307e6

album_id   string  optional  

Must be a valid UUID. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

title   string   

Example: Rolling in the Deep (Updated)

genres   string[]  optional  

Must be a valid UUID.

lyrics   object   
is_own   boolean   

Example: false

author   string  optional  

Example: Hubby Bobby

content   string  optional  

Example: Lorem ipsum dolor sit amet\nconsectetur adipiscing elit\nPhasellus consectetur\nfelis eu pretium accumsan

music   object   
is_own   boolean   

Example: false

author   string  optional  

Example: Bobby Hubby

Delete

requires authentication

Delete own track

Admin can remove any track

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/tracks/00000000-a791-4783-9845-4b571a9e579f" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/tracks/00000000-a791-4783-9845-4b571a9e579f"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/tracks/00000000-a791-4783-9845-4b571a9e579f';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=4dMlBYWfOwOxxa0dzEnAwnhVQljsYr9uDwnkB4rd; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Track",
    "message": "No query results"
}
 

Request      

DELETE v1/tracks/{track_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

track_id   string   

The ID of the track. Example: 00000000-a791-4783-9845-4b571a9e579f

List

Endpoint for fetching list of tracks

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/tracks?filters[title]=Rolling+in+the+Deep&filters[owner]=Joe+Shmoe&filters[owner_id]=00000000-df85-4307-a069-68612c4471e2&filters[genres]=%5B%229f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12%22%2C%229f95986e-f2d8-434d-b282-8c39b9996cdb%22%5D&filters[subscribed]=&per_page=20&page=1&pagination_type=page" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/tracks"
);

const params = {
    "filters[title]": "Rolling in the Deep",
    "filters[owner]": "Joe Shmoe",
    "filters[owner_id]": "00000000-df85-4307-a069-68612c4471e2",
    "filters[genres]": "["9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12","9f95986e-f2d8-434d-b282-8c39b9996cdb"]",
    "filters[subscribed]": "",
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/tracks';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[title]' => 'Rolling in the Deep',
            'filters[owner]' => 'Joe Shmoe',
            'filters[owner_id]' => '00000000-df85-4307-a069-68612c4471e2',
            'filters[genres]' => '["9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12","9f95986e-f2d8-434d-b282-8c39b9996cdb"]',
            'filters[subscribed]' => '',
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=XIVOAIHL2yavheVstoQD7q8ADb7HKEQ4SiWM2jla; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [],
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "path": "http://localhost:8083/v1/tracks",
        "per_page": 20,
        "to": null,
        "total": 0
    }
}
 

Request      

GET v1/tracks

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object  optional  
filters.title   string  optional  

Example: Rolling in the Deep

filters.owner   string  optional  

Example: Joe Shmoe

filters.owner_id   string  optional  

Must be a valid UUID. Example: 00000000-df85-4307-a069-68612c4471e2

filters.genres   string  optional  

List of genre IDs. Must be a valid JSON string. Example: ["9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12","9f95986e-f2d8-434d-b282-8c39b9996cdb"]

filters.subscribed   boolean  optional  

Example: false

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Show

Returns single track

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/tracks/00000000-a791-4783-9845-4b571a9e579f" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/tracks/00000000-a791-4783-9845-4b571a9e579f"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/tracks/00000000-a791-4783-9845-4b571a9e579f';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=Fidztzz9yBSYorr1aSB2EsPYCW8Gid677sV6yAfT; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-a791-4783-9845-4b571a9e579f",
        "title": "Rolling in the Deep",
        "media_asset": {
            "id": "9f959894-3151-46c4-89fa-b5ce57247988",
            "url": "http://localhost:8083/v1/media-assets/9f959894-3151-46c4-89fa-b5ce57247988.wm"
        },
        "cover": {
            "id": "9f959894-3598-41dd-916e-705f73fff6d6",
            "url": "https://via.placeholder.com/640x480.png/00cc33?text=aliquam"
        },
        "owner": {
            "id": "00000000-df85-4307-a069-68612c4471e1",
            "name": "Fan Test Country",
            "avatar_url": null
        },
        "genres": [],
        "analytics": {
            "playbacks": 10,
            "likes": 0,
            "comments": 15,
            "shares": 3
        },
        "is_liked": 0,
        "lyrics": {
            "is_own": 1,
            "author": null,
            "content": "Est sed dolores inventore aut. Est fugit voluptatem tenetur quae laborum repellat. Nobis qui dolore dolores. Hic ut occaecati consequatur amet."
        },
        "music": {
            "is_own": 0,
            "author": "Lempi Ankunding"
        }
    }
}
 

Example response (404):


{
    "type": "Track",
    "message": "No query results"
}
 

Request      

GET v1/tracks/{track_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

track_id   string   

The ID of the track. Example: 00000000-a791-4783-9845-4b571a9e579f

Data

MediaAssets

Own assets

requires authentication

Endpoint for fetching own MediaAssets.

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/media-assets/my?filters[type]=image&per_page=100&page=1&pagination_type=page" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/media-assets/my"
);

const params = {
    "filters[type]": "image",
    "per_page": "100",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/media-assets/my';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[type]' => 'image',
            'per_page' => '100',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=UObFGLYnuuam8djDwdVIbeEuZlAymECnMUYEW9Pm; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [],
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "path": "http://localhost:8083/v1/media-assets/my",
        "per_page": 100,
        "to": null,
        "total": 0
    }
}
 

Request      

GET v1/media-assets/my

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object  optional  
filters.type   string  optional  

Example: image

Must be one of:
  • image
  • audio
  • video
per_page   integer  optional  

Must be between 5 and 100. Example: 100

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Create

requires authentication

Add new MediaAsset

Example request:
curl --request POST \
    "http://localhost:8083/v1/media-assets" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --form "is_public="\
    --form "file=@/Users/andvla/Projects/Private/Qplet/Api/storage/app/public/logo.png" 
const url = new URL(
    "http://localhost:8083/v1/media-assets"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

const body = new FormData();
body.append('is_public', '');
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/media-assets';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'multipart' => [
            [
                'name' => 'is_public',
                'contents' => ''
            ],
            [
                'name' => 'file',
                'contents' => fopen('/Users/andvla/Projects/Private/Qplet/Api/storage/app/public/logo.png', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=7Fg9nDuFnyiA0H6B15sNcd94AuaEFyLgu4vsv4JE; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "91229172-76c5-42b6-bfec-d0d0e65da62b",
        "url": "http://localhost:8083/v1/media-assets/91229172-76c5-42b6-bfec-d0d0e65da62b.png",
        "filename": "logo.png",
        "created_at": "2025-08-08T10:54:40+00:00",
        "type": "image",
        "analytics": {
            "views": 2041,
            "likes": 0,
            "comments": 0,
            "shares": 7
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/media-assets

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

file   file   

Must be a file. Must not be greater than 50000 kilobytes. Example: storage/app/public/logo.png

is_public   boolean  optional  

Example: false

Delete

requires authentication

Delete a MediaAsset

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/media-assets/eligendi" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/media-assets/eligendi"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/media-assets/eligendi';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "MediaAsset",
    "message": "No query results"
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=bLbbrDOwxOjNJXns2s2mRs6v3cfWlNC9DYFudVkT; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Unable to find the media asset you requested."
}
 

Request      

DELETE v1/media-assets/{media_asset_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

media_asset_id   string   

The ID of the media asset. Example: eligendi

List

Endpoint for fetching all available MediaAssets.

In order to list non-public MediaAssets { filters.is_public: false } you'll need an Admin role.

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/media-assets?filters[type]=image&filters[is_public]=1&filters[owner_id]=00000000-df85-4307-a069-68612c4471e2&per_page=100&page=1&pagination_type=page" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/media-assets"
);

const params = {
    "filters[type]": "image",
    "filters[is_public]": "1",
    "filters[owner_id]": "00000000-df85-4307-a069-68612c4471e2",
    "per_page": "100",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/media-assets';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[type]' => 'image',
            'filters[is_public]' => '1',
            'filters[owner_id]' => '00000000-df85-4307-a069-68612c4471e2',
            'per_page' => '100',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=8uhH7CflNWEVfRat2SXo3nyMo4eLCGqc9F7Wwn75; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [],
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "path": "http://localhost:8083/v1/media-assets",
        "per_page": 100,
        "to": null,
        "total": 0
    }
}
 

Request      

GET v1/media-assets

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object  optional  
filters.type   string  optional  

Example: image

Must be one of:
  • image
  • audio
  • video
filters.is_public   boolean  optional  

Example: true

filters.owner_id   string  optional  

Must be a valid UUID. Example: 00000000-df85-4307-a069-68612c4471e2

per_page   integer  optional  

Must be between 5 and 100. Example: 100

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Get file

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/media-assets/perspiciatis.illo" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/media-assets/perspiciatis.illo"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/media-assets/perspiciatis.illo';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "File",
    "message": "No query results"
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=UAlC67CJotFY3MIpZFNrnpSlyaeni2pcPFQ97Rhi; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Unable to find the media asset you requested."
}
 

Request      

GET v1/media-assets/{media_asset_id}.{extension}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

media_asset_id   string   

The ID of the media asset. Example: perspiciatis

extension   string   

Example: illo

Get file

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/media-assets/download/voluptatum.consequatur" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/media-assets/download/voluptatum.consequatur"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/media-assets/download/voluptatum.consequatur';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "File",
    "message": "No query results"
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=YEgqqbvo9SkPRpMhiOthRDqFRSHuwaFmBYi9GbTC; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Unable to find the media asset you requested."
}
 

Request      

GET v1/media-assets/download/{media_asset_id}.{extension}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

media_asset_id   string   

The ID of the media asset. Example: voluptatum

extension   string   

Example: consequatur

Show

Endpoint for fetching MediaAsset details

When MediaAsset is private it can only be viewed by admin or owner

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/media-assets/sunt" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/media-assets/sunt"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/media-assets/sunt';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "MediaAsset",
    "message": "No query results"
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=xJ2tFeJwA9vBAMMu46LZk0EniHjiazvgkCwsUBsm; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Unable to find the media asset you requested."
}
 

Request      

GET v1/media-assets/{media_asset_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

media_asset_id   string   

The ID of the media asset. Example: sunt

Genres

List

Endpoint for fetching all available genres.

In order to list non-public genres { filters.is_public: false } you'll need an Admin role.

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/data/genres?filters[name]=Alternative&filters[is_public]=1&per_page=100&page=1&pagination_type=page" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/data/genres"
);

const params = {
    "filters[name]": "Alternative",
    "filters[is_public]": "1",
    "per_page": "100",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/data/genres';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[name]' => 'Alternative',
            'filters[is_public]' => '1',
            'per_page' => '100',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=fsXuq3KT6530ATzA0cVOblY2cPLvsZvHBWe3mcqG; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12",
            "name": "Alternative",
            "tracks": 789093
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "http://localhost:8083/v1/data/genres",
        "per_page": 100,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET v1/data/genres

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object  optional  
filters.name   string  optional  

Example: Alternative

filters.is_public   boolean  optional  

Example: true

per_page   integer  optional  

Must be between 5 and 100. Example: 100

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Show

Endpoint for fetching genre details

When genre is private it can only be viewed by admin

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/data/genres/9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/data/genres/9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/data/genres/9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=Rz819bPc7y66bkXGyN7cQ9bljnlPJRm7IowQgpnE; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12",
        "name": "Alternative",
        "tracks": 789093
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Genre",
    "message": "No query results"
}
 

Request      

GET v1/data/genres/{genre_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

genre_id   string   

The ID of the genre. Example: 9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12

Countries

Endpoint for fetching list of countries

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/data/countries" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/data/countries"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/data/countries';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=FAYtDNPJ9nmapIexZsMIgp4ROjieiv7tQ5IOWmKb; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "AF",
            "name": "Afghanistan"
        },
        {
            "id": "AX",
            "name": "Åland Islands"
        },
        {
            "id": "AL",
            "name": "Albania"
        },
        {
            "id": "DZ",
            "name": "Algeria"
        },
        {
            "id": "AS",
            "name": "American Samoa"
        },
        {
            "id": "AD",
            "name": "Andorra"
        },
        {
            "id": "AO",
            "name": "Angola"
        },
        {
            "id": "AI",
            "name": "Anguilla"
        },
        {
            "id": "AQ",
            "name": "Antarctica"
        },
        {
            "id": "AG",
            "name": "Antigua and Barbuda"
        },
        {
            "id": "AR",
            "name": "Argentina"
        },
        {
            "id": "AM",
            "name": "Armenia"
        },
        {
            "id": "AW",
            "name": "Aruba"
        },
        {
            "id": "AU",
            "name": "Australia"
        },
        {
            "id": "AT",
            "name": "Austria"
        },
        {
            "id": "AZ",
            "name": "Azerbaijan"
        },
        {
            "id": "BS",
            "name": "Bahamas"
        },
        {
            "id": "BH",
            "name": "Bahrain"
        },
        {
            "id": "BD",
            "name": "Bangladesh"
        },
        {
            "id": "BB",
            "name": "Barbados"
        },
        {
            "id": "BY",
            "name": "Belarus"
        },
        {
            "id": "BE",
            "name": "Belgium"
        },
        {
            "id": "BZ",
            "name": "Belize"
        },
        {
            "id": "BJ",
            "name": "Benin"
        },
        {
            "id": "BM",
            "name": "Bermuda"
        },
        {
            "id": "BT",
            "name": "Bhutan"
        },
        {
            "id": "BO",
            "name": "Bolivia, Plurinational State of"
        },
        {
            "id": "BQ",
            "name": "Bonaire, Sint Eustatius and Saba"
        },
        {
            "id": "BA",
            "name": "Bosnia and Herzegovina"
        },
        {
            "id": "BW",
            "name": "Botswana"
        },
        {
            "id": "BV",
            "name": "Bouvet Island"
        },
        {
            "id": "BR",
            "name": "Brazil"
        },
        {
            "id": "IO",
            "name": "British Indian Ocean Territory"
        },
        {
            "id": "BN",
            "name": "Brunei Darussalam"
        },
        {
            "id": "BG",
            "name": "Bulgaria"
        },
        {
            "id": "BF",
            "name": "Burkina Faso"
        },
        {
            "id": "BI",
            "name": "Burundi"
        },
        {
            "id": "KH",
            "name": "Cambodia"
        },
        {
            "id": "CM",
            "name": "Cameroon"
        },
        {
            "id": "CA",
            "name": "Canada"
        },
        {
            "id": "CV",
            "name": "Cape Verde"
        },
        {
            "id": "KY",
            "name": "Cayman Islands"
        },
        {
            "id": "CF",
            "name": "Central African Republic"
        },
        {
            "id": "TD",
            "name": "Chad"
        },
        {
            "id": "CL",
            "name": "Chile"
        },
        {
            "id": "CN",
            "name": "China"
        },
        {
            "id": "CX",
            "name": "Christmas Island"
        },
        {
            "id": "CC",
            "name": "Cocos (Keeling) Islands"
        },
        {
            "id": "CO",
            "name": "Colombia"
        },
        {
            "id": "KM",
            "name": "Comoros"
        },
        {
            "id": "CG",
            "name": "Congo"
        },
        {
            "id": "CD",
            "name": "Congo, the Democratic Republic of the"
        },
        {
            "id": "CK",
            "name": "Cook Islands"
        },
        {
            "id": "CR",
            "name": "Costa Rica"
        },
        {
            "id": "CI",
            "name": "Côte d'Ivoire"
        },
        {
            "id": "HR",
            "name": "Croatia"
        },
        {
            "id": "CU",
            "name": "Cuba"
        },
        {
            "id": "CW",
            "name": "Curaçao"
        },
        {
            "id": "CY",
            "name": "Cyprus"
        },
        {
            "id": "CZ",
            "name": "Czech Republic"
        },
        {
            "id": "DK",
            "name": "Denmark"
        },
        {
            "id": "DJ",
            "name": "Djibouti"
        },
        {
            "id": "DM",
            "name": "Dominica"
        },
        {
            "id": "DO",
            "name": "Dominican Republic"
        },
        {
            "id": "EC",
            "name": "Ecuador"
        },
        {
            "id": "EG",
            "name": "Egypt"
        },
        {
            "id": "SV",
            "name": "El Salvador"
        },
        {
            "id": "GQ",
            "name": "Equatorial Guinea"
        },
        {
            "id": "ER",
            "name": "Eritrea"
        },
        {
            "id": "EE",
            "name": "Estonia"
        },
        {
            "id": "ET",
            "name": "Ethiopia"
        },
        {
            "id": "FK",
            "name": "Falkland Islands (Malvinas)"
        },
        {
            "id": "FO",
            "name": "Faroe Islands"
        },
        {
            "id": "FJ",
            "name": "Fiji"
        },
        {
            "id": "FI",
            "name": "Finland"
        },
        {
            "id": "FR",
            "name": "France"
        },
        {
            "id": "GF",
            "name": "French Guiana"
        },
        {
            "id": "PF",
            "name": "French Polynesia"
        },
        {
            "id": "TF",
            "name": "French Southern Territories"
        },
        {
            "id": "GA",
            "name": "Gabon"
        },
        {
            "id": "GM",
            "name": "Gambia"
        },
        {
            "id": "GE",
            "name": "Georgia"
        },
        {
            "id": "DE",
            "name": "Germany"
        },
        {
            "id": "GH",
            "name": "Ghana"
        },
        {
            "id": "GI",
            "name": "Gibraltar"
        },
        {
            "id": "GR",
            "name": "Greece"
        },
        {
            "id": "GL",
            "name": "Greenland"
        },
        {
            "id": "GD",
            "name": "Grenada"
        },
        {
            "id": "GP",
            "name": "Guadeloupe"
        },
        {
            "id": "GU",
            "name": "Guam"
        },
        {
            "id": "GT",
            "name": "Guatemala"
        },
        {
            "id": "GG",
            "name": "Guernsey"
        },
        {
            "id": "GN",
            "name": "Guinea"
        },
        {
            "id": "GW",
            "name": "Guinea-Bissau"
        },
        {
            "id": "GY",
            "name": "Guyana"
        },
        {
            "id": "HT",
            "name": "Haiti"
        },
        {
            "id": "HM",
            "name": "Heard Island and McDonald Mcdonald Islands"
        },
        {
            "id": "VA",
            "name": "Holy See (Vatican City State)"
        },
        {
            "id": "HN",
            "name": "Honduras"
        },
        {
            "id": "HK",
            "name": "Hong Kong"
        },
        {
            "id": "HU",
            "name": "Hungary"
        },
        {
            "id": "IS",
            "name": "Iceland"
        },
        {
            "id": "IN",
            "name": "India"
        },
        {
            "id": "ID",
            "name": "Indonesia"
        },
        {
            "id": "IR",
            "name": "Iran, Islamic Republic of"
        },
        {
            "id": "IQ",
            "name": "Iraq"
        },
        {
            "id": "IE",
            "name": "Ireland"
        },
        {
            "id": "IM",
            "name": "Isle of Man"
        },
        {
            "id": "IL",
            "name": "Israel"
        },
        {
            "id": "IT",
            "name": "Italy"
        },
        {
            "id": "JM",
            "name": "Jamaica"
        },
        {
            "id": "JP",
            "name": "Japan"
        },
        {
            "id": "JE",
            "name": "Jersey"
        },
        {
            "id": "JO",
            "name": "Jordan"
        },
        {
            "id": "KZ",
            "name": "Kazakhstan"
        },
        {
            "id": "KE",
            "name": "Kenya"
        },
        {
            "id": "KI",
            "name": "Kiribati"
        },
        {
            "id": "KP",
            "name": "Korea, Democratic People's Republic of"
        },
        {
            "id": "KR",
            "name": "Korea, Republic of"
        },
        {
            "id": "KW",
            "name": "Kuwait"
        },
        {
            "id": "KG",
            "name": "Kyrgyzstan"
        },
        {
            "id": "LA",
            "name": "Lao People's Democratic Republic"
        },
        {
            "id": "LV",
            "name": "Latvia"
        },
        {
            "id": "LB",
            "name": "Lebanon"
        },
        {
            "id": "LS",
            "name": "Lesotho"
        },
        {
            "id": "LR",
            "name": "Liberia"
        },
        {
            "id": "LY",
            "name": "Libya"
        },
        {
            "id": "LI",
            "name": "Liechtenstein"
        },
        {
            "id": "LT",
            "name": "Lithuania"
        },
        {
            "id": "LU",
            "name": "Luxembourg"
        },
        {
            "id": "MO",
            "name": "Macao"
        },
        {
            "id": "MK",
            "name": "Macedonia, the Former Yugoslav Republic of"
        },
        {
            "id": "MG",
            "name": "Madagascar"
        },
        {
            "id": "MW",
            "name": "Malawi"
        },
        {
            "id": "MY",
            "name": "Malaysia"
        },
        {
            "id": "MV",
            "name": "Maldives"
        },
        {
            "id": "ML",
            "name": "Mali"
        },
        {
            "id": "MT",
            "name": "Malta"
        },
        {
            "id": "MH",
            "name": "Marshall Islands"
        },
        {
            "id": "MQ",
            "name": "Martinique"
        },
        {
            "id": "MR",
            "name": "Mauritania"
        },
        {
            "id": "MU",
            "name": "Mauritius"
        },
        {
            "id": "YT",
            "name": "Mayotte"
        },
        {
            "id": "MX",
            "name": "Mexico"
        },
        {
            "id": "FM",
            "name": "Micronesia, Federated States of"
        },
        {
            "id": "MD",
            "name": "Moldova, Republic of"
        },
        {
            "id": "MC",
            "name": "Monaco"
        },
        {
            "id": "MN",
            "name": "Mongolia"
        },
        {
            "id": "ME",
            "name": "Montenegro"
        },
        {
            "id": "MS",
            "name": "Montserrat"
        },
        {
            "id": "MA",
            "name": "Morocco"
        },
        {
            "id": "MZ",
            "name": "Mozambique"
        },
        {
            "id": "MM",
            "name": "Myanmar"
        },
        {
            "id": "NA",
            "name": "Namibia"
        },
        {
            "id": "NR",
            "name": "Nauru"
        },
        {
            "id": "NP",
            "name": "Nepal"
        },
        {
            "id": "NL",
            "name": "Netherlands"
        },
        {
            "id": "NC",
            "name": "New Caledonia"
        },
        {
            "id": "NZ",
            "name": "New Zealand"
        },
        {
            "id": "NI",
            "name": "Nicaragua"
        },
        {
            "id": "NE",
            "name": "Niger"
        },
        {
            "id": "NG",
            "name": "Nigeria"
        },
        {
            "id": "NU",
            "name": "Niue"
        },
        {
            "id": "NF",
            "name": "Norfolk Island"
        },
        {
            "id": "MP",
            "name": "Northern Mariana Islands"
        },
        {
            "id": "NO",
            "name": "Norway"
        },
        {
            "id": "OM",
            "name": "Oman"
        },
        {
            "id": "PK",
            "name": "Pakistan"
        },
        {
            "id": "PW",
            "name": "Palau"
        },
        {
            "id": "PS",
            "name": "Palestine, State of"
        },
        {
            "id": "PA",
            "name": "Panama"
        },
        {
            "id": "PG",
            "name": "Papua New Guinea"
        },
        {
            "id": "PY",
            "name": "Paraguay"
        },
        {
            "id": "PE",
            "name": "Peru"
        },
        {
            "id": "PH",
            "name": "Philippines"
        },
        {
            "id": "PN",
            "name": "Pitcairn"
        },
        {
            "id": "PL",
            "name": "Poland"
        },
        {
            "id": "PT",
            "name": "Portugal"
        },
        {
            "id": "PR",
            "name": "Puerto Rico"
        },
        {
            "id": "QA",
            "name": "Qatar"
        },
        {
            "id": "RE",
            "name": "Réunion"
        },
        {
            "id": "RO",
            "name": "Romania"
        },
        {
            "id": "RU",
            "name": "Russian Federation"
        },
        {
            "id": "RW",
            "name": "Rwanda"
        },
        {
            "id": "BL",
            "name": "Saint Barthélemy"
        },
        {
            "id": "SH",
            "name": "Saint Helena, Ascension and Tristan da Cunha"
        },
        {
            "id": "KN",
            "name": "Saint Kitts and Nevis"
        },
        {
            "id": "LC",
            "name": "Saint Lucia"
        },
        {
            "id": "MF",
            "name": "Saint Martin (French part)"
        },
        {
            "id": "PM",
            "name": "Saint Pierre and Miquelon"
        },
        {
            "id": "VC",
            "name": "Saint Vincent and the Grenadines"
        },
        {
            "id": "WS",
            "name": "Samoa"
        },
        {
            "id": "SM",
            "name": "San Marino"
        },
        {
            "id": "ST",
            "name": "Sao Tome and Principe"
        },
        {
            "id": "SA",
            "name": "Saudi Arabia"
        },
        {
            "id": "SN",
            "name": "Senegal"
        },
        {
            "id": "RS",
            "name": "Serbia"
        },
        {
            "id": "SC",
            "name": "Seychelles"
        },
        {
            "id": "SL",
            "name": "Sierra Leone"
        },
        {
            "id": "SG",
            "name": "Singapore"
        },
        {
            "id": "SX",
            "name": "Sint Maarten (Dutch part)"
        },
        {
            "id": "SK",
            "name": "Slovakia"
        },
        {
            "id": "SI",
            "name": "Slovenia"
        },
        {
            "id": "SB",
            "name": "Solomon Islands"
        },
        {
            "id": "SO",
            "name": "Somalia"
        },
        {
            "id": "ZA",
            "name": "South Africa"
        },
        {
            "id": "GS",
            "name": "South Georgia and the South Sandwich Islands"
        },
        {
            "id": "SS",
            "name": "South Sudan"
        },
        {
            "id": "ES",
            "name": "Spain"
        },
        {
            "id": "LK",
            "name": "Sri Lanka"
        },
        {
            "id": "SD",
            "name": "Sudan"
        },
        {
            "id": "SR",
            "name": "Suriname"
        },
        {
            "id": "SJ",
            "name": "Svalbard and Jan Mayen"
        },
        {
            "id": "SZ",
            "name": "Swaziland"
        },
        {
            "id": "SE",
            "name": "Sweden"
        },
        {
            "id": "CH",
            "name": "Switzerland"
        },
        {
            "id": "SY",
            "name": "Syrian Arab Republic"
        },
        {
            "id": "TW",
            "name": "Taiwan"
        },
        {
            "id": "TJ",
            "name": "Tajikistan"
        },
        {
            "id": "TZ",
            "name": "Tanzania, United Republic of"
        },
        {
            "id": "TH",
            "name": "Thailand"
        },
        {
            "id": "TL",
            "name": "Timor-Leste"
        },
        {
            "id": "TG",
            "name": "Togo"
        },
        {
            "id": "TK",
            "name": "Tokelau"
        },
        {
            "id": "TO",
            "name": "Tonga"
        },
        {
            "id": "TT",
            "name": "Trinidad and Tobago"
        },
        {
            "id": "TN",
            "name": "Tunisia"
        },
        {
            "id": "TR",
            "name": "Turkey"
        },
        {
            "id": "TM",
            "name": "Turkmenistan"
        },
        {
            "id": "TC",
            "name": "Turks and Caicos Islands"
        },
        {
            "id": "TV",
            "name": "Tuvalu"
        },
        {
            "id": "UG",
            "name": "Uganda"
        },
        {
            "id": "UA",
            "name": "Ukraine"
        },
        {
            "id": "AE",
            "name": "United Arab Emirates"
        },
        {
            "id": "GB",
            "name": "United Kingdom"
        },
        {
            "id": "US",
            "name": "United States"
        },
        {
            "id": "UM",
            "name": "United States Minor Outlying Islands"
        },
        {
            "id": "UY",
            "name": "Uruguay"
        },
        {
            "id": "UZ",
            "name": "Uzbekistan"
        },
        {
            "id": "VU",
            "name": "Vanuatu"
        },
        {
            "id": "VE",
            "name": "Venezuela, Bolivarian Republic of"
        },
        {
            "id": "VN",
            "name": "Viet Nam"
        },
        {
            "id": "VG",
            "name": "Virgin Islands, British"
        },
        {
            "id": "VI",
            "name": "Virgin Islands, U.S."
        },
        {
            "id": "WF",
            "name": "Wallis and Futuna"
        },
        {
            "id": "EH",
            "name": "Western Sahara"
        },
        {
            "id": "YE",
            "name": "Yemen"
        },
        {
            "id": "ZM",
            "name": "Zambia"
        },
        {
            "id": "ZW",
            "name": "Zimbabwe"
        }
    ]
}
 

Request      

GET v1/data/countries

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

WIP

Routes that are still in progress

Missing Implementation

POST v1/playlists/{playlist}/{media}

requires authentication

Example request:
curl --request POST \
    "http://localhost:8083/v1/playlists/aperiam/maxime" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/playlists/aperiam/maxime"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists/aperiam/maxime';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=MWK9i6L8FAwpGELByYPOw5y2b3KdVHBFTII0FJVf; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Unable to find the playlist you requested."
}
 

Request      

POST v1/playlists/{playlist}/{media}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

playlist   string   

The playlist. Example: aperiam

media   string   

Example: maxime

DELETE v1/playlists/{playlist}/{media}

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/playlists/dolores/et" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/playlists/dolores/et"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/playlists/dolores/et';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=obp39UPakcV9mQUnnnBiz2jeK8Ktg7DLO7kvaAhZ; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Unable to find the playlist you requested."
}
 

Request      

DELETE v1/playlists/{playlist}/{media}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

playlist   string   

The playlist. Example: dolores

media   string   

Example: et

POST v1/interest/{entity}/{id}

requires authentication

Example request:
curl --request POST \
    "http://localhost:8083/v1/interest/eligendi/voluptatem" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/interest/eligendi/voluptatem"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/interest/eligendi/voluptatem';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=DYggipzN30p4WzZIuHcHI0nPrsc4opXO2QqC4NFU; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 


 

Request      

POST v1/interest/{entity}/{id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

entity   string   

Example: eligendi

id   string   

The ID of the {entity}. Example: voluptatem

DELETE v1/interest/{entity}/{id}

requires authentication

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/interest/repudiandae/quo" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/interest/repudiandae/quo"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/interest/repudiandae/quo';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=S4Jc9QSzLk2052CoyxxFUQHnawswb7WZYJkekOhX; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 


 

Request      

DELETE v1/interest/{entity}/{id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

entity   string   

Example: repudiandae

id   string   

The ID of the {entity}. Example: quo

GET v1/notifications

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/notifications" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/notifications"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/notifications';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=5IaH14zfVhJiRg7ePtuXftXyhTRGEZn4PwggBocH; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 


 

Request      

GET v1/notifications

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

GET v1/notifications/{notification}/read

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/notifications/a/read" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/notifications/a/read"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/notifications/a/read';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=2kyWavc33NcSmoZnGBZJejm0vScTLQML1jUvB9y5; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 


 

Request      

GET v1/notifications/{notification}/read

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

notification   string   

The notification. Example: a

GET v1/settings

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/settings" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/settings"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/settings';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=WQPziE6mGRApHJ5sTBvqRzobZX3EM8X4L0FLfory; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 


 

Request      

GET v1/settings

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

PATCH v1/settings

requires authentication

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/settings" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/settings"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/settings';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=WREkbiv3P0mvyMntJACmfQNX6V9KG4JZ7o81OKF9; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 


 

Request      

PATCH v1/settings

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Development

Refresh DB

Runs the migrations from scratch + runs dev seeders after

Equal to: php artisan migrate:fresh --seed

Example request:
curl --request POST \
    "http://localhost:8083/v1/dev/db/fresh" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/dev/db/fresh"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/dev/db/fresh';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Request      

POST v1/dev/db/fresh

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Admin

Contains all the routes that are supposed to be used for managing the application from Admin-panel

Health

Show

requires authentication

Provides the most basic details about the health of the services

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/health" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/health"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/health';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=CDcRipy4Tw7sTSdDzj4RESCmMRhJ74Ev3smbvikY; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "api": {
        "version": 1
    },
    "statuses": {
        "database": "healthy"
    },
    "env": "docs",
    "debug": false
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Request      

GET v1/health

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Genres

Create

requires authentication

Add new Genre

Example request:
curl --request POST \
    "http://localhost:8083/v1/genres" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"animi\",
    \"is_public\": false
}"
const url = new URL(
    "http://localhost:8083/v1/genres"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "animi",
    "is_public": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/genres';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'animi',
            'is_public' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=Zv5ZPrV4sikqs1AorGOijS4SqbjZwpsqOxbadwpj; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95a3d7-c481-4ea8-90dd-22519280cb22",
        "name": "animi",
        "tracks": 0
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/genres

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

name   string   

Example: animi

is_public   boolean   

Example: false

Update

requires authentication

Update a Genre

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/genres/9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"quaerat\",
    \"is_public\": false
}"
const url = new URL(
    "http://localhost:8083/v1/genres/9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "quaerat",
    "is_public": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/genres/9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'quaerat',
            'is_public' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=3QNMtSZJnN06UcW3o6tagX3VW8z73IFbv7SOf25j; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12",
        "name": "quaerat",
        "tracks": 789093
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Genre",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PATCH v1/genres/{genre_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

genre_id   string   

The ID of the genre. Example: 9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12

Body Parameters

name   string   

Example: quaerat

is_public   boolean   

Example: false

Delete

requires authentication

Delete a Genre

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/genres/9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/genres/9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/genres/9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=HnrNldeqKrEJKQh2fxnrmNQkCXtZUDQs67JYwkEM; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Genre",
    "message": "No query results"
}
 

Request      

DELETE v1/genres/{genre_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

genre_id   string   

The ID of the genre. Example: 9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12

User

Update user

requires authentication

Update user details using user ID

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"Joe Shmoe\",
    \"password\": \"Ye4oKoEa3Ro9ll\",
    \"password_repeat\": \"Ye4oKoEa3Ro9ll\",
    \"profile\": {
        \"gender\": \"male\",
        \"nickname\": \"joe_shmoe\",
        \"website\": \"https:\\/\\/qplet.ru\",
        \"about\": \"I`m Joe Shmoe\\n\\n I love singing and dancing.\",
        \"avatar_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
        \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
        \"birthdate\": \"2000-01-01\"
    }
}"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "Joe Shmoe",
    "password": "Ye4oKoEa3Ro9ll",
    "password_repeat": "Ye4oKoEa3Ro9ll",
    "profile": {
        "gender": "male",
        "nickname": "joe_shmoe",
        "website": "https:\/\/qplet.ru",
        "about": "I`m Joe Shmoe\n\n I love singing and dancing.",
        "avatar_id": "00000000-422e-41ff-a266-2b0a093307e6",
        "cover_id": "00000000-422e-41ff-a266-2b0a093307e6",
        "birthdate": "2000-01-01"
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'Joe Shmoe',
            'password' => 'Ye4oKoEa3Ro9ll',
            'password_repeat' => 'Ye4oKoEa3Ro9ll',
            'profile' => [
                'gender' => 'male',
                'nickname' => 'joe_shmoe',
                'website' => 'https://qplet.ru',
                'about' => 'I`m Joe Shmoe'."\n"
                    ."\n"
                    .' I love singing and dancing.',
                'avatar_id' => '00000000-422e-41ff-a266-2b0a093307e6',
                'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
                'birthdate' => '2000-01-01',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PATCH v1/users/{user_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Body Parameters

name   string  optional  

Must be a full name of the user. Example: Joe Shmoe

password   string  optional  

Must be at least 8 characters. Example: Ye4oKoEa3Ro9ll

password_repeat   string  optional  

The password_repeat and password must match. This field is required when password is present. The value and password must match. Example: Ye4oKoEa3Ro9ll

profile   object  optional  
gender   string  optional  

Example: male

Must be one of:
  • male
  • female
nickname   string  optional  

Must be unique. Must match the regex /^[A-Za-z0-9_-]+$/. Must be between 6 and 20 characters. Example: joe_shmoe

website   string  optional  

Fully qualified URL. Must be a valid URL. Example: https://qplet.ru

about   string  optional  

Freeform multiline input. Example: Im Joe Shmoe

I love singing and dancing.`

avatar_id   string  optional  

MediaAssets ID that belongs to the user. Example: 00000000-422e-41ff-a266-2b0a093307e6

cover_id   string  optional  

MediaAssets ID that belongs to the user. Example: 00000000-422e-41ff-a266-2b0a093307e6

birthdate   string  optional  

Must be a valid date in the format Y-m-d. Example: 2000-01-01

Ban

requires authentication

Disable user account

Example request:
curl --request POST \
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/ban" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"until\": \"2025-09-08T10:54:38+00:00\"
}"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/ban"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "until": "2025-09-08T10:54:38+00:00"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/ban';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'until' => '2025-09-08T10:54:38+00:00',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/users/{user_id}/ban

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Body Parameters

until   string  optional  

Must be a valid date in the format Y-m-d\TH:i:sP. Example: 2025-09-08T10:54:38+00:00

Unban

requires authentication

Activate user account

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/ban" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/ban"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1/ban';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

DELETE v1/users/{user_id}/ban

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Delete

requires authentication

Soft delete user from database

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/00000000-df85-4307-a069-68612c4471e1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "User",
    "message": "No query results"
}
 

Request      

DELETE v1/users/{user_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Complaints

Show

requires authentication

Returns single Complaint

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/complaints/rem" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/complaints/rem"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/complaints/rem';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):


{
    "type": "Complaint",
    "message": "No query results"
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=UxUN71Nq8lIeYnm1CqWzXoBgO5R5AJpYPoD7rcBY; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Unable to find the complaint you requested."
}
 

Request      

GET v1/complaints/{complaint}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

complaint   string   

The complaint. Example: rem

List

requires authentication

Endpoint for fetching list of complaints

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/complaints?filters[author_id]=00000000-df85-4307-a069-68612c4471e1&per_page=20&page=1&pagination_type=page" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/complaints"
);

const params = {
    "filters[author_id]": "00000000-df85-4307-a069-68612c4471e1",
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/complaints';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[author_id]' => '00000000-df85-4307-a069-68612c4471e1',
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=O27NjXATUuaS9rxEOowd6oWy9lSwMnEQoKUerrD2; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [],
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "path": "http://localhost:8083/v1/complaints",
        "per_page": 20,
        "to": null,
        "total": 0
    }
}
 

Request      

GET v1/complaints

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object  optional  
filters.author_id   string  optional  

Must be a valid UUID. Example: 00000000-df85-4307-a069-68612c4471e1

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Analytics

Country

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/analytics/users/00000000-df85-4307-a069-68612c4471e1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/analytics/users/00000000-df85-4307-a069-68612c4471e1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/analytics/users/00000000-df85-4307-a069-68612c4471e1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=uxJOFheHzAYmKWdhu0VDRY5Wshlrkkfn1lZtQkHr; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "views": 618,
        "subscriptions": 909,
        "subscribers": 776,
        "events": 163,
        "tracks": 664,
        "playlists": 843,
        "albums": 355
    }
}
 

Request      

GET v1/analytics/users/{user_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

user_id   string   

The ID of the user. Example: 00000000-df85-4307-a069-68612c4471e1

Playlist

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/analytics/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/analytics/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/analytics/playlists/00000000-b7fa-4324-b250-a3c6c78b65c4';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=R5OZumGLZQZ9ggH3p1qchJyeXW5tf6TxmvcJMyBz; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

Request      

GET v1/analytics/playlists/{playlist_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

playlist_id   string   

The ID of the playlist. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

Album

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/analytics/albums/00000000-b7fa-4324-b250-a3c6c78b65c4" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/analytics/albums/00000000-b7fa-4324-b250-a3c6c78b65c4"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/analytics/albums/00000000-b7fa-4324-b250-a3c6c78b65c4';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=RomXv0RCkxicCf9GPFdDkmgw8CQT30HlxNtgwN60; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "tracks": 0,
        "likes": 0
    }
}
 

Request      

GET v1/analytics/albums/{album_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

album_id   string   

The ID of the album. Example: 00000000-b7fa-4324-b250-a3c6c78b65c4

Track

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/analytics/tracks/00000000-a791-4783-9845-4b571a9e579f" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/analytics/tracks/00000000-a791-4783-9845-4b571a9e579f"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/analytics/tracks/00000000-a791-4783-9845-4b571a9e579f';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=qh45fxKhFPE46fh1pjQ1VUgFhNK8GhiavmyHz0uL; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "likes": 0,
        "playbacks": 221,
        "playlists": 863
    }
}
 

Request      

GET v1/analytics/tracks/{track_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

track_id   string   

The ID of the track. Example: 00000000-a791-4783-9845-4b571a9e579f

Post

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/analytics/posts/00000000-fdb0-43ce-b555-e0a26ed563ac" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/analytics/posts/00000000-fdb0-43ce-b555-e0a26ed563ac"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/analytics/posts/00000000-fdb0-43ce-b555-e0a26ed563ac';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=0uCExWO0JfB6RlRQV9z5wl2rs1BNie0SDLlmt29B; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "likes": 0,
        "comments": 0,
        "views": 95
    }
}
 

Request      

GET v1/analytics/posts/{post_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

post_id   string   

The ID of the post. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

Complaints

List types

Endpoint for fetching list of complaint types

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/complaints/types" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/complaints/types"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/complaints/types';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=zzz9acdguN91HlEblszushCqCy36ytGlnm5JQJXq; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "name": "album"
        },
        {
            "name": "event"
        },
        {
            "name": "comment"
        },
        {
            "name": "playlist"
        },
        {
            "name": "post"
        },
        {
            "name": "track"
        },
        {
            "name": "user"
        }
    ]
}
 

Request      

GET v1/complaints/types

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

List reasons

Endpoint for fetching list of complaint types

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/complaints/types/laudantium/reasons" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/complaints/types/laudantium/reasons"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/complaints/types/laudantium/reasons';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=9pbiJNNeibDc1yRW3riWBHsfE0pC9JOqVBWNEMMG; expires=Fri, 08 Aug 2025 12:54:37 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

Request      

GET v1/complaints/types/{type}/reasons

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

type   string   

The type. Example: laudantium

Store

requires authentication

Create a Complaint

Example request:
curl --request POST \
    "http://localhost:8083/v1/complaints" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"reason_id\": \"00000000-a24e-421f-94b4-c12974b3a0d9\",
    \"entity\": \"post\",
    \"entity_id\": \"00000000-fdb0-43ce-b555-e0a26ed563ac\",
    \"message\": \"Post contains inappropriate wording.\"
}"
const url = new URL(
    "http://localhost:8083/v1/complaints"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "reason_id": "00000000-a24e-421f-94b4-c12974b3a0d9",
    "entity": "post",
    "entity_id": "00000000-fdb0-43ce-b555-e0a26ed563ac",
    "message": "Post contains inappropriate wording."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/complaints';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'reason_id' => '00000000-a24e-421f-94b4-c12974b3a0d9',
            'entity' => 'post',
            'entity_id' => '00000000-fdb0-43ce-b555-e0a26ed563ac',
            'message' => 'Post contains inappropriate wording.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=Nsp0e2odQskivtwp2CASPG20Gzf2fpoTtDfN4P7H; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95a3dc-0f64-4b59-9095-52269649f244",
        "author": {
            "id": "00000000-df85-4307-a069-68612c4471e3",
            "name": "Admin Test Country",
            "avatar_url": null
        },
        "message": "Post contains inappropriate wording.",
        "type": "post",
        "entity_id": "00000000-fdb0-43ce-b555-e0a26ed563ac",
        "reason": {
            "id": "00000000-a24e-421f-94b4-c12974b3a0d9",
            "title": "Other",
            "description": "Iste possimus fuga deleniti harum natus nostrum consequatur. Odio velit et quaerat dolorem error omnis culpa sunt. Accusantium dolore explicabo est."
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/complaints

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

reason_id   string   

Example: 00000000-a24e-421f-94b4-c12974b3a0d9

entity   string   

Example: post

Must be one of:
  • album
  • event
  • comment
  • playlist
  • post
  • track
  • user
entity_id   string   

Must be a valid UUID. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

message   string  optional  

Example: Post contains inappropriate wording.

Delete

requires authentication

Delete own Complaint

Admin can remove any Complaint

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/complaints/aliquam" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/complaints/aliquam"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/complaints/aliquam';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Complaint",
    "message": "No query results"
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=lrzhp3c4pWw7Ue6uYcNa1QMUiIrIBRzAvVPvgrEU; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Unable to find the complaint you requested."
}
 

Request      

DELETE v1/complaints/{complaint}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

complaint   string   

The complaint. Example: aliquam

Contacts

Show

requires authentication

Returns single contact

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/contact/commodi" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/contact/commodi"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/contact/commodi';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=94RiJSgrWs37Y6Bf5qJYRYYyBDojgXIPhDiq86kw; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": null,
        "name": null,
        "email": null,
        "message": null
    }
}
 

Example response (404):


{
    "type": "Contact",
    "message": "No query results"
}
 

Request      

GET v1/contact/{complaint}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

complaint   string   

Example: commodi

List

requires authentication

Endpoint for fetching list of contacts

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/contact?per_page=20&page=1&pagination_type=page" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/contact"
);

const params = {
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/contact';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=GAyKWqdruC5S7Epj87wvKJBH2SloyfzhC6gxWJK1; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [],
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "path": "http://localhost:8083/v1/contact",
        "per_page": 20,
        "to": null,
        "total": 0
    }
}
 

Request      

GET v1/contact

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Delete

requires authentication

Delete own contact

Admin can remove any contact

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/contact/placeat" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/contact/placeat"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/contact/placeat';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=NCDVLxbtCkZS64MvRlOLzVNSLffr7tmHrtRihKGO; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Contact",
    "message": "No query results"
}
 

Request      

DELETE v1/contact/{complaint}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

complaint   string   

Example: placeat

Store

Create a contact with optionally shared entity

Example request:
curl --request POST \
    "http://localhost:8083/v1/contact" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"Domenica Emard\",
    \"email\": \"weimann.keshawn@yahoo.com\",
    \"message\": \"Debitis rerum sed labore ut dolorem voluptas. Consequatur quia minus eius rerum qui voluptatum aspernatur. Inventore harum atque et aut sit qui.\"
}"
const url = new URL(
    "http://localhost:8083/v1/contact"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "Domenica Emard",
    "email": "weimann.keshawn@yahoo.com",
    "message": "Debitis rerum sed labore ut dolorem voluptas. Consequatur quia minus eius rerum qui voluptatum aspernatur. Inventore harum atque et aut sit qui."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/contact';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'Domenica Emard',
            'email' => 'weimann.keshawn@yahoo.com',
            'message' => 'Debitis rerum sed labore ut dolorem voluptas. Consequatur quia minus eius rerum qui voluptatum aspernatur. Inventore harum atque et aut sit qui.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=WXy4OaNJP3ul5ZBCIjVtoun7HInwOxtpI93Sge3s; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95a3e2-c2be-46dc-9cf5-9bac54b61c27",
        "name": "Domenica Emard",
        "email": "weimann.keshawn@yahoo.com",
        "message": "Debitis rerum sed labore ut dolorem voluptas. Consequatur quia minus eius rerum qui voluptatum aspernatur. Inventore harum atque et aut sit qui."
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/contact

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

name   string   

Example: Domenica Emard

email   string   

Must be a valid email address. Example: weimann.keshawn@yahoo.com

message   string   

Example: Debitis rerum sed labore ut dolorem voluptas. Consequatur quia minus eius rerum qui voluptatum aspernatur. Inventore harum atque et aut sit qui.

Conversations

Chats

List

requires authentication

Endpoint for fetching a list of conversations

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/conversations?per_page=20&page=1&pagination_type=page" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/conversations"
);

const params = {
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/conversations';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=Rw316J6uR3QOWqzQyZzF8wxzo0Wi2DsbspIFXonm; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "9f9598e3-d803-4afc-93e9-24e8e9abf8a2",
            "name": null,
            "latest_message_at": null
        },
        {
            "id": "9f9598e4-6787-4945-9ea8-956a097221f8",
            "name": null,
            "latest_message_at": null
        },
        {
            "id": "9f9598e4-ca78-4948-9794-7bd08e4abdd8",
            "name": null,
            "latest_message_at": null
        },
        {
            "id": "9f9598e2-db2b-4ab3-9db7-ec9f40390f19",
            "name": null,
            "latest_message_at": null
        },
        {
            "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
            "name": "Fan Test Country, Author Test Country",
            "latest_message_at": null
        }
    ],
    "meta": {
        "path": "http://localhost:8083/v1/conversations",
        "per_page": 20,
        "next_cursor": null,
        "prev_cursor": null
    }
}
 

Request      

GET v1/conversations

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Show

requires authentication

Returns single conversation with a list of recent messages

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):


{
    "type": "Conversation",
    "message": "No query results"
}
 

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=IZ0OACikIcVbb0xmeGV04CYehnLOagpLyjd7tnLi; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

Request      

GET v1/conversations/{conversation_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

conversation_id   string   

The ID of the conversation. Example: 00000000-53f7-4a5b-8c34-e171172c8ba8

Store

requires authentication

Create a conversation in association to an entity

Example request:
curl --request POST \
    "http://localhost:8083/v1/conversations" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"Name\",
    \"type\": \"private\",
    \"participants\": [
        [
            \"00000000-df85-4307-a069-68612c4471e3\",
            \"00000000-df85-4307-a069-68612c4471e2\"
        ]
    ]
}"
const url = new URL(
    "http://localhost:8083/v1/conversations"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "Name",
    "type": "private",
    "participants": [
        [
            "00000000-df85-4307-a069-68612c4471e3",
            "00000000-df85-4307-a069-68612c4471e2"
        ]
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/conversations';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'Name',
            'type' => 'private',
            'participants' => [
                [
                    '00000000-df85-4307-a069-68612c4471e3',
                    '00000000-df85-4307-a069-68612c4471e2',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Example response (422):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=HWEhXu89bMfc1d4WL0SDgP3EovAqsEjUVfiW0bo2; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "The participants must have at least 2 items. (and 1 more error)",
    "errors": {
        "participants": [
            "The participants must have at least 2 items."
        ],
        "participants.0": [
            "The participants.0 must be a valid UUID."
        ]
    }
}
 

Request      

POST v1/conversations

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

name   string  optional  

This field is required when type or group is present. Example: Name

type   string   

Example: private

Must be one of:
  • private
  • group
participants   string[]   

Must be a valid UUID.

Update

requires authentication

Update own conversation

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"New name\"
}"
const url = new URL(
    "http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "New name"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'New name',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=YAi6tMIZjRY3ijGxoOE38tfZ1dNy9oDGYE0oULXd; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
        "name": "Fan Test Country, Author Test Country",
        "latest_message_at": null
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Conversation",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PATCH v1/conversations/{conversation_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

conversation_id   string   

The ID of the conversation. Example: 00000000-53f7-4a5b-8c34-e171172c8ba8

Body Parameters

name   string  optional  

This field is required when type or group is present. Example: New name

Delete

requires authentication

Delete own conversation

Admin can remove any conversation

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=dW6jaFTc0gxS84kpbmScV73ddVIIu5maI9UyQhdc; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Conversation",
    "message": "No query results"
}
 

Request      

DELETE v1/conversations/{conversation_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

conversation_id   string   

The ID of the conversation. Example: 00000000-53f7-4a5b-8c34-e171172c8ba8

Messages

Store

requires authentication

Send a message to user or conversation

Example request:
curl --request POST \
    "http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"content\": \"My message to the private chat\"
}"
const url = new URL(
    "http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "content": "My message to the private chat"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/conversations/00000000-53f7-4a5b-8c34-e171172c8ba8';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'content' => 'My message to the private chat',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=nvZvBSrFgahkprXSalhrPp6sAos9gJyMFehQNkZj; expires=Fri, 08 Aug 2025 12:54:39 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95a3db-3b83-4c88-9645-bfac016caeae",
        "author": {
            "id": "00000000-df85-4307-a069-68612c4471e3",
            "name": "Admin Test Country",
            "avatar_url": null
        },
        "content": "My message to the private chat"
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/conversations/{conversation_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

conversation_id   string   

The ID of the conversation. Example: 00000000-53f7-4a5b-8c34-e171172c8ba8

Body Parameters

content   string   

Example: My message to the private chat

Update

requires authentication

Update own message

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/conversations/magnam/9f9598e2-53a7-4691-a4ee-5a51ea1cd81e" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"content\": \"My conversation to the private\"
}"
const url = new URL(
    "http://localhost:8083/v1/conversations/magnam/9f9598e2-53a7-4691-a4ee-5a51ea1cd81e"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "content": "My conversation to the private"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/conversations/magnam/9f9598e2-53a7-4691-a4ee-5a51ea1cd81e';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'content' => 'My conversation to the private',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Message",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=VpHCG2B1pwhJsBwwtgEkmFcnAnpb2xUwzMcZn4Fx; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

Request      

PATCH v1/conversations/{conversation}/{message_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

conversation   string   

The conversation. Example: magnam

message_id   string   

The ID of the message. Example: 9f9598e2-53a7-4691-a4ee-5a51ea1cd81e

Body Parameters

content   string   

Example: My conversation to the private

Delete

requires authentication

Delete own message

Admin can remove any message

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/conversations/ratione/9f9598e2-53a7-4691-a4ee-5a51ea1cd81e" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/conversations/ratione/9f9598e2-53a7-4691-a4ee-5a51ea1cd81e"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/conversations/ratione/9f9598e2-53a7-4691-a4ee-5a51ea1cd81e';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Message",
    "message": "No query results"
}
 

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=Zd8G1UQhXoEQx3RsoQgncvonTg5z7CM7Ke8fwqEE; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

Request      

DELETE v1/conversations/{conversation}/{message_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

conversation   string   

The conversation. Example: ratione

message_id   string   

The ID of the message. Example: 9f9598e2-53a7-4691-a4ee-5a51ea1cd81e

Participants

Delete

requires authentication

Delete own message

Admin can remove any message

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/conversations/aperiam/participants" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/conversations/aperiam/participants"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/conversations/aperiam/participants';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Message",
    "message": "No query results"
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=68faDQOmARWJKTQKHZdEBz3itMFBuuqqwlfUGdvT; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Unable to find the message you requested."
}
 

Request      

DELETE v1/conversations/{conversation}/participants

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

conversation   string   

The conversation. Example: aperiam

Events

Store

requires authentication

Create a event with optionally shared entity

Example request:
curl --request POST \
    "http://localhost:8083/v1/events" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"title\": \"My Event content\",
    \"date\": \"2025-09-07\",
    \"time\": \"18:00\",
    \"type\": \"online\",
    \"location\": \"Metro Manila\",
    \"seats\": 500,
    \"website\": \"https:\\/\\/www.example.com\",
    \"content\": \"Some information about My Event. So this is the content.\",
    \"banner_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
    \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\"
}"
const url = new URL(
    "http://localhost:8083/v1/events"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "title": "My Event content",
    "date": "2025-09-07",
    "time": "18:00",
    "type": "online",
    "location": "Metro Manila",
    "seats": 500,
    "website": "https:\/\/www.example.com",
    "content": "Some information about My Event. So this is the content.",
    "banner_id": "00000000-422e-41ff-a266-2b0a093307e6",
    "cover_id": "00000000-422e-41ff-a266-2b0a093307e6"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'title' => 'My Event content',
            'date' => '2025-09-07',
            'time' => '18:00',
            'type' => 'online',
            'location' => 'Metro Manila',
            'seats' => 500,
            'website' => 'https://www.example.com',
            'content' => 'Some information about My Event. So this is the content.',
            'banner_id' => '00000000-422e-41ff-a266-2b0a093307e6',
            'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=pN7Z1tg9wVbqn71fdv9jkA76O9qiltkOxzgpfq7c; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f95a3d9-61b0-46ea-861d-0ce9c480c306",
        "author": {
            "id": "00000000-df85-4307-a069-68612c4471e3",
            "name": "Admin Test Country",
            "avatar_url": null
        },
        "title": "My Event content",
        "content": "Some information about My Event. So this is the content.",
        "date": "2025-09-07",
        "time": "18:00:00",
        "type": "online",
        "location": "Metro Manila",
        "seats": 500,
        "free_seats": 500,
        "website": "https://www.example.com",
        "banner": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo"
        },
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo"
        },
        "media": null,
        "tags": null,
        "created_at": 1754650478,
        "analytics": {
            "interested": 0,
            "subscribed": 0,
            "views": 0,
            "likes": 0,
            "comments": 0,
            "shares": 0
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/events

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

title   string   

Example: My Event content

date   string   

Must be a valid date in the format Y-m-d. Example: 2025-09-07

time   string  optional  

Must be a valid date in the format H:i:s. Example: 18:00

type   string  optional  

Example: online

Must be one of:
  • online
  • onsite
  • hybrid
location   string  optional  

Example: Metro Manila

seats   integer  optional  

Example: 500

website   string  optional  

Must be a valid URL. Example: https://www.example.com

content   string  optional  

Example: Some information about My Event. So this is the content.

banner_id   string  optional  

Example: 00000000-422e-41ff-a266-2b0a093307e6

cover_id   string  optional  

Example: 00000000-422e-41ff-a266-2b0a093307e6

media   object  optional  
tags   object  optional  

Update

requires authentication

Update own event

Example request:
curl --request PATCH \
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"title\": \"My Event content\",
    \"date\": \"2025-09-07\",
    \"time\": \"18:00\",
    \"type\": \"online\",
    \"location\": \"Metro Manila\",
    \"seats\": 500,
    \"website\": \"https:\\/\\/www.example.com\",
    \"content\": \"Some information about My Event. So this is the content.\",
    \"banner_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
    \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\"
}"
const url = new URL(
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "title": "My Event content",
    "date": "2025-09-07",
    "time": "18:00",
    "type": "online",
    "location": "Metro Manila",
    "seats": 500,
    "website": "https:\/\/www.example.com",
    "content": "Some information about My Event. So this is the content.",
    "banner_id": "00000000-422e-41ff-a266-2b0a093307e6",
    "cover_id": "00000000-422e-41ff-a266-2b0a093307e6"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'title' => 'My Event content',
            'date' => '2025-09-07',
            'time' => '18:00',
            'type' => 'online',
            'location' => 'Metro Manila',
            'seats' => 500,
            'website' => 'https://www.example.com',
            'content' => 'Some information about My Event. So this is the content.',
            'banner_id' => '00000000-422e-41ff-a266-2b0a093307e6',
            'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=FNkaJ5NsUUyKMebcFsy1AMBxZ3MSWaTxwhEltrQU; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-fdb0-43ce-b555-e0a26ed563ac",
        "author": {
            "id": "00000000-df85-4307-a069-68612c4471e1",
            "name": "Fan Test Country",
            "avatar_url": null
        },
        "title": "My Event content",
        "content": "Some information about My Event. So this is the content.",
        "date": "2025-09-07",
        "time": "18:00:00",
        "type": "online",
        "location": "Metro Manila",
        "seats": 500,
        "free_seats": 497,
        "website": "https://www.example.com",
        "banner": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo"
        },
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo"
        },
        "media": null,
        "tags": null,
        "created_at": 1754648638,
        "updated_at": 1754650478,
        "analytics": {
            "interested": 0,
            "subscribed": 3,
            "views": 3,
            "likes": 0,
            "comments": 0,
            "shares": 0
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Event",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PATCH v1/events/{event_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

event_id   string   

The ID of the event. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

Body Parameters

title   string   

Example: My Event content

date   string   

Must be a valid date in the format Y-m-d. Example: 2025-09-07

time   string  optional  

Must be a valid date in the format H:i:s. Example: 18:00

type   string  optional  

Example: online

Must be one of:
  • online
  • onsite
  • hybrid
location   string  optional  

Example: Metro Manila

seats   integer  optional  

Example: 500

website   string  optional  

Must be a valid URL. Example: https://www.example.com

content   string  optional  

Example: Some information about My Event. So this is the content.

banner_id   string  optional  

Example: 00000000-422e-41ff-a266-2b0a093307e6

cover_id   string  optional  

Example: 00000000-422e-41ff-a266-2b0a093307e6

media   object  optional  
tags   object  optional  

Delete

requires authentication

Delete own event

Admin can remove any event

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=DaFhe6Dpt4wcbSWS6HjELFFUKM332ceQd6hjEvGx; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Event",
    "message": "No query results"
}
 

Request      

DELETE v1/events/{event_id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

event_id   string   

The ID of the event. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

List

Endpoint for fetching list of events

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/events?filters[title]=party&filters[author_id]=00000000-df85-4307-a069-68612c4471e1&filters[is_available]=1&filters[participant][id]=00000000-df85-4307-a069-68612c4471e1&filters[participant][inclusive]=&filters[subscribed_to_organiser]=&filters[date][from]=2025-08-18&filters[date][to]=2025-09-07&per_page=20&page=1&pagination_type=page" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/events"
);

const params = {
    "filters[title]": "party",
    "filters[author_id]": "00000000-df85-4307-a069-68612c4471e1",
    "filters[is_available]": "1",
    "filters[participant][id]": "00000000-df85-4307-a069-68612c4471e1",
    "filters[participant][inclusive]": "",
    "filters[subscribed_to_organiser]": "",
    "filters[date][from]": "2025-08-18",
    "filters[date][to]": "2025-09-07",
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'filters[title]' => 'party',
            'filters[author_id]' => '00000000-df85-4307-a069-68612c4471e1',
            'filters[is_available]' => '1',
            'filters[participant][id]' => '00000000-df85-4307-a069-68612c4471e1',
            'filters[participant][inclusive]' => '',
            'filters[subscribed_to_organiser]' => '',
            'filters[date][from]' => '2025-08-18',
            'filters[date][to]' => '2025-09-07',
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=JiBSTGXo2ypiDuxqJnL5nujPjJ4pea5zqsborvBe; expires=Fri, 08 Aug 2025 12:54:41 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [],
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "path": "http://localhost:8083/v1/events",
        "per_page": 20,
        "to": null,
        "total": 0
    }
}
 

Request      

GET v1/events

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

filters   object  optional  
filters.title   string  optional  

Example: party

filters.author_id   string  optional  

Must be a valid UUID. Example: 00000000-df85-4307-a069-68612c4471e1

filters.is_available   boolean  optional  

Example: true

filters.participant   object  optional  
filters.participant.id   string  optional  

Must be a valid UUID. Example: 00000000-df85-4307-a069-68612c4471e1

filters.participant.inclusive   boolean  optional  

Example: false

filters.subscribed_to_organiser   boolean  optional  

Example: false

filters.date   object  optional  
filters.date.from   string  optional  

Must be a valid date in the format Y-m-d. Example: 2025-08-18

filters.date.to   string  optional  

Must be a valid date in the format Y-m-d. Example: 2025-09-07

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Show

Returns single event

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=3hhBl9oD8HtH6FTKmSsfXAxDm5GU5M018OEHfPeZ; expires=Fri, 08 Aug 2025 12:54:41 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-fdb0-43ce-b555-e0a26ed563ac",
        "author": {
            "id": "00000000-df85-4307-a069-68612c4471e1",
            "name": "Fan Test Country",
            "avatar_url": null
        },
        "title": "Sit autem qui eum corrupti eaque.",
        "content": "Harum saepe rerum rerum voluptatem voluptatum. Commodi ullam quia et perferendis a consequatur. Provident reprehenderit eum eaque expedita quia. Itaque occaecati quia est quo.",
        "date": "1994-10-03",
        "time": "16:59:55",
        "type": "online",
        "location": "https://www.mann.com/odit-et-dolorem-itaque-ut-id-natus-est-debitis",
        "seats": "40",
        "free_seats": 37,
        "website": "http://www.larson.com/omnis-et-consequatur-similique-qui-omnis-quo-qui",
        "media": null,
        "tags": null,
        "is_subscribed": true,
        "created_at": 1754648638,
        "analytics": {
            "interested": 0,
            "subscribed": 3,
            "views": 3,
            "likes": 0,
            "comments": 0,
            "shares": 0
        }
    }
}
 

Example response (404):


{
    "type": "Event",
    "message": "No query results"
}
 

Request      

GET v1/events/{event_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

event_id   string   

The ID of the event. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

List user subscriptions

Endpoint for fetching list of events user is subscribed to

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/events/subscribed/00000000-df85-4307-a069-68612c4471e3?per_page=20&page=1&pagination_type=page" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/events/subscribed/00000000-df85-4307-a069-68612c4471e3"
);

const params = {
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events/subscribed/00000000-df85-4307-a069-68612c4471e3';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=yKRM8AVblDeqgX2AFkFer9t5HDgsGllu54owJpOp; expires=Fri, 08 Aug 2025 12:54:41 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "00000000-fdb0-43ce-b555-e0a26ed563ac",
            "author": {
                "id": "00000000-df85-4307-a069-68612c4471e1",
                "name": "Fan Test Country",
                "avatar_url": null
            },
            "title": "Sit autem qui eum corrupti eaque.",
            "content": "Harum saepe rerum rerum voluptatem voluptatum. Commodi ullam quia et perferendis a consequatur. Provident reprehenderit eum eaque expedita quia. Itaque occaecati quia est quo.",
            "date": "1994-10-03",
            "time": "16:59:55",
            "type": "online",
            "location": "https://www.mann.com/odit-et-dolorem-itaque-ut-id-natus-est-debitis",
            "seats": "40",
            "free_seats": 37,
            "website": "http://www.larson.com/omnis-et-consequatur-similique-qui-omnis-quo-qui",
            "media": null,
            "tags": null,
            "is_subscribed": true,
            "created_at": 1754648638,
            "analytics": {
                "interested": 0,
                "subscribed": 3,
                "views": 3,
                "likes": 0,
                "comments": 0,
                "shares": 0
            }
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "http://localhost:8083/v1/events/subscribed/00000000-df85-4307-a069-68612c4471e3",
        "per_page": 20,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET v1/events/subscribed/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

id   string  optional  

Country ID. Example: 00000000-df85-4307-a069-68612c4471e3

Query Parameters

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Subscriptions

Subscribe

requires authentication

Subscribe signed in user to an event

Example request:
curl --request POST \
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/subscribe" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/subscribe"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/subscribe';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=oKBcvwKE4GDWqbzugscrKyGsie76TcCEUY1l67FC; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "type": "Event",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/events/{event_id}/subscribe

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

event_id   string   

The ID of the event. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

Unsubscribe

requires authentication

Unsubscribe signed in user from an event

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/subscribe" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/subscribe"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/subscribe';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=hkNGMIeSTBe4rYndTHV8BSa42I9Eq4AgFNrGiQj2; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "type": "Event",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

DELETE v1/events/{event_id}/subscribe

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

event_id   string   

The ID of the event. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

Show interest

requires authentication

Show interest of signed in user to an event

Example request:
curl --request POST \
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/show-interest" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/show-interest"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/show-interest';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=RNTnRAPoax4eTl2BdI0PzmrrMkTRpBNgrefQbCaU; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "type": "Event",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/events/{event_id}/show-interest

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

event_id   string   

The ID of the event. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

Remove interest

requires authentication

Remove interest of the signed in user from an event

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/show-interest" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/show-interest"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events/00000000-fdb0-43ce-b555-e0a26ed563ac/show-interest';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (204):

Show headers
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=5yQgoT3b1v78IWfb9z5gVAU3nojU1LyOaAnRtcwl; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 
Empty response
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "type": "Event",
    "message": "No query results"
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

DELETE v1/events/{event_id}/show-interest

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

event_id   string   

The ID of the event. Example: 00000000-fdb0-43ce-b555-e0a26ed563ac

Own

Created by me

requires authentication

List of events created by currently logged-in user

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/events/my?per_page=20&page=1&pagination_type=page" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/events/my"
);

const params = {
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events/my';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=TBppZPmnyW8wqRUgAopaA1GInJmO3X3IoQMZJhRS; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [],
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "path": "http://localhost:8083/v1/events/my",
        "per_page": 20,
        "to": null,
        "total": 0
    }
}
 

Request      

GET v1/events/my

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

My subscriptions

requires authentication

List of events currently logged-in user is subscribed to

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/events/my/subscriptions?per_page=20&page=1&pagination_type=page" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/events/my/subscriptions"
);

const params = {
    "per_page": "20",
    "page": "1",
    "pagination_type": "page",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/events/my/subscriptions';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'query' => [
            'per_page' => '20',
            'page' => '1',
            'pagination_type' => 'page',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=I9P6k81I26967SjGqfoOq8kjHwqbQ8TLAuKysGzh; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "00000000-fdb0-43ce-b555-e0a26ed563ac",
            "author": {
                "id": "00000000-df85-4307-a069-68612c4471e1",
                "name": "Fan Test Country",
                "avatar_url": null
            },
            "title": "Sit autem qui eum corrupti eaque.",
            "content": "Harum saepe rerum rerum voluptatem voluptatum. Commodi ullam quia et perferendis a consequatur. Provident reprehenderit eum eaque expedita quia. Itaque occaecati quia est quo.",
            "date": "1994-10-03",
            "time": "16:59:55",
            "type": "online",
            "location": "https://www.mann.com/odit-et-dolorem-itaque-ut-id-natus-est-debitis",
            "seats": "40",
            "free_seats": 37,
            "website": "http://www.larson.com/omnis-et-consequatur-similique-qui-omnis-quo-qui",
            "media": null,
            "tags": null,
            "is_subscribed": true,
            "created_at": 1754648638,
            "analytics": {
                "interested": 0,
                "subscribed": 3,
                "views": 3,
                "likes": 0,
                "comments": 0,
                "shares": 0
            }
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "http://localhost:8083/v1/events/my/subscriptions",
        "per_page": 20,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET v1/events/my/subscriptions

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Query Parameters

per_page   integer  optional  

Must be between 5 and 100. Example: 20

page   integer  optional  

Must be at least 1. Example: 1

cursor   string  optional  
pagination_type   string  optional  

Example: page

Must be one of:
  • cursor
  • page

Likes

Store

requires authentication

Add like to an entity

Example request:
curl --request POST \
    "http://localhost:8083/v1/like/post/numquam" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/like/post/numquam"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/like/post/numquam';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=IEI5pVLI8RnJhm4ovdVWFyTi5S35yjHTQz9PQCyu; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "likes": 1
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

POST v1/like/{entity}/{id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

entity   Entity name the like is for   

Example: post

Must be one of:
  • post
  • album
  • event
  • playlist
  • track
id   string   

ID of the entity Example: numquam

Delete

requires authentication

Delete own like

Example request:
curl --request DELETE \
    "http://localhost:8083/v1/like/earum/ducimus" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/like/earum/ducimus"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/like/earum/ducimus';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (404):


{
    "type": "Like",
    "message": "No query results"
}
 

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=wvTV6GRzvjhU3xazYbC59yugWeQzAcxSpQALs4Xm; expires=Fri, 08 Aug 2025 12:54:40 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

Request      

DELETE v1/like/{entity}/{id}

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

entity   string   

Example: earum

id   string   

The ID of the {entity}. Example: ducimus

Other

GET v1/deploy

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/deploy" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/deploy"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/deploy';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=hDX18Cmy5FECT6lmH2NGgI29gv61Hf24Gu5BHU94; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

<pre>
All done!
</pre>

 

Request      

GET v1/deploy

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Search

Search

Find relevant entities of type: albums, talents and tracks

Example request:
curl --request POST \
    "http://localhost:8083/v1/search/dolorem" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/search/dolorem"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/search/dolorem';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=6e0ocZ9rcqtuXxRUGw1VnmoHFiP6nrOmgAoAmrDC; expires=Fri, 08 Aug 2025 12:54:44 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "9f9598b0-428a-4e60-8d15-fc1b62571a22",
            "title": "Voluptas quam harum nobis repellendus.",
            "media_asset": {
                "id": "9f9598b0-19e1-4e81-8f74-78524190b78f",
                "url": "http://localhost:8083/v1/media-assets/9f9598b0-19e1-4e81-8f74-78524190b78f.dpg"
            },
            "owner": {
                "id": "9f959870-5c6f-4b8f-9bd6-5261ff2e43c3",
                "name": "Vance Lindgren",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986f-0688-475d-8db4-1432e129cea5",
                    "name": "Instrumental",
                    "tracks": 458963
                }
            ],
            "analytics": {
                "playbacks": 1,
                "likes": 0,
                "comments": 1,
                "shares": 10
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f959897-aa03-4dbe-8850-b9ec7f48f602",
            "title": "Commodi hic est iure.",
            "media_asset": {
                "id": "9f959897-9418-424c-aa39-68f92bbb5b78",
                "url": "http://localhost:8083/v1/media-assets/9f959897-9418-424c-aa39-68f92bbb5b78.fpx"
            },
            "owner": {
                "id": "9f95986f-ad2d-401a-ba15-3574766a42e4",
                "name": "Soledad Stroman",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986f-1487-447c-8307-9fcfd0ec2c72",
                    "name": "Tex-Mex",
                    "tracks": 421442
                }
            ],
            "analytics": {
                "playbacks": 4,
                "likes": 0,
                "comments": 12,
                "shares": 3
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598e5-5cb8-48c6-8802-198614b4fbc3",
            "name": "Ipsam",
            "description": null,
            "is_liked": 0,
            "entity": "album"
        },
        {
            "id": "9f9598d0-a3c5-4cd7-bbea-9ae8c357ebc6",
            "name": "Eli Cremin",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9f9598ae-9b15-4119-9ae9-3d86515b0dca",
            "title": "Ut non rerum voluptas ut sunt corrupti quisquam.",
            "media_asset": {
                "id": "9f9598ae-577d-4108-a0ec-7e7ba4ef7e78",
                "url": "http://localhost:8083/v1/media-assets/9f9598ae-577d-4108-a0ec-7e7ba4ef7e78.arc"
            },
            "owner": {
                "id": "9f959870-4997-4a23-9d82-28caefab2c34",
                "name": "Kale Johnston",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986f-00d9-49d4-a9c4-31badf977e97",
                    "name": "Electronic",
                    "tracks": 437486
                }
            ],
            "analytics": {
                "playbacks": 0,
                "likes": 0,
                "comments": 7,
                "shares": 3
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598a8-1857-44c1-967c-b3db8b313b74",
            "title": "Voluptatem ipsum sit aut assumenda.",
            "media_asset": {
                "id": "9f9598a8-0f4d-4124-9006-376b6a4bca48",
                "url": "http://localhost:8083/v1/media-assets/9f9598a8-0f4d-4124-9006-376b6a4bca48.pas"
            },
            "owner": {
                "id": "9f959870-14dc-4602-b7ee-a32a602e7b6a",
                "name": "Fatima Streich",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986e-ffb7-474d-b96d-3e6956d321f4",
                    "name": "Dance",
                    "tracks": 196248
                },
                {
                    "id": "9f95986f-0bc5-4c55-8aee-7e4b506ddec9",
                    "name": "Latin",
                    "tracks": 292211
                },
                {
                    "id": "9f95986f-1142-4f70-a5bc-8dbe062a9397",
                    "name": "R&B",
                    "tracks": 148544
                }
            ],
            "analytics": {
                "playbacks": 7,
                "likes": 0,
                "comments": 14,
                "shares": 8
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598e5-449b-46e5-830e-114d3d3fe136",
            "name": "Vitae",
            "description": null,
            "is_liked": 0,
            "entity": "album"
        },
        {
            "id": "9f9598b5-27bd-459b-8c10-41d6415ed729",
            "name": "Muriel Mills",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9f9598b1-f496-44c2-b7b3-957ef0f22cdf",
            "title": "Sint minima dolores quidem asperiores voluptate.",
            "media_asset": {
                "id": "9f9598b1-c902-4c13-ad6a-fc07284917a9",
                "url": "http://localhost:8083/v1/media-assets/9f9598b1-c902-4c13-ad6a-fc07284917a9.dcurl"
            },
            "owner": {
                "id": "9f959870-6c65-45e1-ac97-ddfc9df80d20",
                "name": "Nick Stracke Sr.",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986e-fae3-4f3a-ace5-05321d6c94cb",
                    "name": "Commercial",
                    "tracks": 932968
                },
                {
                    "id": "9f95986e-ffb7-474d-b96d-3e6956d321f4",
                    "name": "Dance",
                    "tracks": 196248
                },
                {
                    "id": "9f95986f-0b0f-4bee-ad31-cad67faf6fa3",
                    "name": "Kayokyoku",
                    "tracks": 583486
                }
            ],
            "analytics": {
                "playbacks": 12,
                "likes": 0,
                "comments": 14,
                "shares": 4
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598e5-ee21-4e49-ad19-3f45886ad5b5",
            "title": "Assumenda mollitia nam molestiae.",
            "media_asset": {
                "id": "9f9598e5-721a-4a21-815f-a895dae0619d",
                "url": "http://localhost:8083/v1/media-assets/9f9598e5-721a-4a21-815f-a895dae0619d.for"
            },
            "owner": {
                "id": "9f9598e5-6fcb-4e27-bc85-475bcbe1037a",
                "name": "Sebastian Koelpin",
                "avatar_url": null
            },
            "genres": [],
            "analytics": {
                "playbacks": 5,
                "likes": 0,
                "comments": 11,
                "shares": 9
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598dc-a00d-4609-8729-94f3d26bb28a",
            "title": "Quas excepturi ab tenetur.",
            "media_asset": {
                "id": "9f9598dc-7f8b-4a50-8927-8a81312341e0",
                "url": "http://localhost:8083/v1/media-assets/9f9598dc-7f8b-4a50-8927-8a81312341e0.ico"
            },
            "owner": {
                "id": "9f959893-c4eb-4be5-aef0-986d809eb9b6",
                "name": "Armand Ortiz",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986f-0c7f-4b9b-b083-11836b23583b",
                    "name": "Metal",
                    "tracks": 499015
                },
                {
                    "id": "9f95986f-1142-4f70-a5bc-8dbe062a9397",
                    "name": "R&B",
                    "tracks": 148544
                }
            ],
            "analytics": {
                "playbacks": 5,
                "likes": 0,
                "comments": 9,
                "shares": 4
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598d3-2619-4d78-8153-5852a81cec57",
            "title": "Veniam nam laudantium nobis.",
            "media_asset": {
                "id": "9f9598d3-1b90-455b-9c97-faa72143cb70",
                "url": "http://localhost:8083/v1/media-assets/9f9598d3-1b90-455b-9c97-faa72143cb70.yin"
            },
            "owner": {
                "id": "9f959892-cc37-4670-bc99-7d6df739b93e",
                "name": "Marcos Hettinger",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986e-ee7c-4fcf-a4bc-6c2ab3de4b12",
                    "name": "Alternative",
                    "tracks": 789093
                },
                {
                    "id": "9f95986f-05b8-4cbb-81bc-5e9f0d8cf2df",
                    "name": "Industrial",
                    "tracks": 381927
                },
                {
                    "id": "9f95986f-0b0f-4bee-ad31-cad67faf6fa3",
                    "name": "Kayokyoku",
                    "tracks": 583486
                }
            ],
            "analytics": {
                "playbacks": 0,
                "likes": 0,
                "comments": 0,
                "shares": 1
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598bd-6c89-4841-ba49-48a86f7e117d",
            "title": "Cum et atque eos dolor nobis aut dolores.",
            "media_asset": {
                "id": "9f9598bd-5d0c-4002-a28b-a083812a88d7",
                "url": "http://localhost:8083/v1/media-assets/9f9598bd-5d0c-4002-a28b-a083812a88d7.docx"
            },
            "owner": {
                "id": "9f959870-fdcc-4203-9e09-558d4686a37e",
                "name": "Teresa Stokes PhD",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986e-f2d8-434d-b282-8c39b9996cdb",
                    "name": "Anime",
                    "tracks": 146020
                },
                {
                    "id": "9f95986f-103e-485b-9261-4338db6cf87e",
                    "name": "Progressive",
                    "tracks": 818485
                }
            ],
            "analytics": {
                "playbacks": 14,
                "likes": 0,
                "comments": 9,
                "shares": 13
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598e5-3d25-4bf1-ae20-92369c7bd46d",
            "name": "Impedit",
            "description": null,
            "is_liked": 0,
            "entity": "album"
        },
        {
            "id": "9f9598c0-2836-4619-bb5c-ea6dd952c822",
            "name": "Mr. Ismael Kreiger",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9f9598c4-36ee-4c0a-8393-fb7604000450",
            "name": "Mr. Anderson Hamill PhD",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9f9598b5-8ba8-4e00-8fb1-58e56429a2e8",
            "title": "Libero eum harum corporis et.",
            "media_asset": {
                "id": "9f9598b5-61c6-433b-a57d-e8262aee9887",
                "url": "http://localhost:8083/v1/media-assets/9f9598b5-61c6-433b-a57d-e8262aee9887.omdoc"
            },
            "owner": {
                "id": "9f959870-9d16-4b84-a4f2-b96f558a23b9",
                "name": "Abigail Walsh",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986e-ffb7-474d-b96d-3e6956d321f4",
                    "name": "Dance",
                    "tracks": 196248
                },
                {
                    "id": "9f95986f-02db-4c17-a9ff-03a791adacf6",
                    "name": "Folk",
                    "tracks": 691830
                },
                {
                    "id": "9f95986f-0ee9-449b-86fa-d415457520ad",
                    "name": "Pop",
                    "tracks": 2093
                }
            ],
            "analytics": {
                "playbacks": 1,
                "likes": 0,
                "comments": 8,
                "shares": 3
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598da-85a2-4c79-8b41-a41591358d9e",
            "title": "Molestiae fugiat rerum consectetur earum similique quo.",
            "media_asset": {
                "id": "9f9598da-38ce-4133-9a3f-3b08318d08b1",
                "url": "http://localhost:8083/v1/media-assets/9f9598da-38ce-4133-9a3f-3b08318d08b1.ez2"
            },
            "owner": {
                "id": "9f959893-b964-4365-8434-0674d8478f84",
                "name": "Miss Jena Bayer II",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986f-02db-4c17-a9ff-03a791adacf6",
                    "name": "Folk",
                    "tracks": 691830
                },
                {
                    "id": "9f95986f-0bc5-4c55-8aee-7e4b506ddec9",
                    "name": "Latin",
                    "tracks": 292211
                }
            ],
            "analytics": {
                "playbacks": 1,
                "likes": 0,
                "comments": 12,
                "shares": 3
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f95989e-1836-4823-b179-d93637d1026b",
            "title": "Ut illo ipsum distinctio accusantium dignissimos quidem culpa consequatur.",
            "media_asset": {
                "id": "9f95989d-e6f2-4f54-a3e3-1bcdeb2b7351",
                "url": "http://localhost:8083/v1/media-assets/9f95989d-e6f2-4f54-a3e3-1bcdeb2b7351.wax"
            },
            "owner": {
                "id": "9f95986f-cbcf-4e46-aec5-9c4168876924",
                "name": "Casper Lehner",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986f-0688-475d-8db4-1432e129cea5",
                    "name": "Instrumental",
                    "tracks": 458963
                },
                {
                    "id": "9f95986f-0ee9-449b-86fa-d415457520ad",
                    "name": "Pop",
                    "tracks": 2093
                }
            ],
            "analytics": {
                "playbacks": 5,
                "likes": 0,
                "comments": 9,
                "shares": 12
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f95989c-29a1-4190-a263-005b16bb931b",
            "title": "Minima sit aspernatur nostrum possimus.",
            "media_asset": {
                "id": "9f95989c-0850-4fc8-93a8-2e8c523530fd",
                "url": "http://localhost:8083/v1/media-assets/9f95989c-0850-4fc8-93a8-2e8c523530fd.fdf"
            },
            "owner": {
                "id": "9f95986f-c556-42d1-ae9e-785132c0193d",
                "name": "Hans Durgan",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986e-f2d8-434d-b282-8c39b9996cdb",
                    "name": "Anime",
                    "tracks": 146020
                },
                {
                    "id": "9f95986f-0d33-458e-9f60-8a90d493d1eb",
                    "name": "New Age",
                    "tracks": 896116
                }
            ],
            "analytics": {
                "playbacks": 8,
                "likes": 0,
                "comments": 8,
                "shares": 7
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598b9-1f84-4fe7-bebe-511494a8c86a",
            "name": "Reyes Kuphal IV",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9f9598bd-c5dc-4566-a877-8bebfa2f441f",
            "title": "Nulla et aut aliquam veniam ipsa suscipit.",
            "media_asset": {
                "id": "9f9598bd-b7ef-46bd-9ff2-4427492149a2",
                "url": "http://localhost:8083/v1/media-assets/9f9598bd-b7ef-46bd-9ff2-4427492149a2.rmvb"
            },
            "owner": {
                "id": "9f959871-0152-46b3-80bd-a563d88b60ec",
                "name": "Mr. Damien Kovacek MD",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986f-0450-4a58-8321-6db67e258297",
                    "name": "Hip-Hop",
                    "tracks": 699479
                },
                {
                    "id": "9f95986f-05b8-4cbb-81bc-5e9f0d8cf2df",
                    "name": "Industrial",
                    "tracks": 381927
                },
                {
                    "id": "9f95986f-1517-4873-8a67-ea86a0f62e0a",
                    "name": "Vocal",
                    "tracks": 681957
                }
            ],
            "analytics": {
                "playbacks": 9,
                "likes": 0,
                "comments": 7,
                "shares": 5
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9f9598e5-3054-4c69-bc60-036a924e9a55",
            "name": "Dicta",
            "description": null,
            "cover": {
                "id": "00000000-422e-41ff-a266-2b0a093307e6",
                "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.silo",
                "filename": "libero-etsilo",
                "created_at": "2025-08-08T10:23:05+00:00",
                "type": "image",
                "analytics": {
                    "views": 2787,
                    "likes": 0,
                    "comments": 0,
                    "shares": 5
                }
            },
            "is_liked": 0,
            "entity": "album"
        },
        {
            "id": "9f9598e3-7858-4629-9f73-08d749c51d8d",
            "name": "Maggie Treutel Sr.",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9f9598e5-45fd-49db-b869-77c85bee671b",
            "name": "Accusamus",
            "description": null,
            "is_liked": 0,
            "entity": "album"
        },
        {
            "id": "9f9598ae-012c-48e8-9f22-4a8735e0deb7",
            "name": "Prof. Maximus Ryan Jr.",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9f959894-bc4c-489a-a23a-00a6b544176d",
            "title": "Eum consequatur eligendi ipsa voluptate et.",
            "media_asset": {
                "id": "9f959894-9d5f-474b-96b0-be2ff9d40db3",
                "url": "http://localhost:8083/v1/media-assets/9f959894-9d5f-474b-96b0-be2ff9d40db3.vcf"
            },
            "owner": {
                "id": "00000000-df85-4307-a069-68612c4471e2",
                "name": "Author Test Country",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9f95986e-f6fc-410f-b49f-41e5c58244fd",
                    "name": "Classical",
                    "tracks": 180716
                }
            ],
            "analytics": {
                "playbacks": 10,
                "likes": 0,
                "comments": 0,
                "shares": 3
            },
            "is_liked": 0,
            "entity": "track"
        }
    ]
}
 

Request      

POST v1/search/{term}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

URL Parameters

term   string   

Example: dolorem

User Settings

List

requires authentication

Endpoint for all the user settings

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users/me/settings" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=a34jx4vsItdnneD1CBtl17qwQYTYLHZHs1dtlcNC; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "profile": null,
        "contact": null,
        "social": null,
        "notifications": null,
        "system": null
    }
}
 

Request      

GET v1/users/me/settings

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Profile

Show

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users/me/settings/profile" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings/profile"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings/profile';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=ocmJsCxbn6p4a3q1yfSbiSske8uhyxVYfPeJHUAV; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-df85-4307-a069-68612c4471e3",
        "name": "Joe Shmoe",
        "email": "admin@qplet.ru",
        "is_subscribed": false,
        "analytics": {
            "tracks": 28,
            "albums": 4,
            "subscribers": 493
        }
    }
}
 

Request      

GET v1/users/me/settings/profile

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Update

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8083/v1/users/me/settings/profile" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"Joe Shmoe\",
    \"password\": \"Ye4oKoEa3Ro9ll\",
    \"password_repeat\": \"Ye4oKoEa3Ro9ll\",
    \"profile\": {
        \"gender\": \"male\",
        \"nickname\": \"joe_shmoe\",
        \"website\": \"https:\\/\\/qplet.ru\",
        \"about\": \"I`m Joe Shmoe\\n\\n I love singing and dancing.\",
        \"avatar_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
        \"cover_id\": \"00000000-422e-41ff-a266-2b0a093307e6\",
        \"birthdate\": \"2000-01-01\"
    }
}"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings/profile"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "name": "Joe Shmoe",
    "password": "Ye4oKoEa3Ro9ll",
    "password_repeat": "Ye4oKoEa3Ro9ll",
    "profile": {
        "gender": "male",
        "nickname": "joe_shmoe",
        "website": "https:\/\/qplet.ru",
        "about": "I`m Joe Shmoe\n\n I love singing and dancing.",
        "avatar_id": "00000000-422e-41ff-a266-2b0a093307e6",
        "cover_id": "00000000-422e-41ff-a266-2b0a093307e6",
        "birthdate": "2000-01-01"
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings/profile';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'Joe Shmoe',
            'password' => 'Ye4oKoEa3Ro9ll',
            'password_repeat' => 'Ye4oKoEa3Ro9ll',
            'profile' => [
                'gender' => 'male',
                'nickname' => 'joe_shmoe',
                'website' => 'https://qplet.ru',
                'about' => 'I`m Joe Shmoe'."\n"
                    ."\n"
                    .' I love singing and dancing.',
                'avatar_id' => '00000000-422e-41ff-a266-2b0a093307e6',
                'cover_id' => '00000000-422e-41ff-a266-2b0a093307e6',
                'birthdate' => '2000-01-01',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=izlHGklnIAZKdpcMCxV3oIQyC3EmPt8tF5KsaI2U; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

Request      

PUT v1/users/me/settings/profile

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

name   string  optional  

Must be a full name of the user. Example: Joe Shmoe

password   string  optional  

Must be at least 8 characters. Example: Ye4oKoEa3Ro9ll

password_repeat   string  optional  

The password_repeat and password must match. This field is required when password is present. The value and password must match. Example: Ye4oKoEa3Ro9ll

profile   object  optional  
gender   string  optional  

Example: male

Must be one of:
  • male
  • female
nickname   string  optional  

Must be unique. Must match the regex /^[A-Za-z0-9_-]+$/. Must be between 6 and 20 characters. Example: joe_shmoe

website   string  optional  

Fully qualified URL. Must be a valid URL. Example: https://qplet.ru

about   string  optional  

Freeform multiline input. Example: Im Joe Shmoe

I love singing and dancing.`

avatar_id   string  optional  

MediaAssets ID that belongs to the user. Example: 00000000-422e-41ff-a266-2b0a093307e6

cover_id   string  optional  

MediaAssets ID that belongs to the user. Example: 00000000-422e-41ff-a266-2b0a093307e6

birthdate   string  optional  

Must be a valid date in the format Y-m-d. Example: 2000-01-01

Contact

Show

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users/me/settings/contact" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings/contact"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings/contact';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=JCX1c23aoRo1l452DhUIsfssSD6oXHIWB0PQ2Wd7; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "country": {
            "id": null,
            "name": null
        }
    }
}
 

Request      

GET v1/users/me/settings/contact

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Update

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8083/v1/users/me/settings/contact" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"email\": \"another.joe@example.com\",
    \"phone\": \"+7911 123456\",
    \"country_id\": \"ru\",
    \"city\": \"Moscow\",
    \"zipcode\": \"101000\",
    \"address\": \"Leninstreet 18\",
    \"address_additional\": \"corporis\"
}"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings/contact"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "email": "another.joe@example.com",
    "phone": "+7911 123456",
    "country_id": "ru",
    "city": "Moscow",
    "zipcode": "101000",
    "address": "Leninstreet 18",
    "address_additional": "corporis"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings/contact';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'email' => 'another.joe@example.com',
            'phone' => '+7911 123456',
            'country_id' => 'ru',
            'city' => 'Moscow',
            'zipcode' => '101000',
            'address' => 'Leninstreet 18',
            'address_additional' => 'corporis',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=ymzNLBsYkDx1qfeTkz5CfYXRCqkVNDqqUlT0f5po; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "phone": "+7911 123456",
        "country": {
            "id": "ru",
            "name": "Russian Federation"
        },
        "city": "Moscow",
        "zipcode": "101000",
        "address": "Leninstreet 18",
        "address_additional": "corporis"
    }
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PUT v1/users/me/settings/contact

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

email   string  optional  

Must be a valid email address. Example: another.joe@example.com

phone   string  optional  

Example: +7911 123456

country_id   string  optional  

Example: ru

city   string  optional  

Example: Moscow

zipcode   string  optional  

Example: 101000

address   string  optional  

Example: Leninstreet 18

address_additional   string  optional  

Example: corporis

Social

Show

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users/me/settings/social" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings/social"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings/social';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=pqvodPvWzdvpaPmJVCVUuFSEvVE9B2qBqq7Fy4gP; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "facebook_com": null,
        "instagram_com": null,
        "youtube_com": null,
        "twitter_com": null,
        "tiktok_com": null,
        "vk_ru": null,
        "ok_ru": null,
        "discord_com": null,
        "snapchat_com": null,
        "telegram_org": null,
        "whatsapp_com": null,
        "viber_com": null,
        "skype_com": null,
        "pinterest_com": null
    }
}
 

Request      

GET v1/users/me/settings/social

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Update

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8083/v1/users/me/settings/social" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"facebook_com\": \"facebook_com\",
    \"instagram_com\": \"instagram_com\",
    \"youtube_com\": \"youtube_com\",
    \"twitter_com\": \"twitter_com\",
    \"tiktok_com\": \"tiktok_com\",
    \"vk_ru\": \"vk_ru\",
    \"ok_ru\": \"ok_ru\",
    \"discord_com\": \"discord_com\",
    \"snapchat_com\": \"snapchat_com\",
    \"telegram_org\": \"telegram_org\",
    \"whatsapp_com\": \"whatsapp_com\",
    \"viber_com\": \"viber_com\",
    \"skype_com\": \"skype_com\",
    \"pinterest_com\": \"pinterest_com\"
}"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings/social"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "facebook_com": "facebook_com",
    "instagram_com": "instagram_com",
    "youtube_com": "youtube_com",
    "twitter_com": "twitter_com",
    "tiktok_com": "tiktok_com",
    "vk_ru": "vk_ru",
    "ok_ru": "ok_ru",
    "discord_com": "discord_com",
    "snapchat_com": "snapchat_com",
    "telegram_org": "telegram_org",
    "whatsapp_com": "whatsapp_com",
    "viber_com": "viber_com",
    "skype_com": "skype_com",
    "pinterest_com": "pinterest_com"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings/social';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'facebook_com' => 'facebook_com',
            'instagram_com' => 'instagram_com',
            'youtube_com' => 'youtube_com',
            'twitter_com' => 'twitter_com',
            'tiktok_com' => 'tiktok_com',
            'vk_ru' => 'vk_ru',
            'ok_ru' => 'ok_ru',
            'discord_com' => 'discord_com',
            'snapchat_com' => 'snapchat_com',
            'telegram_org' => 'telegram_org',
            'whatsapp_com' => 'whatsapp_com',
            'viber_com' => 'viber_com',
            'skype_com' => 'skype_com',
            'pinterest_com' => 'pinterest_com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=ujgItDDwYKaPSEF9dS9OD0XTHpUbZp8lFbrVQ8ji; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "facebook_com": "facebook_com",
        "instagram_com": "instagram_com",
        "youtube_com": "youtube_com",
        "twitter_com": "twitter_com",
        "tiktok_com": "tiktok_com",
        "vk_ru": "vk_ru",
        "ok_ru": "ok_ru",
        "discord_com": "discord_com",
        "snapchat_com": "snapchat_com",
        "telegram_org": "telegram_org",
        "whatsapp_com": "whatsapp_com",
        "viber_com": "viber_com",
        "skype_com": "skype_com",
        "pinterest_com": "pinterest_com"
    }
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PUT v1/users/me/settings/social

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

facebook_com   string  optional  

Example: facebook_com

instagram_com   string  optional  

Example: instagram_com

youtube_com   string  optional  

Example: youtube_com

twitter_com   string  optional  

Example: twitter_com

tiktok_com   string  optional  

Example: tiktok_com

vk_ru   string  optional  

Example: vk_ru

ok_ru   string  optional  

Example: ok_ru

discord_com   string  optional  

Example: discord_com

snapchat_com   string  optional  

Example: snapchat_com

telegram_org   string  optional  

Example: telegram_org

whatsapp_com   string  optional  

Example: whatsapp_com

viber_com   string  optional  

Example: viber_com

skype_com   string  optional  

Example: skype_com

pinterest_com   string  optional  

Example: pinterest_com

System

Show

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users/me/settings/system" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings/system"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings/system';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=Leb5S2d4Bu1ZSuVBUbBYtXK91EFc5rie3vX6uNZ9; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "language": null,
        "first_screen": null
    }
}
 

Request      

GET v1/users/me/settings/system

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Update

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8083/v1/users/me/settings/system" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"language\": \"ru\",
    \"first_screen\": \"profile\"
}"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings/system"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "language": "ru",
    "first_screen": "profile"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings/system';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'language' => 'ru',
            'first_screen' => 'profile',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=6Kg9LlNRCmSpSTD69A67ud4dv87Jbz13BACrHaIV; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "language": "ru",
        "first_screen": "profile"
    }
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PUT v1/users/me/settings/system

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

language   string   

Example: ru

Must be one of:
  • ru
  • en
first_screen   string   

Example: profile

Must be one of:
  • wall
  • profile
  • player
  • albums

Notifications

Show

requires authentication

Example request:
curl --request GET \
    --get "http://localhost:8083/v1/users/me/settings/notifications" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings/notifications"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings/notifications';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=4yXwIHqmoolhrKOKiRvHIetsWPc5DHWKGjtsYUds; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "sound": null,
        "profile": {
            "view": null,
            "subscription": null,
            "subscribers": null
        },
        "event": {
            "new": null,
            "like": null,
            "view": null,
            "subscription": null,
            "comment": null,
            "updated": null
        },
        "post": {
            "new": null,
            "like": null,
            "share": null,
            "comment": null
        },
        "track": {
            "new": null,
            "like": null,
            "comment": null
        },
        "album": {
            "new": null,
            "like": null,
            "comment": null
        },
        "message": {
            "new": null
        }
    }
}
 

Request      

GET v1/users/me/settings/notifications

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Update

requires authentication

Example request:
curl --request PUT \
    "http://localhost:8083/v1/users/me/settings/notifications" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"sound\": true,
    \"profile\": {
        \"view\": true,
        \"subscription\": true,
        \"subscribers\": true
    },
    \"event\": {
        \"new\": true,
        \"like\": true,
        \"view\": true,
        \"subscription\": true,
        \"comment\": true,
        \"updated\": true
    },
    \"post\": {
        \"new\": true,
        \"like\": true,
        \"share\": true,
        \"comment\": true
    },
    \"track\": {
        \"new\": true,
        \"like\": true,
        \"comment\": true
    },
    \"album\": {
        \"new\": true,
        \"like\": true,
        \"comment\": true
    },
    \"message\": {
        \"new\": true
    }
}"
const url = new URL(
    "http://localhost:8083/v1/users/me/settings/notifications"
);

const headers = {
    "Authorization": "Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-Language": "en-US",
};

let body = {
    "sound": true,
    "profile": {
        "view": true,
        "subscription": true,
        "subscribers": true
    },
    "event": {
        "new": true,
        "like": true,
        "view": true,
        "subscription": true,
        "comment": true,
        "updated": true
    },
    "post": {
        "new": true,
        "like": true,
        "share": true,
        "comment": true
    },
    "track": {
        "new": true,
        "like": true,
        "comment": true
    },
    "album": {
        "new": true,
        "like": true,
        "comment": true
    },
    "message": {
        "new": true
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'http://localhost:8083/v1/users/me/settings/notifications';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'sound' => true,
            'profile' => [
                'view' => true,
                'subscription' => true,
                'subscribers' => true,
            ],
            'event' => [
                'new' => true,
                'like' => true,
                'view' => true,
                'subscription' => true,
                'comment' => true,
                'updated' => true,
            ],
            'post' => [
                'new' => true,
                'like' => true,
                'share' => true,
                'comment' => true,
            ],
            'track' => [
                'new' => true,
                'like' => true,
                'comment' => true,
            ],
            'album' => [
                'new' => true,
                'like' => true,
                'comment' => true,
            ],
            'message' => [
                'new' => true,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):

Show headers
cache-control: no-cache, private
content-type: application/json
api-version: 20230101-000000
access-control-allow-origin: *
set-cookie: qplet_core_service_session=bZDJjPQGN7NuyXtuu21xcuKXM6KZezTQTZvolek0; expires=Fri, 08 Aug 2025 12:54:38 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "sound": true,
        "profile": {
            "view": true,
            "subscription": true,
            "subscribers": true
        },
        "event": {
            "new": true,
            "like": true,
            "view": true,
            "subscription": true,
            "comment": true,
            "updated": true
        },
        "post": {
            "new": true,
            "like": true,
            "share": true,
            "comment": true
        },
        "track": {
            "new": true,
            "like": true,
            "comment": true
        },
        "album": {
            "new": true,
            "like": true,
            "comment": true
        },
        "message": {
            "new": true
        }
    }
}
 

Example response (403):


{
    "message": "This action is unauthorized."
}
 

Example response (422):


{
    "message": "Validation Exception"
}
 

Request      

PUT v1/users/me/settings/notifications

Headers

Authorization      

Example: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty

Content-Type      

Example: application/json

Accept      

Example: application/json

Accept-Language      

Example: en-US

Body Parameters

sound   boolean   

Example: true

profile   object   

Example: 1

view   boolean   

Example: true

subscription   boolean   

Example: true

subscribers   boolean   

Example: true

event   object   

Example: 1

new   boolean   

Example: true

like   boolean   

Example: true

view   boolean   

Example: true

subscription   boolean   

Example: true

comment   boolean   

Example: true

updated   boolean   

Example: true

post   object   

Example: 1

new   boolean   

Example: true

like   boolean   

Example: true

share   boolean   

Example: true

comment   boolean   

Example: true

track   object   

Example: 1

new   boolean   

Example: true

like   boolean   

Example: true

comment   boolean   

Example: true

album   object   

Example: 1

new   boolean   

Example: true

like   boolean   

Example: true

comment   boolean   

Example: true

message   object  optional  
new   boolean   

Example: true