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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=zEL6Gs3vo1olCHsze99qtT5bc6iwSthL2HqJ2qdD; expires=Tue, 10 Jun 2025 12:23:15 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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=s03EmiChS0iIWRsszvl0XnAXOK4GLTWmzIQWMoRw; expires=Tue, 10 Jun 2025 12:23:18 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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=G1pQ6Qsij4E4QoXl2Wue0Rz66Vh26KLriM53ErUO; expires=Tue, 10 Jun 2025 12:23:18 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "token": "508|FIFv8kTxRfgUmJ7CcBYdyNE02umtvpVtRyP3xJ5H295267be"
    }
}
 

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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 \
    "https://api.qplet.dev/v1/auth/password-reset/possimus" \
    --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(
    "https://api.qplet.dev/v1/auth/password-reset/possimus"
);

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 = 'https://api.qplet.dev/v1/auth/password-reset/possimus';
$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: possimus

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 \
    "https://api.qplet.dev/v1/auth/password-reset/reprehenderit/validate?email=joe%40example.com" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/auth/password-reset/reprehenderit/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 = 'https://api.qplet.dev/v1/auth/password-reset/reprehenderit/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=LC6SI0phF2ufBKc6eYEB733stoUww7u95ZM9DCtg; expires=Tue, 10 Jun 2025 12:23:18 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: reprehenderit

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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=ObI4TlXohM0fmsbXsYtXjjACcy7J2DIOaZ5DZq8u; expires=Tue, 10 Jun 2025 12:23:10 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": 39,
            "albums": 5,
            "subscribers": 269
        },
        "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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=QPtBfMlyiPxIw5LSSkETn8Nc2DTphxyPSkhkn9up; expires=Tue, 10 Jun 2025 12:23:18 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

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

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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=sy73F8Wm09g7lUWne3TCGP08sIOAU4plujJMF3Mo; expires=Tue, 10 Jun 2025 12:23:10 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 "https://api.qplet.dev/v1/users?filters[name]=Joe+Shmoe&filters[type]=author&filters[genres]=%5B%229e9acd81-1040-4302-8433-0e7757b8cfad%22%2C%229e9acd81-13dc-4152-bf89-00b4df8a0913%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(
    "https://api.qplet.dev/v1/users"
);

const params = {
    "filters[name]": "Joe Shmoe",
    "filters[type]": "author",
    "filters[genres]": "["9e9acd81-1040-4302-8433-0e7757b8cfad","9e9acd81-13dc-4152-bf89-00b4df8a0913"]",
    "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 = 'https://api.qplet.dev/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]' => '["9e9acd81-1040-4302-8433-0e7757b8cfad","9e9acd81-13dc-4152-bf89-00b4df8a0913"]',
            '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=2n1dvfrmCQMfDvpKnpbtocNCWTrPfPNwq89CwYqI; expires=Tue, 10 Jun 2025 12:23:18 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: ["9e9acd81-1040-4302-8433-0e7757b8cfad","9e9acd81-13dc-4152-bf89-00b4df8a0913"]

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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=Ulkfqbn6n1HdiAsZGtB0sVRuzScuCsXVMhvoVBah; expires=Tue, 10 Jun 2025 12:23:14 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f1ee88e-572d-4ff3-83ed-1033a95dd36e",
        "author": {
            "id": "00000000-df85-4307-a069-68612c4471e3",
            "name": "Admin Test Country",
            "avatar_url": null
        },
        "content": "My Post content",
        "created_at": 1749550994,
        "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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=e0AEHBECY8VobiFLv26GPlQ3C7HtfvAHJnbIvdef; expires=Tue, 10 Jun 2025 12:23:14 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": 1743877106,
        "updated_at": 1749550994,
        "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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=pdOy4mGthq4tkzHy5mAVHJDul0zTLp8CfrkszvCv; expires=Tue, 10 Jun 2025 12:23:14 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 "https://api.qplet.dev/v1/posts?filters[author_id]=00000000-df85-4307-a069-68612c4471e2&filters[subscribed]=&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(
    "https://api.qplet.dev/v1/posts"
);

const params = {
    "filters[author_id]": "00000000-df85-4307-a069-68612c4471e2",
    "filters[subscribed]": "",
    "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 = 'https://api.qplet.dev/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]' => '',
            '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=ErfBFz2NHmCSR5AEjvlPFMZPtkkkEDGaceouz6W9; expires=Tue, 10 Jun 2025 12:23:19 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: 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
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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=pAJg694YSxkPBROIJJSUaO7PySxKBgQajz0bbGj3; expires=Tue, 10 Jun 2025 12:23:19 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": "Dolorum cumque et natus adipisci facere qui. Ipsa non sunt dolores illo reprehenderit. Quos odio est corporis amet eveniet sunt et. Repellat asperiores aspernatur blanditiis impedit.",
        "created_at": 1743877106,
        "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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=qAnMNyrVXvKyjglpof6MDISIo6EzhPmQaCIiVn2w; expires=Tue, 10 Jun 2025 12:23:10 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f1ee887-11da-457c-8ac2-4c461d9b159e",
        "entity": {
            "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
            "type": "post"
        },
        "attachments": [],
        "content": "My comment to the post",
        "created_at": 1749550990
    }
}
 

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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=rp9x6YyIkPMbUT2nrIUywyy6wawpfQvf6vnIp36g; expires=Tue, 10 Jun 2025 12:23:10 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": 1743877106,
        "updated_at": 1749550990
    }
}
 

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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=gFadcsLThRAPISYLQGQU30Lr4iok9xzY6B76NYuy; expires=Tue, 10 Jun 2025 12:23:10 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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=MJL8toBzmkDPBxRKN7pOFY0fz2ReBEvXMNUttC8A; expires=Tue, 10 Jun 2025 12:23:19 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": "In labore aut et. Velit vero enim nisi sit quaerat quia. Et fuga ab rem molestias ut totam porro error. Quia voluptate non nobis labore.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-7fe6-4cea-ac29-7c75cdaeb7f2",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Aliquam consequuntur et impedit dolores nulla asperiores. Occaecati sit provident enim ipsam. Nostrum modi tenetur itaque amet. Quos omnis aperiam soluta itaque porro ab commodi.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-806f-4ab6-b5fc-07abf9e9da3e",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Magni est at autem et autem officiis accusamus. Consequuntur nam et reiciendis repellat maxime. Voluptas quo saepe cumque eum. Dolor quia aperiam eveniet repudiandae minima doloribus quae.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-80e8-4eca-a2af-fea93271c225",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Tenetur expedita aut quod adipisci commodi officiis. Eum voluptatem doloremque nesciunt dignissimos. Dolor accusamus dolorem magni.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-815f-4f12-8444-0f2eb8e8b21a",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Quaerat ipsum suscipit quaerat est. Et incidunt amet animi. Consectetur omnis consequatur voluptas eum est. Ex sint impedit repellendus laborum repellendus sint.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-81ef-4e15-bf65-408ef34e99f6",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Laboriosam eaque sed numquam aut unde ipsa. Magnam culpa voluptatem incidunt. Itaque excepturi error eos quis cupiditate omnis necessitatibus atque. Autem ut velit placeat eligendi.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-82bd-45ec-97a0-696a121e2667",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Eaque velit necessitatibus velit. Assumenda ullam dolores officia non quia aut eveniet cupiditate. Aut maxime officiis tempore ea eum facere.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-8338-460a-879c-44db20919b15",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Labore cum tenetur ut. Nobis in ut eveniet et et omnis voluptatibus vel. Ut ut aperiam culpa voluptatibus voluptas pariatur. Error aspernatur quod qui omnis facere et assumenda nobis.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-83be-4110-aa44-2517295c945c",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Non architecto dignissimos non est harum. Earum dicta quo exercitationem qui rem. Iusto dolor assumenda nihil vel est veniam.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-8462-4e4b-a333-2733493dffbe",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Est qui provident et optio. Qui totam qui sunt amet. Qui nihil hic voluptas qui aspernatur atque.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-84f7-4f91-ae9c-2c47a7a1b80c",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Quia modi sit tenetur harum est labore nulla. Minus asperiores eius aut. Quidem distinctio excepturi consequatur quo in unde ut.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-858c-4d6a-896a-bb4044b891b0",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Amet ut minus blanditiis tenetur qui est amet. Maiores iste autem eaque necessitatibus harum ea incidunt. Mollitia nisi blanditiis inventore dicta quia dicta. Quam consequatur dolor ipsam aut ad.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-860b-4f33-8cb8-3b944855528b",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Rerum doloribus qui labore id cupiditate tempore eaque. Atque voluptate iste eaque. Et cumque quisquam occaecati. Distinctio repellendus dignissimos consequatur error.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-86b2-4da0-82ba-72ada6a44092",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Impedit dolorem et voluptas sit est. Consequatur quod est voluptatem fuga placeat omnis. Provident eaque veritatis nobis eum et. Impedit odio voluptatem molestias vero harum ratione.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-8736-471b-b93b-a272fcbb092b",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Iste et dolores nobis mollitia reiciendis. Non voluptatem necessitatibus aut similique. Enim cumque facilis ratione ex sed nostrum praesentium. Quos aliquid consequatur sed nihil a reiciendis earum.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-87bb-4634-b03e-96aaef1d2843",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Ut veritatis doloribus inventore hic sed. Consequatur dolor nesciunt et perferendis officiis quis. Aut rerum iure aut ab. Eius fugiat ut natus accusamus quas.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-8833-4957-af2a-c87ba1425070",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Eaque qui quas doloremque beatae numquam quasi dolorem. Quam et adipisci occaecati voluptates incidunt quia. Natus velit a quo doloremque perferendis et aperiam harum. Mollitia et possimus sed.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-88ac-4d15-bd79-69dda45f4bee",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Ab cupiditate et deleniti qui reiciendis suscipit ipsum. Aut et dolor reprehenderit rerum. Eligendi atque molestias saepe nihil.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-8921-42fc-b645-c9189e7cb767",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Dolorem occaecati ipsa saepe. Cum ducimus quae dolore officiis veniam. Laudantium reiciendis aut nam. Eius quia enim at labore est voluptatem.",
            "created_at": 1743877106
        },
        {
            "id": "9e9acd8b-89ba-4400-a27b-be6843aa1eb1",
            "entity": {
                "id": "00000000-53f7-4a5b-8c34-e171172c8ba8",
                "type": "post"
            },
            "attachments": [],
            "content": "Dolores veniam inventore itaque sit sed iusto saepe. Excepturi corrupti neque vel. Facere similique consequatur distinctio in eos nesciunt. Quia et et suscipit illum qui cum et.",
            "created_at": 1743877106
        }
    ],
    "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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=MwTdIPHJF8jH4RJ8K8WziNlf7PBTFiDTd4p7xsKc; expires=Tue, 10 Jun 2025 12:23:19 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": "sit-officiis-velit-itaquecil",
                "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.cil",
                "extension": "cil",
                "created_at": "2025-04-05T18:18:25.000000Z"
            }
        ],
        "content": "In labore aut et. Velit vero enim nisi sit quaerat quia. Et fuga ab rem molestias ut totam porro error. Quia voluptate non nobis labore.",
        "created_at": 1743877106
    }
}
 

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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=07qH96hZg3A2vdQvv0LDmSudMzGFCd94qUtyoQIE; expires=Tue, 10 Jun 2025 12:23:14 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f1ee88d-f602-4ff0-913d-396f95162427",
        "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.cil",
            "filename": "sit-officiis-velit-itaquecil",
            "created_at": "2025-04-05T18:18:25+00:00",
            "type": "image",
            "analytics": {
                "views": 2769,
                "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": "9e9acd8c-29cc-4cd8-b51c-ca35f43d414a",
                    "url": "http://localhost:8083/v1/media-assets/9e9acd8c-29cc-4cd8-b51c-ca35f43d414a.tif"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 15,
                    "likes": 0,
                    "comments": 7,
                    "shares": 6
                },
                "is_liked": 0
            }
        ],
        "created_at": 1749550994
    }
}
 

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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=tOt9GRsNl6Wdc0tWbuqmhjRRfsaR3JD8eDzWdOeX; expires=Tue, 10 Jun 2025 12:23:14 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.cil",
            "filename": "sit-officiis-velit-itaquecil",
            "created_at": "2025-04-05T18:18:25+00:00",
            "type": "image",
            "analytics": {
                "views": 198,
                "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": "9e9acd8c-29cc-4cd8-b51c-ca35f43d414a",
                    "url": "http://localhost:8083/v1/media-assets/9e9acd8c-29cc-4cd8-b51c-ca35f43d414a.tif"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 12,
                    "likes": 0,
                    "comments": 0,
                    "shares": 9
                },
                "is_liked": 0
            }
        ],
        "created_at": 1743877134
    }
}
 

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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=wnH8XP5esWfEHE8jd2aH3KtSWPa9gomxPKRQytgq; expires=Tue, 10 Jun 2025 12:23:14 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 "https://api.qplet.dev/v1/albums?filters[name]=&filters[owner]=&per_page=6&page=28&cursor=voluptas&pagination_type=page&sort[by]=name&sort[order]=desc" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/albums"
);

const params = {
    "filters[name]": "",
    "filters[owner]": "",
    "per_page": "6",
    "page": "28",
    "cursor": "voluptas",
    "pagination_type": "page",
    "sort[by]": "name",
    "sort[order]": "desc",
};
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 = 'https://api.qplet.dev/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' => '6',
            'page' => '28',
            'cursor' => 'voluptas',
            'pagination_type' => 'page',
            'sort[by]' => 'name',
            'sort[order]' => 'desc',
        ],
    ]
);
$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=uUC5LwwGhB5RNEahHrwII150dX0y2zAizEoQIz3o; expires=Tue, 10 Jun 2025 12:23:19 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [],
    "meta": {
        "current_page": 28,
        "from": null,
        "last_page": 10,
        "path": "http://localhost:8083/v1/albums",
        "per_page": 6,
        "to": null,
        "total": 55
    }
}
 

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: 6

page   integer  optional  

Must be at least 1. Example: 28

cursor   string  optional  

Example: voluptas

pagination_type   string  optional  

Example: page

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: desc

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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=7iPPNNzXbcrkJLOWv3Fjk5Nl8XlcuqvdIuViMJGe; expires=Tue, 10 Jun 2025 12:23:19 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.cil",
            "filename": "sit-officiis-velit-itaquecil",
            "created_at": "2025-04-05T18:18:25+00:00",
            "type": "image",
            "analytics": {
                "views": 2875,
                "likes": 0,
                "comments": 0,
                "shares": 7
            }
        },
        "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": "9e9acd8c-29cc-4cd8-b51c-ca35f43d414a",
                    "url": "http://localhost:8083/v1/media-assets/9e9acd8c-29cc-4cd8-b51c-ca35f43d414a.tif"
                },
                "cover": {
                    "id": "9e9acd8c-2b3d-4eca-8daa-ce2f0e604e2b",
                    "url": "https://via.placeholder.com/640x480.png/0066cc?text=magnam"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 6,
                    "shares": 11
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-c6c5-453a-b525-b94a1fca7d92",
                "title": "Sed aut corrupti magnam et est.",
                "media_asset": {
                    "id": "9e9acdb7-7930-4b20-bad4-7f0ba388d84e",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-7930-4b20-bad4-7f0ba388d84e.sql"
                },
                "cover": {
                    "id": "9e9acdb7-7a89-47d8-b364-e10272b0546c",
                    "url": "https://via.placeholder.com/640x480.png/0000dd?text=ut"
                },
                "owner": {
                    "id": "9e9acdb7-77f3-4c0b-8945-61a57aeeb143",
                    "name": "Otilia Marquardt",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 9,
                    "likes": 0,
                    "comments": 3,
                    "shares": 11
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-c777-47fc-8e19-e3856c236aa9",
                "title": "Voluptatem consequatur at magnam atque laboriosam.",
                "media_asset": {
                    "id": "9e9acdb7-7d14-4c49-bc7e-f62805dccd17",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-7d14-4c49-bc7e-f62805dccd17.rif"
                },
                "cover": {
                    "id": "9e9acdb7-7e56-475b-b0cd-47227983a036",
                    "url": "https://via.placeholder.com/640x480.png/00aa33?text=aut"
                },
                "owner": {
                    "id": "9e9acdb7-7bd9-4193-8a44-f7e6e65cc09a",
                    "name": "Prof. Barney Haag PhD",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 15,
                    "likes": 0,
                    "comments": 12,
                    "shares": 5
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-c840-4692-bbd2-ea66c2cacf02",
                "title": "Voluptate praesentium similique dignissimos doloremque iure.",
                "media_asset": {
                    "id": "9e9acdb7-80ec-478c-97eb-e596c7d61fd1",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-80ec-478c-97eb-e596c7d61fd1.gph"
                },
                "cover": {
                    "id": "9e9acdb7-822e-42fc-a4bc-27c029873c73",
                    "url": "https://via.placeholder.com/640x480.png/008866?text=porro"
                },
                "owner": {
                    "id": "9e9acdb7-7fae-43da-be2c-e3e4d4dd2fd2",
                    "name": "Jalon Kling",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 15,
                    "likes": 0,
                    "comments": 15,
                    "shares": 0
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-c8ea-405a-8312-92fc8e5ab5ed",
                "title": "Eius aliquid temporibus dolores perferendis.",
                "media_asset": {
                    "id": "9e9acdb7-84cb-4ed1-8bda-33a7278eae48",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-84cb-4ed1-8bda-33a7278eae48.potx"
                },
                "cover": {
                    "id": "9e9acdb7-85ff-4c04-bd2f-77dd86a7e1c9",
                    "url": "https://via.placeholder.com/640x480.png/009911?text=sit"
                },
                "owner": {
                    "id": "9e9acdb7-839e-494e-b8f5-72c58e3271ff",
                    "name": "Alysa Ebert",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 1,
                    "likes": 0,
                    "comments": 12,
                    "shares": 8
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-c997-4921-bd88-a1b459ccbbf6",
                "title": "Et est voluptatem aliquid ut repudiandae.",
                "media_asset": {
                    "id": "9e9acdb7-8898-4242-a04a-a073ae73149a",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-8898-4242-a04a-a073ae73149a.x3d"
                },
                "cover": {
                    "id": "9e9acdb7-8a07-4132-bcab-2deffab826d1",
                    "url": "https://via.placeholder.com/640x480.png/003311?text=quia"
                },
                "owner": {
                    "id": "9e9acdb7-873d-41e7-bd8e-544245855933",
                    "name": "Mr. Eddie Bode IV",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 6,
                    "shares": 0
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-ca46-473d-8373-82cb265e724d",
                "title": "Aut enim quaerat ea suscipit est quia qui.",
                "media_asset": {
                    "id": "9e9acdb7-8c84-4770-a812-21b2568269f2",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-8c84-4770-a812-21b2568269f2.uvvt"
                },
                "cover": {
                    "id": "9e9acdb7-8dbc-4226-b816-5d4e65bae3ab",
                    "url": "https://via.placeholder.com/640x480.png/006633?text=voluptas"
                },
                "owner": {
                    "id": "9e9acdb7-8b4b-41d4-ac4d-fefe517aa268",
                    "name": "Patsy Upton",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 12,
                    "likes": 0,
                    "comments": 1,
                    "shares": 1
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-cb1e-419c-abf4-905c14f91c37",
                "title": "Ut maxime id quos consectetur.",
                "media_asset": {
                    "id": "9e9acdb7-905e-4a42-ac37-94daf616856f",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-905e-4a42-ac37-94daf616856f.mmf"
                },
                "cover": {
                    "id": "9e9acdb7-919d-4a39-b715-1e0a76f7c2c9",
                    "url": "https://via.placeholder.com/640x480.png/006699?text=porro"
                },
                "owner": {
                    "id": "9e9acdb7-8f14-4a9e-8adf-e3850f2c9e84",
                    "name": "Lenna Lueilwitz DVM",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 5,
                    "likes": 0,
                    "comments": 10,
                    "shares": 13
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-cb98-4ed0-99eb-558c1695cb7b",
                "title": "Earum reiciendis voluptas dolore quos commodi.",
                "media_asset": {
                    "id": "9e9acdb7-945e-42ec-b01c-a2e616272e28",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-945e-42ec-b01c-a2e616272e28.uvvu"
                },
                "cover": {
                    "id": "9e9acdb7-95ac-418e-9493-a2d9f26880a0",
                    "url": "https://via.placeholder.com/640x480.png/0077aa?text=quod"
                },
                "owner": {
                    "id": "9e9acdb7-9312-4a0d-8b3c-356154249dbd",
                    "name": "Wendy Boehm MD",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 7,
                    "likes": 0,
                    "comments": 7,
                    "shares": 14
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-cc3d-42b1-bcb4-7d4e5ccb6bd0",
                "title": "Omnis doloremque quam mollitia nam sit possimus aspernatur dolor.",
                "media_asset": {
                    "id": "9e9acdb7-984d-43c9-8049-7c0efc5d60e9",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-984d-43c9-8049-7c0efc5d60e9.ufdl"
                },
                "cover": {
                    "id": "9e9acdb7-998e-46ea-93c6-681d82988ef8",
                    "url": "https://via.placeholder.com/640x480.png/0066ff?text=cupiditate"
                },
                "owner": {
                    "id": "9e9acdb7-96fd-4f01-af64-850cfb28dc76",
                    "name": "Marcelino Rippin",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 11,
                    "likes": 0,
                    "comments": 10,
                    "shares": 3
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-ccc4-463c-9460-8107a1145243",
                "title": "Quaerat odio magnam architecto molestiae consequuntur et vero ea.",
                "media_asset": {
                    "id": "9e9acdb7-9c33-4f6a-909f-b31e2765b9f3",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-9c33-4f6a-909f-b31e2765b9f3.odf"
                },
                "cover": {
                    "id": "9e9acdb7-9d88-41d8-9de7-1a41c9a26907",
                    "url": "https://via.placeholder.com/640x480.png/001111?text=ut"
                },
                "owner": {
                    "id": "9e9acdb7-9b09-4cdc-a6e1-c1a557fff064",
                    "name": "Claudie Braun DVM",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 10,
                    "likes": 0,
                    "comments": 7,
                    "shares": 7
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-cd4d-4b72-bb73-faf0e65de18f",
                "title": "Nesciunt dicta et est et.",
                "media_asset": {
                    "id": "9e9acdb7-a007-4ac0-8664-b3da11f3f3a8",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-a007-4ac0-8664-b3da11f3f3a8.iges"
                },
                "cover": {
                    "id": "9e9acdb7-a1b1-4a93-9c8b-9bc4f93283d1",
                    "url": "https://via.placeholder.com/640x480.png/00dd66?text=odio"
                },
                "owner": {
                    "id": "9e9acdb7-9ed5-438f-a5a8-b93fb2139d23",
                    "name": "Emmie Veum",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 3,
                    "likes": 0,
                    "comments": 14,
                    "shares": 3
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-ce06-45d6-860f-39a91d013b9f",
                "title": "Nulla voluptates asperiores repudiandae nulla suscipit nulla sequi.",
                "media_asset": {
                    "id": "9e9acdb7-a480-4520-ba1a-e0f6d6b0d21d",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-a480-4520-ba1a-e0f6d6b0d21d.hdf"
                },
                "cover": {
                    "id": "9e9acdb7-a5b2-40f4-b9e2-f102e9f52785",
                    "url": "https://via.placeholder.com/640x480.png/0066cc?text=odio"
                },
                "owner": {
                    "id": "9e9acdb7-a33b-4eeb-be8b-c94d46c250a3",
                    "name": "Prof. Ford Dicki III",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 6,
                    "likes": 0,
                    "comments": 0,
                    "shares": 2
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-ce8d-4fbe-851d-a3658179640f",
                "title": "Voluptatem qui cupiditate veniam aut vel ullam quia dolorum.",
                "media_asset": {
                    "id": "9e9acdb7-a869-46dd-90cb-d080d8ea4c37",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-a869-46dd-90cb-d080d8ea4c37.swf"
                },
                "cover": {
                    "id": "9e9acdb7-a99c-482d-90ae-16c21d5f6726",
                    "url": "https://via.placeholder.com/640x480.png/00bb22?text=distinctio"
                },
                "owner": {
                    "id": "9e9acdb7-a720-4891-bc74-eaf0f58cfd08",
                    "name": "Yadira Douglas",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 12,
                    "shares": 11
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-cf35-4e94-b8ee-d0079759b3c9",
                "title": "Eos sit sint dignissimos.",
                "media_asset": {
                    "id": "9e9acdb7-ac1f-43f4-9d8a-837786c588ac",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-ac1f-43f4-9d8a-837786c588ac.yin"
                },
                "cover": {
                    "id": "9e9acdb7-ad5d-4a57-a718-4c0aacd4d192",
                    "url": "https://via.placeholder.com/640x480.png/00ccff?text=voluptate"
                },
                "owner": {
                    "id": "9e9acdb7-aada-4f17-b370-7bca964f4587",
                    "name": "Grayson Parker PhD",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 9,
                    "likes": 0,
                    "comments": 7,
                    "shares": 8
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-cfbe-4c0a-beef-32e7c476afc5",
                "title": "Inventore saepe rerum ratione veritatis quia.",
                "media_asset": {
                    "id": "9e9acdb7-b01a-4587-bb04-1613e3e3493e",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-b01a-4587-bb04-1613e3e3493e.sxw"
                },
                "cover": {
                    "id": "9e9acdb7-b196-4a8f-b8c5-1446b783d10d",
                    "url": "https://via.placeholder.com/640x480.png/0044aa?text=occaecati"
                },
                "owner": {
                    "id": "9e9acdb7-aec6-4518-9e61-9f00b19407b9",
                    "name": "Malika Bernier",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 11,
                    "likes": 0,
                    "comments": 7,
                    "shares": 15
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-d04c-49dc-a2bc-0c024c47e1a5",
                "title": "Non qui quia eos quos cum.",
                "media_asset": {
                    "id": "9e9acdb7-b43b-46d3-99ee-cf1ae6bd7aa2",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-b43b-46d3-99ee-cf1ae6bd7aa2.xfdl"
                },
                "cover": {
                    "id": "9e9acdb7-b581-428b-83ed-49c5d2ba969a",
                    "url": "https://via.placeholder.com/640x480.png/0066ff?text=impedit"
                },
                "owner": {
                    "id": "9e9acdb7-b2f1-4808-b102-467344a886cd",
                    "name": "Brianne Spencer",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 1,
                    "likes": 0,
                    "comments": 15,
                    "shares": 3
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-d100-48f0-b39c-f3d711b90e55",
                "title": "Magni qui quam perspiciatis vel aut.",
                "media_asset": {
                    "id": "9e9acdb7-b864-46ff-8adb-f0d166a86561",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-b864-46ff-8adb-f0d166a86561.json"
                },
                "cover": {
                    "id": "9e9acdb7-b9b3-4b8c-a5dd-28990d107d25",
                    "url": "https://via.placeholder.com/640x480.png/009944?text=quo"
                },
                "owner": {
                    "id": "9e9acdb7-b6f7-42cc-be32-74c5c1b34ad2",
                    "name": "Frederick Kuhn",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 8,
                    "likes": 0,
                    "comments": 6,
                    "shares": 13
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-d17d-4272-a838-190ec32d75d8",
                "title": "Dolores consequuntur corporis et dolor deleniti.",
                "media_asset": {
                    "id": "9e9acdb7-bc21-4f64-93e0-2c96bc65250c",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-bc21-4f64-93e0-2c96bc65250c.vcd"
                },
                "cover": {
                    "id": "9e9acdb7-bd75-4cc0-8663-c1ce71f5b1c0",
                    "url": "https://via.placeholder.com/640x480.png/001133?text=velit"
                },
                "owner": {
                    "id": "9e9acdb7-badd-404d-b4ee-012934646dae",
                    "name": "Mrs. Oceane Bauch DDS",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 5,
                    "likes": 0,
                    "comments": 14,
                    "shares": 3
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-d225-453b-8493-3690d32d6a31",
                "title": "Impedit odio dolorum veritatis fuga numquam.",
                "media_asset": {
                    "id": "9e9acdb7-c00f-44a2-8b99-f856f418f1c5",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-c00f-44a2-8b99-f856f418f1c5.itp"
                },
                "cover": {
                    "id": "9e9acdb7-c14f-4079-8a0c-316db35c49ec",
                    "url": "https://via.placeholder.com/640x480.png/00cc55?text=a"
                },
                "owner": {
                    "id": "9e9acdb7-bec9-473a-a69c-7f1ac6311764",
                    "name": "Dr. Brittany Crist I",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 15,
                    "shares": 14
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb7-d2b0-44bd-ad90-d9b77538e25b",
                "title": "Molestias ducimus error cumque sint.",
                "media_asset": {
                    "id": "9e9acdb7-c3d4-45a5-b6ce-582db0d65626",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb7-c3d4-45a5-b6ce-582db0d65626.fly"
                },
                "cover": {
                    "id": "9e9acdb7-c521-4a67-9987-efb08bb23497",
                    "url": "https://via.placeholder.com/640x480.png/0044cc?text=reprehenderit"
                },
                "owner": {
                    "id": "9e9acdb7-c29e-48de-8608-3ad407ec8a2c",
                    "name": "Marilie Kerluke PhD",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 13,
                    "likes": 0,
                    "comments": 0,
                    "shares": 5
                },
                "is_liked": 0
            }
        ],
        "created_at": 1743877134
    }
}
 

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 "https://api.qplet.dev/v1/playlists/new" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=gK9CYWaXdRZvm4UQ67pn0Di43wyuo3D1Hp0rUb7s; expires=Tue, 10 Jun 2025 12:23:08 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 "https://api.qplet.dev/v1/playlists/popular" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=cA51tIMXDkkrv8N6BtMk72YO8A2JW3IFJbVKd6HN; expires=Tue, 10 Jun 2025 12:23:09 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

requires authentication

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=eEXC3oQ7mMmwBm28rGoWR6wKQTEGSguBMqxR2Awe; expires=Tue, 10 Jun 2025 12:23:12 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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=tA8ZdSeFGLltJ6GSDrDA9smsKMRgpOaXiqyLIuSY; expires=Tue, 10 Jun 2025 12:23:12 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": "9e9acd8c-29cc-4cd8-b51c-ca35f43d414a",
                    "url": "http://localhost:8083/v1/media-assets/9e9acd8c-29cc-4cd8-b51c-ca35f43d414a.tif"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 13,
                    "likes": 0,
                    "comments": 7,
                    "shares": 3
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-309c-43ba-a07e-a39429f19da5",
                "title": "Modi placeat itaque maiores ea ut.",
                "media_asset": {
                    "id": "9e9acdb3-e198-49bf-94f8-21a2ee357d54",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb3-e198-49bf-94f8-21a2ee357d54.otp"
                },
                "owner": {
                    "id": "9e9acdb3-e03f-4a6a-9b23-b22ae409bb19",
                    "name": "Mrs. Dominique Hirthe III",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 15,
                    "likes": 0,
                    "comments": 8,
                    "shares": 8
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-313f-45db-aa6d-f0cce83904ea",
                "title": "Voluptas quia vel quidem sit error et consequuntur.",
                "media_asset": {
                    "id": "9e9acdb3-e578-49fc-af58-d2b7797b427c",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb3-e578-49fc-af58-d2b7797b427c.pyv"
                },
                "owner": {
                    "id": "9e9acdb3-e43c-45f6-bc82-da509e12ed8d",
                    "name": "Izabella Grady DDS",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 15,
                    "likes": 0,
                    "comments": 2,
                    "shares": 13
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-31d0-4a1a-8504-34fe01f45c9f",
                "title": "Hic sit molestiae in non.",
                "media_asset": {
                    "id": "9e9acdb3-e96e-47da-bb46-bb43729526d7",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb3-e96e-47da-bb46-bb43729526d7.odft"
                },
                "owner": {
                    "id": "9e9acdb3-e828-4c63-b442-039d8ff4c6d8",
                    "name": "Hardy Hauck",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 8,
                    "likes": 0,
                    "comments": 15,
                    "shares": 8
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-3274-4538-8bcf-1f28ab7bde86",
                "title": "Laboriosam culpa at amet perspiciatis voluptatem non perferendis nam.",
                "media_asset": {
                    "id": "9e9acdb3-ed32-42fb-af24-e253a65b4ac0",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb3-ed32-42fb-af24-e253a65b4ac0.urls"
                },
                "owner": {
                    "id": "9e9acdb3-ebff-4cf5-ac5d-b10710dec5b3",
                    "name": "Miss Eldridge Kerluke",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 13,
                    "likes": 0,
                    "comments": 7,
                    "shares": 2
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-3301-4333-ab72-05a5c0a4589d",
                "title": "Sint eum modi eaque neque quia est aut.",
                "media_asset": {
                    "id": "9e9acdb3-f111-4fd3-a209-c3760efd69c8",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb3-f111-4fd3-a209-c3760efd69c8.jsonml"
                },
                "owner": {
                    "id": "9e9acdb3-efc7-4c5e-9c9c-7b87885627ce",
                    "name": "Mya Rodriguez",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 13,
                    "likes": 0,
                    "comments": 1,
                    "shares": 14
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-33b5-431f-a8c2-3011c1214a96",
                "title": "Quam veniam neque dolore ducimus voluptates.",
                "media_asset": {
                    "id": "9e9acdb3-f68b-4ad7-b493-2da18f61182c",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb3-f68b-4ad7-b493-2da18f61182c.kon"
                },
                "owner": {
                    "id": "9e9acdb3-f52b-46b0-b4ce-2ddd555e938a",
                    "name": "Justine Cremin",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 15,
                    "likes": 0,
                    "comments": 7,
                    "shares": 1
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-343c-4cab-b734-7bd78982fe8c",
                "title": "Ut sequi est sunt sed.",
                "media_asset": {
                    "id": "9e9acdb3-facc-41c6-a11c-baadc58c9190",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb3-facc-41c6-a11c-baadc58c9190.dae"
                },
                "owner": {
                    "id": "9e9acdb3-f98e-400f-a3f7-80beb84520e0",
                    "name": "Sedrick White",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 7,
                    "likes": 0,
                    "comments": 10,
                    "shares": 6
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-34e0-4360-aa13-c99e162a7899",
                "title": "Nulla perspiciatis sapiente dolorem voluptatum.",
                "media_asset": {
                    "id": "9e9acdb3-fe82-4183-b741-e3aef3ee1cfa",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb3-fe82-4183-b741-e3aef3ee1cfa.vtu"
                },
                "owner": {
                    "id": "9e9acdb3-fd4c-4dc0-a4d7-549516210b2b",
                    "name": "Dawson Champlin",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 1,
                    "likes": 0,
                    "comments": 11,
                    "shares": 11
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-3567-4828-add3-4411dc2f60f8",
                "title": "Voluptates aut rem ut qui.",
                "media_asset": {
                    "id": "9e9acdb4-023e-44fc-84c5-eb1c2cc84ef2",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-023e-44fc-84c5-eb1c2cc84ef2.uvvx"
                },
                "owner": {
                    "id": "9e9acdb4-0108-4f40-9e51-ec36c70db14f",
                    "name": "Concepcion Stark",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 1,
                    "likes": 0,
                    "comments": 13,
                    "shares": 9
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-35fa-4e79-ae82-637968fa579f",
                "title": "Velit asperiores sint et qui.",
                "media_asset": {
                    "id": "9e9acdb4-0619-410d-bce9-5f9c1e81a333",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-0619-410d-bce9-5f9c1e81a333.nfo"
                },
                "owner": {
                    "id": "9e9acdb4-04dd-4069-82ce-465214e911be",
                    "name": "Janae Lynch",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 7,
                    "shares": 4
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-3682-4cc1-9f71-8a973ee37788",
                "title": "Doloribus maxime laboriosam eos ut adipisci consequatur alias.",
                "media_asset": {
                    "id": "9e9acdb4-0a23-4809-b4c9-81afbd55ec4a",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-0a23-4809-b4c9-81afbd55ec4a.ktx"
                },
                "owner": {
                    "id": "9e9acdb4-08e4-4412-af69-83988aebf113",
                    "name": "Mrs. Meredith Denesik I",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 13,
                    "likes": 0,
                    "comments": 3,
                    "shares": 14
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-371d-43a4-86b2-4404198f66bb",
                "title": "Ipsa sed qui excepturi aut.",
                "media_asset": {
                    "id": "9e9acdb4-0deb-4e61-a180-550f9fc26e42",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-0deb-4e61-a180-550f9fc26e42.musicxml"
                },
                "owner": {
                    "id": "9e9acdb4-0cc0-4612-9e2a-f99f98577247",
                    "name": "Mercedes Cummings",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 14,
                    "shares": 12
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-37b1-4a47-b7f9-e864088fc92f",
                "title": "Cum modi iste voluptatem porro dolor voluptas repudiandae.",
                "media_asset": {
                    "id": "9e9acdb4-11d8-475e-ab4e-cf6f4b8b8760",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-11d8-475e-ab4e-cf6f4b8b8760.odi"
                },
                "owner": {
                    "id": "9e9acdb4-10a3-49ad-a802-fbf0455c9dfa",
                    "name": "Janie Pollich",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 9,
                    "likes": 0,
                    "comments": 12,
                    "shares": 13
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-3841-41a2-a54f-90a9ffa45f77",
                "title": "Est magnam voluptatem incidunt labore recusandae.",
                "media_asset": {
                    "id": "9e9acdb4-15e3-41de-a662-526eb4bfedec",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-15e3-41de-a662-526eb4bfedec.wcm"
                },
                "owner": {
                    "id": "9e9acdb4-14a7-42c9-8858-4ba3f2450cdd",
                    "name": "Zella Gorczany DDS",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 5,
                    "likes": 0,
                    "comments": 4,
                    "shares": 14
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-38be-4e67-935a-6442b044bbfd",
                "title": "Repellendus est cum velit incidunt sed iure ab quis.",
                "media_asset": {
                    "id": "9e9acdb4-1a37-47a8-87f4-3a34622c6834",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-1a37-47a8-87f4-3a34622c6834.fdf"
                },
                "owner": {
                    "id": "9e9acdb4-18b1-4395-89f8-ddcf84aeb259",
                    "name": "Tiana Gutkowski PhD",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 7,
                    "likes": 0,
                    "comments": 13,
                    "shares": 3
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-396d-407d-b3dd-52960f93ec4e",
                "title": "Fuga dolorem et eaque officiis animi quia sint vel.",
                "media_asset": {
                    "id": "9e9acdb4-1e5a-46c5-9462-b1dc16c0d46a",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-1e5a-46c5-9462-b1dc16c0d46a.tiff"
                },
                "owner": {
                    "id": "9e9acdb4-1d1c-4eae-93c4-1045d683411e",
                    "name": "Mr. Nicklaus Feeney",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 10,
                    "likes": 0,
                    "comments": 12,
                    "shares": 12
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-39f9-445f-a7d6-092c3e6a5ba5",
                "title": "Odio nulla dolores eius ut et a dolores illum.",
                "media_asset": {
                    "id": "9e9acdb4-229b-4972-9f38-bcc34811208b",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-229b-4972-9f38-bcc34811208b.uoml"
                },
                "owner": {
                    "id": "9e9acdb4-2148-43cd-a06e-22577efa0d01",
                    "name": "Dayne VonRueden",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 2,
                    "shares": 1
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-3a8a-4589-8473-cd0b849af791",
                "title": "Quis mollitia repellat officia deserunt non.",
                "media_asset": {
                    "id": "9e9acdb4-2674-47e4-8da5-f550b853bd01",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-2674-47e4-8da5-f550b853bd01.nsc"
                },
                "owner": {
                    "id": "9e9acdb4-2527-4b86-a9c0-fef8b283cd41",
                    "name": "Amara Grimes",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 7,
                    "likes": 0,
                    "comments": 2,
                    "shares": 1
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-3b10-4d8b-b035-a767d7eda7c1",
                "title": "Id assumenda qui quia enim adipisci magni architecto.",
                "media_asset": {
                    "id": "9e9acdb4-2a4e-445e-905c-8036b8589dcc",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-2a4e-445e-905c-8036b8589dcc.odt"
                },
                "owner": {
                    "id": "9e9acdb4-291c-4431-8c95-0033d6baffe8",
                    "name": "Aliya Brakus",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 7,
                    "likes": 0,
                    "comments": 10,
                    "shares": 13
                },
                "is_liked": 0
            },
            {
                "id": "9e9acdb4-3bbe-44a0-a015-722e1bbc528b",
                "title": "Nemo sed laboriosam et est est iste qui.",
                "media_asset": {
                    "id": "9e9acdb4-2e2e-4d18-a7b5-dd2b95236b84",
                    "url": "http://localhost:8083/v1/media-assets/9e9acdb4-2e2e-4d18-a7b5-dd2b95236b84.gtar"
                },
                "owner": {
                    "id": "9e9acdb4-2cdf-4418-94bb-1feb3a1e5d71",
                    "name": "Mr. Andre Boyle",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 8,
                    "likes": 0,
                    "comments": 12,
                    "shares": 14
                },
                "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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=3wBwU7wnJpUmFCpRvl8ceIaRq48Pk3XdH76s4BzS; expires=Tue, 10 Jun 2025 12:23:12 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f1ee88a-e873-4709-8c7a-65c9e435e435",
        "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.cil",
            "filename": "sit-officiis-velit-itaquecil",
            "created_at": "2025-04-05T18:18:25+00:00",
            "type": "image",
            "analytics": {
                "views": 733,
                "likes": 0,
                "comments": 0,
                "shares": 2
            }
        },
        "tracks_count": 1,
        "tracks": [
            {
                "id": "00000000-a791-4783-9845-4b571a9e579f",
                "title": "Rolling in the Deep",
                "media_asset": {
                    "id": "9e9acd8c-29cc-4cd8-b51c-ca35f43d414a",
                    "url": "http://localhost:8083/v1/media-assets/9e9acd8c-29cc-4cd8-b51c-ca35f43d414a.tif"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 3,
                    "likes": 0,
                    "comments": 13,
                    "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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=wuQcO0UwHwD33hiwPACXSDS3kKJwoqpBvU6eJ7hU; expires=Tue, 10 Jun 2025 12:23:12 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.cil",
            "filename": "sit-officiis-velit-itaquecil",
            "created_at": "2025-04-05T18:18:25+00:00",
            "type": "image",
            "analytics": {
                "views": 373,
                "likes": 0,
                "comments": 0,
                "shares": 11
            }
        },
        "tracks_count": 1,
        "tracks": [
            {
                "id": "00000000-a791-4783-9845-4b571a9e579f",
                "title": "Rolling in the Deep",
                "media_asset": {
                    "id": "9e9acd8c-29cc-4cd8-b51c-ca35f43d414a",
                    "url": "http://localhost:8083/v1/media-assets/9e9acd8c-29cc-4cd8-b51c-ca35f43d414a.tif"
                },
                "owner": {
                    "id": "00000000-df85-4307-a069-68612c4471e1",
                    "name": "Fan Test Country",
                    "avatar_url": null
                },
                "genres": [],
                "analytics": {
                    "playbacks": 0,
                    "likes": 0,
                    "comments": 15,
                    "shares": 9
                },
                "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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=zM8AYGdnYk3AivOUZb51VsKckBsnGu32W2hb7vP4; expires=Tue, 10 Jun 2025 12:23:12 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 "https://api.qplet.dev/v1/playlists?filters[name]=" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=ZSBPmncCXVoIDE4ujJF9MteGvUJPphW9zgA0dLuD; expires=Tue, 10 Jun 2025 12:23:19 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": "9e9acdb2-e29d-47a9-a5fa-51c90501de5d",
            "name": "Consequatur",
            "description": null,
            "cover": null,
            "tracks_count": 0,
            "tracks": [],
            "is_editable": true
        },
        {
            "id": "9e9acdb2-e1fb-49d2-9236-d2c10abd70e8",
            "name": "Doloribus",
            "description": null,
            "cover": null,
            "tracks_count": 0,
            "tracks": [],
            "is_editable": true
        },
        {
            "id": "9e9acdb2-e32d-4487-af8d-d44e56a7b783",
            "name": "Rerum",
            "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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=3xhue1jqnuaJcZmeHjw7te3Iwi6d3g16CnRgAh0T; expires=Tue, 10 Jun 2025 12:23:12 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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=HPvEaDJFltalyASQsNdfxTzaJ6SjCC7zUL7Xi0pp; expires=Tue, 10 Jun 2025 12:23:12 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 \
    "https://api.qplet.dev/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\": [
        \"a4900f3b-176e-3c66-80c5-cc8cbea4c9bb\"
    ],
    \"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(
    "https://api.qplet.dev/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": [
        "a4900f3b-176e-3c66-80c5-cc8cbea4c9bb"
    ],
    "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 = 'https://api.qplet.dev/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' => [
                'a4900f3b-176e-3c66-80c5-cc8cbea4c9bb',
            ],
            '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=A7nfI7HqXt67EPrvBMocCKV7FUAbvVMrcNe1Dgdl; expires=Tue, 10 Jun 2025 12:23:14 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f1ee88e-2524-4041-9fa9-11dcee638567",
        "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.odft"
        },
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "https://via.placeholder.com/640x480.png/0022dd?text=ducimus"
        },
        "owner": {
            "id": "00000000-df85-4307-a069-68612c4471e3",
            "name": "Admin Test Country",
            "avatar_url": null
        },
        "genres": [],
        "analytics": {
            "playbacks": 3,
            "likes": 0,
            "comments": 1,
            "shares": 15
        },
        "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 \
    "https://api.qplet.dev/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\": [
        \"6fded916-b2b9-3e9c-a877-750162f37f27\"
    ],
    \"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(
    "https://api.qplet.dev/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": [
        "6fded916-b2b9-3e9c-a877-750162f37f27"
    ],
    "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 = 'https://api.qplet.dev/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' => [
                '6fded916-b2b9-3e9c-a877-750162f37f27',
            ],
            '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=OugdvFIkVSmLUSH5vJCEcpjICPkdZg2sC1NbZcbt; expires=Tue, 10 Jun 2025 12:23:14 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-a791-4783-9845-4b571a9e579f",
        "title": "Rolling in the Deep (Updated)",
        "media_asset": {
            "id": "9e9acd8c-29cc-4cd8-b51c-ca35f43d414a",
            "url": "http://localhost:8083/v1/media-assets/9e9acd8c-29cc-4cd8-b51c-ca35f43d414a.tif"
        },
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "https://via.placeholder.com/640x480.png/0022dd?text=ducimus"
        },
        "owner": {
            "id": "00000000-df85-4307-a069-68612c4471e1",
            "name": "Fan Test Country",
            "avatar_url": null
        },
        "genres": [],
        "analytics": {
            "playbacks": 9,
            "likes": 0,
            "comments": 14,
            "shares": 5
        },
        "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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=jfx60MDUQGxhPePuaYXlG9DNie3HnF9ZekhPPwkm; expires=Tue, 10 Jun 2025 12:23:14 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 "https://api.qplet.dev/v1/tracks?filters[title]=Rolling+in+the+Deep&filters[owner]=Joe+Shmoe&filters[owner_id]=00000000-df85-4307-a069-68612c4471e2&filters[genres]=%5B%229e9acd81-1040-4302-8433-0e7757b8cfad%22%2C%229e9acd81-13dc-4152-bf89-00b4df8a0913%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(
    "https://api.qplet.dev/v1/tracks"
);

const params = {
    "filters[title]": "Rolling in the Deep",
    "filters[owner]": "Joe Shmoe",
    "filters[owner_id]": "00000000-df85-4307-a069-68612c4471e2",
    "filters[genres]": "["9e9acd81-1040-4302-8433-0e7757b8cfad","9e9acd81-13dc-4152-bf89-00b4df8a0913"]",
    "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 = 'https://api.qplet.dev/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]' => '["9e9acd81-1040-4302-8433-0e7757b8cfad","9e9acd81-13dc-4152-bf89-00b4df8a0913"]',
            '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=SxEYaFkWyRKSaP1KzWNZ8ooDEgY1HigY3rGCNBos; expires=Tue, 10 Jun 2025 12:23:19 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: ["9e9acd81-1040-4302-8433-0e7757b8cfad","9e9acd81-13dc-4152-bf89-00b4df8a0913"]

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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=8orwxancgzSwgLdXfy75XxLpN3CE2oGx9Obwh5nV; expires=Tue, 10 Jun 2025 12:23:19 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "00000000-a791-4783-9845-4b571a9e579f",
        "title": "Rolling in the Deep",
        "media_asset": {
            "id": "9e9acd8c-29cc-4cd8-b51c-ca35f43d414a",
            "url": "http://localhost:8083/v1/media-assets/9e9acd8c-29cc-4cd8-b51c-ca35f43d414a.tif"
        },
        "cover": {
            "id": "9e9acd8c-2b3d-4eca-8daa-ce2f0e604e2b",
            "url": "https://via.placeholder.com/640x480.png/0066cc?text=magnam"
        },
        "owner": {
            "id": "00000000-df85-4307-a069-68612c4471e1",
            "name": "Fan Test Country",
            "avatar_url": null
        },
        "genres": [],
        "analytics": {
            "playbacks": 9,
            "likes": 0,
            "comments": 8,
            "shares": 10
        },
        "is_liked": 0,
        "lyrics": {
            "is_own": 1,
            "author": null,
            "content": "Sunt voluptatibus sed sed aut sit veniam ex aut. Itaque optio reiciendis est possimus non. Voluptas voluptas eius rem voluptatem quis temporibus. Similique velit sunt quia molestiae."
        },
        "music": {
            "is_own": 0,
            "author": "Miss Jessica Brown MD"
        }
    }
}
 

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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=1mdumJfH2l8t7p4Yqzp0AQC8Ef4GfiaxvyAdQHRG; expires=Tue, 10 Jun 2025 12:23:14 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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=KrdaFcIXFpzpkmo8OlP6nJRKY9CQYHQ8jnDVKvVd; expires=Tue, 10 Jun 2025 12:23:14 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "88fd20ba-dcd3-4449-ac69-e397ee7769a0",
        "url": "http://localhost:8083/v1/media-assets/88fd20ba-dcd3-4449-ac69-e397ee7769a0.png",
        "filename": "logo.png",
        "created_at": "2025-06-10T10:23:14+00:00",
        "type": "image",
        "analytics": {
            "views": 1107,
            "likes": 0,
            "comments": 0,
            "shares": 15
        }
    }
}
 

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 \
    "https://api.qplet.dev/v1/media-assets/sed" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/media-assets/sed"
);

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 = 'https://api.qplet.dev/v1/media-assets/sed';
$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=CnXlon4g3SbqFsi0vga5ab8sqqmYNSztcHbJT4zA; expires=Tue, 10 Jun 2025 12:23:14 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: sed

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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=sArEXFqnXfkd5RciD7Q0T8V2pxhg9QdIOkLhXnUP; expires=Tue, 10 Jun 2025 12:23:19 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 "https://api.qplet.dev/v1/media-assets/qui.officiis" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/media-assets/qui.officiis"
);

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 = 'https://api.qplet.dev/v1/media-assets/qui.officiis';
$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=Lcq5poW8JYVAPnJVwhq43j4MBFDdv0qzS6qnyxHy; expires=Tue, 10 Jun 2025 12:23:19 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: qui

extension   string   

Example: officiis

Get file

Example request:
curl --request GET \
    --get "https://api.qplet.dev/v1/media-assets/download/ad.officiis" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/media-assets/download/ad.officiis"
);

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 = 'https://api.qplet.dev/v1/media-assets/download/ad.officiis';
$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=GTrc9WLd2AF5T7t4xwTsvpVHWqydVwXdeCbjApra; expires=Tue, 10 Jun 2025 12:23:19 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: ad

extension   string   

Example: officiis

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 "https://api.qplet.dev/v1/media-assets/at" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/media-assets/at"
);

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 = 'https://api.qplet.dev/v1/media-assets/at';
$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=ETgRb0YlYIKUb6F4oPQslnfYCP1NZr9bYzmz5GLw; expires=Tue, 10 Jun 2025 12:23:19 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: at

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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=79qWX67NqnTzwMJT115Pp9iGJ7N9Z2xsDVq97twq; expires=Tue, 10 Jun 2025 12:23:18 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "9e9acd81-1040-4302-8433-0e7757b8cfad",
            "name": "Alternative",
            "tracks": 413985
        }
    ],
    "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 "https://api.qplet.dev/v1/data/genres/9e9acd81-1040-4302-8433-0e7757b8cfad" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/data/genres/9e9acd81-1040-4302-8433-0e7757b8cfad"
);

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 = 'https://api.qplet.dev/v1/data/genres/9e9acd81-1040-4302-8433-0e7757b8cfad';
$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=oDkTifQ80zWVCXKLdk6eX2pbGbD2qssnOhxx0tGz; expires=Tue, 10 Jun 2025 12:23:18 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9e9acd81-1040-4302-8433-0e7757b8cfad",
        "name": "Alternative",
        "tracks": 413985
    }
}
 

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: 9e9acd81-1040-4302-8433-0e7757b8cfad

Countries

Endpoint for fetching list of countries

Example request:
curl --request GET \
    --get "https://api.qplet.dev/v1/data/countries" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=CmJUpO9gmDUt4jW0ZHlpYTI2OyTpvVcTWn9hv5Q5; expires=Tue, 10 Jun 2025 12:23:18 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 \
    "https://api.qplet.dev/v1/playlists/ad/autem" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/playlists/ad/autem"
);

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 = 'https://api.qplet.dev/v1/playlists/ad/autem';
$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=RxnzPFw287u7APiZFUAuqIcJBN5EpsJWVKqiGgAt; expires=Tue, 10 Jun 2025 12:23:19 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: ad

media   string   

Example: autem

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

requires authentication

Example request:
curl --request DELETE \
    "https://api.qplet.dev/v1/playlists/in/ratione" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/playlists/in/ratione"
);

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 = 'https://api.qplet.dev/v1/playlists/in/ratione';
$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=qXaRQfNFfoqvqdeMlM0kiSKEmSaHZBomFinG8Ev4; expires=Tue, 10 Jun 2025 12:23:19 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: in

media   string   

Example: ratione

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

requires authentication

Example request:
curl --request POST \
    "https://api.qplet.dev/v1/interest/et/voluptas" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/interest/et/voluptas"
);

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 = 'https://api.qplet.dev/v1/interest/et/voluptas';
$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=4gzlBz4nbiMBCxHVcrtXFaxgpslCXZ4hZ507Cuc1; expires=Tue, 10 Jun 2025 12:23:20 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: et

id   string   

The ID of the {entity}. Example: voluptas

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

requires authentication

Example request:
curl --request DELETE \
    "https://api.qplet.dev/v1/interest/et/enim" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/interest/et/enim"
);

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 = 'https://api.qplet.dev/v1/interest/et/enim';
$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=x16lAs1C21Gqb9yDaH2IXEyAS8boTtq3Lg4tAAlK; expires=Tue, 10 Jun 2025 12:23:20 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: et

id   string   

The ID of the {entity}. Example: enim

GET v1/notifications

requires authentication

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=ydHHQIRju5k0X4eNGOcvLgKWWIor2s0ZxDBv9ZFQ; expires=Tue, 10 Jun 2025 12:23:20 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 "https://api.qplet.dev/v1/notifications/in/read" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/notifications/in/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 = 'https://api.qplet.dev/v1/notifications/in/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=EMxydOxGFFh1JfRr4LyGe0AwuvDNBRSUkEc8M5Ru; expires=Tue, 10 Jun 2025 12:23:20 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: in

GET v1/settings

requires authentication

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=Jd2Wm1iFZP5n8DLFEnrVlHlzIRnhrliS7QurmgwC; expires=Tue, 10 Jun 2025 12:23:20 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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=JBjEKM73GzKHHCOszODETBnjIOMgDDcr15iKmOyl; expires=Tue, 10 Jun 2025 12:23:20 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 \
    "https://api.qplet.dev/v1/dev/db/fresh" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=KXWj910OmkpB8xPJVCKCrHqMoJQu9S8XsS6Dr8fi; expires=Tue, 10 Jun 2025 12:23:09 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 \
    "https://api.qplet.dev/v1/genres" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"minima\",
    \"is_public\": false
}"
const url = new URL(
    "https://api.qplet.dev/v1/genres"
);

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

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

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.qplet.dev/v1/genres';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'minima',
            '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=fcE2XJtEj5tobieFyC8xSW6ECyUNed4mj4ddqfU8; expires=Tue, 10 Jun 2025 12:23:10 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f1ee887-6031-4d9f-8055-272f1c78191e",
        "name": "minima",
        "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: minima

is_public   boolean   

Example: false

Update

requires authentication

Update a Genre

Example request:
curl --request PATCH \
    "https://api.qplet.dev/v1/genres/9e9acd81-1040-4302-8433-0e7757b8cfad" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"nulla\",
    \"is_public\": false
}"
const url = new URL(
    "https://api.qplet.dev/v1/genres/9e9acd81-1040-4302-8433-0e7757b8cfad"
);

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

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

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.qplet.dev/v1/genres/9e9acd81-1040-4302-8433-0e7757b8cfad';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'nulla',
            '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=oFRMFqRZGvUWnSpwBoEXEeO0p0LuIuxHhblTDDwe; expires=Tue, 10 Jun 2025 12:23:10 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9e9acd81-1040-4302-8433-0e7757b8cfad",
        "name": "nulla",
        "tracks": 413985
    }
}
 

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: 9e9acd81-1040-4302-8433-0e7757b8cfad

Body Parameters

name   string   

Example: nulla

is_public   boolean   

Example: false

Delete

requires authentication

Delete a Genre

Example request:
curl --request DELETE \
    "https://api.qplet.dev/v1/genres/9e9acd81-1040-4302-8433-0e7757b8cfad" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/genres/9e9acd81-1040-4302-8433-0e7757b8cfad"
);

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 = 'https://api.qplet.dev/v1/genres/9e9acd81-1040-4302-8433-0e7757b8cfad';
$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=CuEkMZ9hd1FRgFIK3Uu0EDACJsM9DkmuQkJqY13p; expires=Tue, 10 Jun 2025 12:23:10 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: 9e9acd81-1040-4302-8433-0e7757b8cfad

User

Update user

requires authentication

Update user details using user ID

Example request:
curl --request PATCH \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 \
    "https://api.qplet.dev/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-07-10T10:23:11+00:00\"
}"
const url = new URL(
    "https://api.qplet.dev/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-07-10T10:23:11+00:00"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.qplet.dev/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-07-10T10:23:11+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-07-10T10:23:11+00:00

Unban

requires authentication

Activate user account

Example request:
curl --request DELETE \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 "https://api.qplet.dev/v1/complaints/voluptatem" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/complaints/voluptatem"
);

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 = 'https://api.qplet.dev/v1/complaints/voluptatem';
$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=YkkUp2LcGfammpYVdyYFU7yrBDqri8NC1Q2vzMZX; expires=Tue, 10 Jun 2025 12:23:14 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: voluptatem

List

requires authentication

Endpoint for fetching list of complaints

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=j6u16gFYv04eXlHnebadk4uWWsnZu4nSj98JNa2L; expires=Tue, 10 Jun 2025 12:23:14 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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=a33x3oA8fYFqWafA3LJTlwD79mzDsgxwu0b5bLE0; expires=Tue, 10 Jun 2025 12:23:19 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "views": 518,
        "subscriptions": 738,
        "subscribers": 922,
        "events": 932,
        "tracks": 899,
        "playlists": 344,
        "albums": 106
    }
}
 

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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=qxWVp6lTxMMzaqubCDqLWVrZ8BqummGvpourabYw; expires=Tue, 10 Jun 2025 12:23:19 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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=IgsIlO1UykvEp3SJNNR3BxMoDNvgHy8q8mtygGIN; expires=Tue, 10 Jun 2025 12:23:20 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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=s3s3IYmUhzbCxlu1BfVIyz925nVTuI4VDVB8Q82W; expires=Tue, 10 Jun 2025 12:23:20 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "likes": 0,
        "playbacks": 256,
        "playlists": 866
    }
}
 

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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=uN5QxFaLaXem0CQ2EnqbbWTks6bf2DY6SfqLiRck; expires=Tue, 10 Jun 2025 12:23:20 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

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

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 "https://api.qplet.dev/v1/complaints/types" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=1xx5FPN46VLVAGrNUhpP0T4fNVzQB71YgW1EJ4Yg; expires=Tue, 10 Jun 2025 12:23:09 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 "https://api.qplet.dev/v1/complaints/types/sed/reasons" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/complaints/types/sed/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 = 'https://api.qplet.dev/v1/complaints/types/sed/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=Kxb6oZGzZstLwl7kpMnVp8AH8Hc1AsFCS4WDuz53; expires=Tue, 10 Jun 2025 12:23:09 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: sed

Store

requires authentication

Create a Complaint

Example request:
curl --request POST \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=roxZHd026pgUlTJzhFlb6QzK7ChQCXcLovLau4ni; expires=Tue, 10 Jun 2025 12:23:14 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f1ee88d-ca90-4819-8440-29fb95922cc0",
        "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": "Doloribus reprehenderit autem inventore expedita officiis. Ducimus aperiam nihil magnam atque neque. Et sed quam est consequatur velit. Repellat rerum hic eveniet voluptatem."
        }
    }
}
 

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 \
    "https://api.qplet.dev/v1/complaints/est" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/complaints/est"
);

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 = 'https://api.qplet.dev/v1/complaints/est';
$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=kee0nrDbosibMgYxkmrbIwKUhiuWQj4eFQCCeEZU; expires=Tue, 10 Jun 2025 12:23:14 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: est

Contacts

Show

requires authentication

Returns single contact

Example request:
curl --request GET \
    --get "https://api.qplet.dev/v1/contact/modi" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/contact/modi"
);

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 = 'https://api.qplet.dev/v1/contact/modi';
$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=pOyIOxm8opOnhSmhCeGawx8ZOSjySTBhgnGwie2F; expires=Tue, 10 Jun 2025 12:23:14 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: modi

List

requires authentication

Endpoint for fetching list of contacts

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=plpHbMO17oS5XZ2hLYtbPckEapDqHkfRXI0lJSlf; expires=Tue, 10 Jun 2025 12:23:14 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 \
    "https://api.qplet.dev/v1/contact/earum" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/contact/earum"
);

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 = 'https://api.qplet.dev/v1/contact/earum';
$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=EooIemBzf3wW9xaFaMc7UyOh45k38n9KQNzKC23q; expires=Tue, 10 Jun 2025 12:23:14 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: earum

Store

Create a contact with optionally shared entity

Example request:
curl --request POST \
    "https://api.qplet.dev/v1/contact" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US" \
    --data "{
    \"name\": \"Dr. Rene Heaney DDS\",
    \"email\": \"devante33@yahoo.com\",
    \"message\": \"Reprehenderit maiores quis quis velit reiciendis est officia. Et assumenda quisquam quidem est odit rerum. Laboriosam quisquam voluptas ullam quae et. Laborum ratione nulla magni eos et porro.\"
}"
const url = new URL(
    "https://api.qplet.dev/v1/contact"
);

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

let body = {
    "name": "Dr. Rene Heaney DDS",
    "email": "devante33@yahoo.com",
    "message": "Reprehenderit maiores quis quis velit reiciendis est officia. Et assumenda quisquam quidem est odit rerum. Laboriosam quisquam voluptas ullam quae et. Laborum ratione nulla magni eos et porro."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.qplet.dev/v1/contact';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Accept-Language' => 'en-US',
        ],
        'json' => [
            'name' => 'Dr. Rene Heaney DDS',
            'email' => 'devante33@yahoo.com',
            'message' => 'Reprehenderit maiores quis quis velit reiciendis est officia. Et assumenda quisquam quidem est odit rerum. Laboriosam quisquam voluptas ullam quae et. Laborum ratione nulla magni eos et porro.',
        ],
    ]
);
$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=TzMhVChz8WBgiD5yCrjghSfxZ9z1oAeQVAPtMmH6; expires=Tue, 10 Jun 2025 12:23:20 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f1ee896-b386-4f2d-8dd8-bb4629282bca",
        "name": "Dr. Rene Heaney DDS",
        "email": "devante33@yahoo.com",
        "message": "Reprehenderit maiores quis quis velit reiciendis est officia. Et assumenda quisquam quidem est odit rerum. Laboriosam quisquam voluptas ullam quae et. Laborum ratione nulla magni eos et porro."
    }
}
 

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: Dr. Rene Heaney DDS

email   string   

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

message   string   

Example: Reprehenderit maiores quis quis velit reiciendis est officia. Et assumenda quisquam quidem est odit rerum. Laboriosam quisquam voluptas ullam quae et. Laborum ratione nulla magni eos et porro.

Conversations

List

requires authentication

Endpoint for fetching list of conversations

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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 (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=WFdNxC5CscDKr4HGcXMJPscDXyvF3zdjYI5n1FKv; expires=Tue, 10 Jun 2025 12:23:13 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

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

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=WK9ldxKxwrvCLu5TQ121GvAxNjeZUYlzHtQAfhI8; expires=Tue, 10 Jun 2025 12:23:13 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 \
    "https://api.qplet.dev/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\"
}"
const url = new URL(
    "https://api.qplet.dev/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"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.qplet.dev/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',
        ],
    ]
);
$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=OXKUKFkd6MwqcWKlznZM8I7RKT0PiQ0ydWkNjnBH; expires=Tue, 10 Jun 2025 12:23:13 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

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

Update

requires authentication

Update own conversation

Example request:
curl --request PATCH \
    "https://api.qplet.dev/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 conversation to the private\"
}"
const url = new URL(
    "https://api.qplet.dev/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 conversation to the private"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.qplet.dev/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' => [
            '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": "Conversation",
    "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=8IU7JV7pLkczdnbQVel87Cnji8sqE2pG0cDCofzL; expires=Tue, 10 Jun 2025 12:23:14 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "message": "Server Error"
}
 

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

content   string   

Example: My conversation to the private

Delete

requires authentication

Delete own conversation

Admin can remove any conversation

Example request:
curl --request DELETE \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=lh4GuYlifBl5KmuuvMyCEVmCx0uFHLlG9sT9b9DB; expires=Tue, 10 Jun 2025 12:23:14 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

Events

Store

requires authentication

Create a event with optionally shared entity

Example request:
curl --request POST \
    "https://api.qplet.dev/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-07-10\",
    \"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(
    "https://api.qplet.dev/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-07-10",
    "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 = 'https://api.qplet.dev/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-07-10',
            '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=LCNpsvd3mhenApA4bK5jfbD93us3TJkczRH2UgXI; expires=Tue, 10 Jun 2025 12:23:11 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "id": "9f1ee889-893e-4d6b-b8dc-c53d54ed53cb",
        "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-07-10",
        "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.cil"
        },
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.cil"
        },
        "media": null,
        "tags": null,
        "created_at": 1749550991,
        "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-07-10

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 \
    "https://api.qplet.dev/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-07-10\",
    \"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(
    "https://api.qplet.dev/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-07-10",
    "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 = 'https://api.qplet.dev/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-07-10',
            '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=NwTUlXkrnPWPdK0P5t0eSmqZsQFYEacXFo6ch686; expires=Tue, 10 Jun 2025 12:23:11 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-07-10",
        "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.cil"
        },
        "cover": {
            "id": "00000000-422e-41ff-a266-2b0a093307e6",
            "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.cil"
        },
        "media": null,
        "tags": null,
        "created_at": 1743877133,
        "updated_at": 1749550991,
        "analytics": {
            "interested": 0,
            "subscribed": 3,
            "views": 9456,
            "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-07-10

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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=7i1bYkwJezPPHFupRyphuoJIYukWM1OPQEMP1ken; expires=Tue, 10 Jun 2025 12:23:11 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 "https://api.qplet.dev/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]=1&filters[date][from]=2025-06-20&filters[date][to]=2025-07-10&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(
    "https://api.qplet.dev/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]": "1",
    "filters[date][from]": "2025-06-20",
    "filters[date][to]": "2025-07-10",
    "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 = 'https://api.qplet.dev/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]' => '1',
            'filters[date][from]' => '2025-06-20',
            'filters[date][to]' => '2025-07-10',
            '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=daXo8gUV8nZMaqRyq4x8fm99UsqAaX7YQNbCfD5C; expires=Tue, 10 Jun 2025 12:23:15 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: true

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

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

filters.date.to   string  optional  

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

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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=52HqtBLryrBxGZpwh8Wi62FPJX68nYv48YLbEAhk; expires=Tue, 10 Jun 2025 12:23:15 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": "Ea id aperiam facere nam.",
        "content": "Dolores porro est sunt autem ut iste aliquid fugiat. Sit rem explicabo laudantium expedita.",
        "date": "2014-05-15",
        "time": "16:01:06",
        "type": "offline",
        "location": "59220 Ullrich Walks\nMelbaberg, OR 02902",
        "seats": "100",
        "free_seats": 97,
        "website": "https://www.zboncak.info/et-non-eaque-tempore",
        "media": null,
        "tags": null,
        "is_subscribed": true,
        "created_at": 1743877133,
        "analytics": {
            "interested": 0,
            "subscribed": 3,
            "views": 9456,
            "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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=ICMR7EzuwJedRfrhqgOHcMlMdzb9STMLbZ3hnmpY; expires=Tue, 10 Jun 2025 12:23:15 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": "Ea id aperiam facere nam.",
            "content": "Dolores porro est sunt autem ut iste aliquid fugiat. Sit rem explicabo laudantium expedita.",
            "date": "2014-05-15",
            "time": "16:01:06",
            "type": "offline",
            "location": "59220 Ullrich Walks\nMelbaberg, OR 02902",
            "seats": "100",
            "free_seats": 97,
            "website": "https://www.zboncak.info/et-non-eaque-tempore",
            "media": null,
            "tags": null,
            "is_subscribed": true,
            "created_at": 1743877133,
            "analytics": {
                "interested": 0,
                "subscribed": 3,
                "views": 9456,
                "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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=Av9gHGLPC3izTuVnV8SgABHpioSnZPFnOaIFYsqj; expires=Tue, 10 Jun 2025 12:23:11 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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=igkCFrnAmejohbDoJa98cbdg69TX1BEMsfUIvtdl; expires=Tue, 10 Jun 2025 12:23:11 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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=FNQDlIoYEbpwOs9kdpk51I8EGFuT1M5qMiAD3GmQ; expires=Tue, 10 Jun 2025 12:23:11 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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=qEjI81XwpWXub6Fn69lNYoRqBATYj0wbGj9iV5ow; expires=Tue, 10 Jun 2025 12:23:11 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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=VI3yQhb5qaryYhnvkPxeD5a0kAehiCyIBbepxKgS; expires=Tue, 10 Jun 2025 12:23:11 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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=wcymtmAUJz7Ruao4Oj3mxTdKrjqYPfOVOj5axRTn; expires=Tue, 10 Jun 2025 12:23:11 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": "Ea id aperiam facere nam.",
            "content": "Dolores porro est sunt autem ut iste aliquid fugiat. Sit rem explicabo laudantium expedita.",
            "date": "2014-05-15",
            "time": "16:01:06",
            "type": "offline",
            "location": "59220 Ullrich Walks\nMelbaberg, OR 02902",
            "seats": "100",
            "free_seats": 97,
            "website": "https://www.zboncak.info/et-non-eaque-tempore",
            "media": null,
            "tags": null,
            "is_subscribed": true,
            "created_at": 1743877133,
            "analytics": {
                "interested": 0,
                "subscribed": 3,
                "views": 9456,
                "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 \
    "https://api.qplet.dev/v1/like/post/culpa" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/like/post/culpa"
);

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 = 'https://api.qplet.dev/v1/like/post/culpa';
$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=yRMaC8iuCaJs4FUzrLa95bs2NRXPefw3JUUcxvGB; expires=Tue, 10 Jun 2025 12:23:15 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: culpa

Delete

requires authentication

Delete own like

Example request:
curl --request DELETE \
    "https://api.qplet.dev/v1/like/cumque/modi" \
    --header "Authorization: Bearer 3|lnvo4g0zUDVYTM6tqvVwUxP3jrt8ci8Nv8zpAbty" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/like/cumque/modi"
);

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 = 'https://api.qplet.dev/v1/like/cumque/modi';
$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=e4UKfkNHA7IXRVkOzUgEZGtslG86jkAZBwtuQ47k; expires=Tue, 10 Jun 2025 12:23:15 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: cumque

id   string   

The ID of the {entity}. Example: modi

Other

GET v1/deploy

requires authentication

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=siswcpXQwXqDaTFYHRqtpsXIRnXbXvbDL1pyZpbd; expires=Tue, 10 Jun 2025 12:23:20 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 \
    "https://api.qplet.dev/v1/search/voluptatem" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-Language: en-US"
const url = new URL(
    "https://api.qplet.dev/v1/search/voluptatem"
);

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 = 'https://api.qplet.dev/v1/search/voluptatem';
$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=zyv5ayAFWWZdL7PTjfNn1gra33EUusI451wPUMRv; expires=Tue, 10 Jun 2025 12:23:20 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": [
        {
            "id": "9e9acdb6-96aa-4b53-a3c1-53383b0fe862",
            "name": "Eaque",
            "description": null,
            "is_liked": 0,
            "entity": "album"
        },
        {
            "id": "9e9acd9e-6456-4547-9df4-a190626d9b2d",
            "title": "Eaque delectus et asperiores est.",
            "media_asset": {
                "id": "9e9acd9e-56ad-4d06-9e5b-a7102806672d",
                "url": "http://localhost:8083/v1/media-assets/9e9acd9e-56ad-4d06-9e5b-a7102806672d.mxl"
            },
            "owner": {
                "id": "9e9acd82-673d-4a96-8024-603b2c1ce346",
                "name": "Dr. Zachary Hayes",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-21c9-41f9-803b-365b9e6e357b",
                    "name": "J-Pop",
                    "tracks": 930915
                }
            ],
            "analytics": {
                "playbacks": 0,
                "likes": 0,
                "comments": 3,
                "shares": 8
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acda1-b5a5-4dc4-a51c-ae91cd87a7ba",
            "title": "Et facilis recusandae sequi quisquam sed.",
            "media_asset": {
                "id": "9e9acda1-aa82-4a59-acd7-8d3e20c5dc7e",
                "url": "http://localhost:8083/v1/media-assets/9e9acda1-aa82-4a59-acd7-8d3e20c5dc7e.wm"
            },
            "owner": {
                "id": "9e9acd82-8be9-4be1-a30f-f24f77e9204f",
                "name": "Zoie Jenkins DDS",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-1990-456d-9537-2ba8f2a30ee9",
                    "name": "Dance",
                    "tracks": 157735
                },
                {
                    "id": "9e9acd81-21c9-41f9-803b-365b9e6e357b",
                    "name": "J-Pop",
                    "tracks": 930915
                }
            ],
            "analytics": {
                "playbacks": 4,
                "likes": 0,
                "comments": 12,
                "shares": 7
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acd9f-1f38-4c98-9e39-70ded41546fd",
            "title": "Explicabo rerum mollitia commodi veritatis id beatae accusantium.",
            "media_asset": {
                "id": "9e9acd9f-18ba-4c8e-ae19-9714660d8780",
                "url": "http://localhost:8083/v1/media-assets/9e9acd9f-18ba-4c8e-ae19-9714660d8780.uvva"
            },
            "owner": {
                "id": "9e9acd82-6d8b-4004-95f7-c145cc588ae8",
                "name": "Maxime Krajcik",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-29a5-4d31-9aaa-8c91a893508a",
                    "name": "R&B",
                    "tracks": 131166
                }
            ],
            "analytics": {
                "playbacks": 8,
                "likes": 0,
                "comments": 15,
                "shares": 0
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acdb7-bcba-4d81-8ec9-be16127fc1b0",
            "name": "Blanche McLaughlin",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9e9acda4-7ca6-4152-9847-ef71d50fbd24",
            "name": "Loma King",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9e9acd97-f436-4368-b67d-7d4db8360693",
            "title": "Exercitationem magnam in ratione impedit eum unde dolores.",
            "media_asset": {
                "id": "9e9acd97-d362-4b8f-b0a4-86c3f752ede1",
                "url": "http://localhost:8083/v1/media-assets/9e9acd97-d362-4b8f-b0a4-86c3f752ede1.m3u"
            },
            "owner": {
                "id": "9e9acd82-0f28-4c21-b006-ec5330ebbe69",
                "name": "Mr. Randal Lebsack DVM",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-2117-428f-8fa5-24fddea77ab6",
                    "name": "Instrumental",
                    "tracks": 77154
                }
            ],
            "analytics": {
                "playbacks": 11,
                "likes": 0,
                "comments": 6,
                "shares": 10
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acd9e-b290-4c4e-a0c3-02cfe01bc4ba",
            "name": "Alize Reichert I",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9e9acd91-17d5-47bd-8d4d-600435a1dd07",
            "name": "Dr. Liza Eichmann",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9e9acda7-fb6b-4d13-8726-ca7e5c02be3d",
            "name": "Taurean Boehm",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9e9acd9d-3c15-4271-8542-2e50725625b1",
            "title": "Incidunt nisi delectus saepe voluptatem deleniti occaecati.",
            "media_asset": {
                "id": "9e9acd9d-3443-4801-a183-2f169248bb2c",
                "url": "http://localhost:8083/v1/media-assets/9e9acd9d-3443-4801-a183-2f169248bb2c.xdf"
            },
            "owner": {
                "id": "9e9acd82-58ac-469a-b51d-606a6a962e34",
                "name": "Curtis Bartell",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-273d-4bb1-8487-2d8103bfeb8b",
                    "name": "Opera",
                    "tracks": 478036
                }
            ],
            "analytics": {
                "playbacks": 7,
                "likes": 0,
                "comments": 1,
                "shares": 13
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acdb6-a220-4d0d-b0c6-502ad1e7082f",
            "name": "Unde",
            "description": null,
            "is_liked": 0,
            "entity": "album"
        },
        {
            "id": "9e9acdb3-3c18-4efc-8c7c-eb535820589f",
            "name": "Nikita Kovacek",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9e9acd9f-f985-47fd-931f-9669df709e0c",
            "title": "Officia velit blanditiis voluptas aliquid sit.",
            "media_asset": {
                "id": "9e9acd9f-f117-4ed9-b9e6-8c6d487d21a7",
                "url": "http://localhost:8083/v1/media-assets/9e9acd9f-f117-4ed9-b9e6-8c6d487d21a7.wvx"
            },
            "owner": {
                "id": "9e9acd82-783d-491c-bf08-4a7de87faccb",
                "name": "Maxine Ondricka",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-2611-4e3b-ba10-d47bef2de8e1",
                    "name": "Metal",
                    "tracks": 765780
                }
            ],
            "analytics": {
                "playbacks": 5,
                "likes": 0,
                "comments": 1,
                "shares": 6
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acdb6-9f10-4e24-80ae-25ebad22af54",
            "name": "Nulla",
            "description": null,
            "is_liked": 0,
            "entity": "album"
        },
        {
            "id": "9e9acdb6-8e14-42e4-95f0-ea8e2c74635f",
            "name": "Eligendi",
            "description": null,
            "is_liked": 0,
            "entity": "album"
        },
        {
            "id": "9e9acd9d-d16e-4161-9e6a-17076a39b588",
            "title": "Ab quis ea vitae perferendis nihil molestiae qui.",
            "media_asset": {
                "id": "9e9acd9d-c329-4570-b0bc-57d6b93e1e6d",
                "url": "http://localhost:8083/v1/media-assets/9e9acd9d-c329-4570-b0bc-57d6b93e1e6d.rip"
            },
            "owner": {
                "id": "9e9acd82-5d21-4623-95fd-bd4ac0b1c796",
                "name": "Leslie Bogisich",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-269f-4a19-a816-513d9014ac84",
                    "name": "New Age",
                    "tracks": 338093
                }
            ],
            "analytics": {
                "playbacks": 3,
                "likes": 0,
                "comments": 8,
                "shares": 13
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acd9c-2769-483d-b465-ad8fb61d252e",
            "name": "Prof. Bennie Crona III",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9e9acda9-757d-4844-8c32-e4b024dba207",
            "name": "Golda Harvey",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9e9acd9c-1b37-43e5-8aa7-5acf5e4686c4",
            "title": "Nam dolores inventore quia pariatur nobis fugit saepe facilis.",
            "media_asset": {
                "id": "9e9acd9c-16f0-4c42-a42a-84e65b0b6218",
                "url": "http://localhost:8083/v1/media-assets/9e9acd9c-16f0-4c42-a42a-84e65b0b6218.vcs"
            },
            "owner": {
                "id": "9e9acd82-4969-4030-b26f-39b45e6677ac",
                "name": "Hayley DuBuque Sr.",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-13dc-4152-bf89-00b4df8a0913",
                    "name": "Anime",
                    "tracks": 120823
                },
                {
                    "id": "9e9acd81-14cd-44c8-ae31-d49d4e35ee36",
                    "name": "Blues",
                    "tracks": 491640
                }
            ],
            "analytics": {
                "playbacks": 5,
                "likes": 0,
                "comments": 13,
                "shares": 12
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acd8e-21ab-46ea-b060-ffc772d32e6e",
            "name": "Jess King",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9e9acdac-1ac3-4bbd-930b-ea601af2c1f7",
            "title": "Ipsa natus esse omnis est rem eum dolores.",
            "media_asset": {
                "id": "9e9acdac-08f6-46b6-bbf9-d5d704cd998a",
                "url": "http://localhost:8083/v1/media-assets/9e9acdac-08f6-46b6-bbf9-d5d704cd998a.uva"
            },
            "owner": {
                "id": "9e9acd8b-6ba4-474d-9a32-906e46868524",
                "name": "Jessie Ward",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-1040-4302-8433-0e7757b8cfad",
                    "name": "Alternative",
                    "tracks": 413985
                }
            ],
            "analytics": {
                "playbacks": 1,
                "likes": 0,
                "comments": 9,
                "shares": 0
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acda2-a67a-4c69-86d8-723d83f0e533",
            "name": "Kaylah Hudson III",
            "avatar_url": null,
            "entity": "user"
        },
        {
            "id": "9e9acdb0-ec28-4613-af89-e39b9d13cdab",
            "title": "Iure sint et laborum vitae sit.",
            "media_asset": {
                "id": "9e9acdb0-d85b-4981-9c77-9029096caae4",
                "url": "http://localhost:8083/v1/media-assets/9e9acdb0-d85b-4981-9c77-9029096caae4.xaml"
            },
            "owner": {
                "id": "9e9acd8b-f4bc-4b06-b3ad-108c86718e2e",
                "name": "Prof. Mable Mann Jr.",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-1f61-44fd-ac6a-fcd5e7694961",
                    "name": "Hip-Hop",
                    "tracks": 423195
                }
            ],
            "analytics": {
                "playbacks": 3,
                "likes": 0,
                "comments": 7,
                "shares": 3
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acd9e-1f9e-4038-bebb-c7a0db3c5b5d",
            "title": "Sed quisquam saepe quia autem molestiae ut.",
            "media_asset": {
                "id": "9e9acd9e-1741-488b-abcc-b0f93bf2d46d",
                "url": "http://localhost:8083/v1/media-assets/9e9acd9e-1741-488b-abcc-b0f93bf2d46d.atom"
            },
            "owner": {
                "id": "9e9acd82-629c-44ff-86f9-e4c653a623dc",
                "name": "Mikel Maggio",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-13dc-4152-bf89-00b4df8a0913",
                    "name": "Anime",
                    "tracks": 120823
                },
                {
                    "id": "9e9acd81-2611-4e3b-ba10-d47bef2de8e1",
                    "name": "Metal",
                    "tracks": 765780
                },
                {
                    "id": "9e9acd81-2ad2-4cab-bdf9-54cb4017d740",
                    "name": "Reggae",
                    "tracks": 49448
                }
            ],
            "analytics": {
                "playbacks": 4,
                "likes": 0,
                "comments": 1,
                "shares": 12
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acdad-25c3-4235-9063-82b109b04e97",
            "title": "Consectetur cumque temporibus quod et deleniti amet architecto.",
            "media_asset": {
                "id": "9e9acdad-06cd-457c-8b41-b8fe23d5c492",
                "url": "http://localhost:8083/v1/media-assets/9e9acdad-06cd-457c-8b41-b8fe23d5c492.scurl"
            },
            "owner": {
                "id": "9e9acd8b-7c82-4dd5-a732-bd8df7e6b3a4",
                "name": "Adrian Effertz",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-13dc-4152-bf89-00b4df8a0913",
                    "name": "Anime",
                    "tracks": 120823
                },
                {
                    "id": "9e9acd81-1841-48f9-93ab-0439a5de9c48",
                    "name": "Country",
                    "tracks": 271119
                },
                {
                    "id": "9e9acd81-1c86-4df9-adf4-361a4eb20e3f",
                    "name": "Enka",
                    "tracks": 430413
                }
            ],
            "analytics": {
                "playbacks": 5,
                "likes": 0,
                "comments": 14,
                "shares": 12
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acd91-a3a2-4749-b755-ca71751faae7",
            "title": "Assumenda eaque omnis repudiandae enim nobis ad.",
            "media_asset": {
                "id": "9e9acd91-9809-4c9a-97b5-245fa7390628",
                "url": "http://localhost:8083/v1/media-assets/9e9acd91-9809-4c9a-97b5-245fa7390628.omdoc"
            },
            "owner": {
                "id": "9e9acd81-d396-452c-9096-66ce4d2e6104",
                "name": "Sadye Greenfelder",
                "avatar_url": null
            },
            "genres": [
                {
                    "id": "9e9acd81-1841-48f9-93ab-0439a5de9c48",
                    "name": "Country",
                    "tracks": 271119
                },
                {
                    "id": "9e9acd81-1da6-4a0e-9134-adfadb59b38b",
                    "name": "Folk",
                    "tracks": 456494
                },
                {
                    "id": "9e9acd81-290c-45a0-852c-1ea2c705ea20",
                    "name": "Progressive",
                    "tracks": 724985
                }
            ],
            "analytics": {
                "playbacks": 4,
                "likes": 0,
                "comments": 0,
                "shares": 4
            },
            "is_liked": 0,
            "entity": "track"
        },
        {
            "id": "9e9acdb6-82fe-4d85-aac7-9fb11339d03d",
            "name": "Eius",
            "description": null,
            "cover": {
                "id": "00000000-422e-41ff-a266-2b0a093307e6",
                "url": "http://localhost:8083/v1/media-assets/00000000-422e-41ff-a266-2b0a093307e6.cil",
                "filename": "sit-officiis-velit-itaquecil",
                "created_at": "2025-04-05T18:18:25+00:00",
                "type": "image",
                "analytics": {
                    "views": 1914,
                    "likes": 0,
                    "comments": 0,
                    "shares": 2
                }
            },
            "is_liked": 0,
            "entity": "album"
        }
    ]
}
 

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: voluptatem

User Settings

List

requires authentication

Endpoint for all the user settings

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=x7qoAM0Z3b4zFL9yFZZwBTXs7owE0CFdu3QuQd3Z; expires=Tue, 10 Jun 2025 12:23:10 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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=gxVse3k012EgL2CTTtAOrpZNgF4UKpgUU19FFpCh; expires=Tue, 10 Jun 2025 12:23:10 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": 63,
            "albums": 1,
            "subscribers": 151
        }
    }
}
 

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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=wcqoqsFFN0NOVxAKCjnggLzS0zoHb0PN8apkNF6F; expires=Tue, 10 Jun 2025 12:23:11 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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=TzOsJskBFEi3mIDU6zpr0uoHx6MlpCaCQTr2v42i; expires=Tue, 10 Jun 2025 12:23:11 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 \
    "https://api.qplet.dev/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\": \"veniam\"
}"
const url = new URL(
    "https://api.qplet.dev/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": "veniam"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.qplet.dev/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' => 'veniam',
        ],
    ]
);
$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=COJep2gFEBjifKj6OzUwNbxtRiNO0NNvsb7X0P72; expires=Tue, 10 Jun 2025 12:23:11 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": "veniam"
    }
}
 

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: veniam

Social

Show

requires authentication

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=wD4DS9C8HOIdwylk8OjdpfjveGFoKc8JHVL8PxKj; expires=Tue, 10 Jun 2025 12:23:11 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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=ne1kNPCZUk9Rqa2HR67PJlw71rv3FCVvTDf1zD7W; expires=Tue, 10 Jun 2025 12:23:11 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 "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=e61yA7KSfFIQlOXbUPKjoYzVjR2VFlsVlmNyeHx8; expires=Tue, 10 Jun 2025 12:23:11 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 \
    "https://api.qplet.dev/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\": \"wall\"
}"
const url = new URL(
    "https://api.qplet.dev/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": "wall"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.qplet.dev/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' => 'wall',
        ],
    ]
);
$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=i6fFRfEBLr7w2BXAn6fFq2GcQrJOor4BGwxTZznE; expires=Tue, 10 Jun 2025 12:23:11 GMT; Max-Age=7200; path=/; httponly; samesite=lax
 

{
    "data": {
        "language": "ru",
        "first_screen": "wall"
    }
}
 

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: wall

Must be one of:
  • wall
  • profile
  • player
  • albums

Notifications

Show

requires authentication

Example request:
curl --request GET \
    --get "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=t43s2OgnD18UmIa4t8cMwFKUyd7ffvQT5GBYwXvC; expires=Tue, 10 Jun 2025 12:23:11 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 \
    "https://api.qplet.dev/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(
    "https://api.qplet.dev/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 = 'https://api.qplet.dev/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=YsYJzMfkNk0CFeapeMldd8UNG4focDIWAiAwDXZQ; expires=Tue, 10 Jun 2025 12:23:11 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