MENU navbar-image

Introduction

Ette API docs

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 {YOUR_AUTH_KEY}".

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

You can retrieve your token by send request to api/v1/auth/login.

Auth

Check account state

Проверяет связку роль + телефон + email (+ ИНН компании) перед авторизацией или регистрацией
и возвращает состояние учётной записи.

Ответ всегда содержит `status`, `next_action` и `message`.

Возможные `status`: `account_active`, `pending_admin`, `account_deleted`, `account_blocked`,
`company_already_registered`, `employee_already_exists`, `organization_inactive`,
`role_mismatch`, `credentials_mismatch`, `account_not_found`, `sms_required`.

Возможные `next_action`: `login`, `reset_password`, `enter_sms`, `wait_for_admin`,
`register`, `contact_support`, `restore_account`.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/state" \
    --header "Content-Type: application/json" \
    --data "{
    \"role\": \"estate-agent\",
    \"phone\": \"ywjtuwtkzdapaz\",
    \"email\": \"alycia.skiles@example.com\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/state"
);

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

let body = {
    "role": "estate-agent",
    "phone": "ywjtuwtkzdapaz",
    "email": "alycia.skiles@example.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "status": "account_active",
        "next_action": "login",
        "message": "Учетная запись уже зарегистрирована. Войдите или восстановите пароль.",
        "actions": [
            {
                "code": "login",
                "label": "Войти"
            },
            {
                "code": "reset_password",
                "label": "Восстановить пароль"
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (422):


{
    "message": "The selected role is invalid.",
    "errors": {
        "role": [
            "The selected role is invalid."
        ]
    }
}
 

Request      

POST api/v1/auth/state

Headers

Content-Type        

Example: application/json

Body Parameters

role   string     

Example: estate-agent

Must be one of:
  • administrator
  • private-person
  • private-broker
  • estate-agent
  • estate-representative
  • builder
  • director
  • supervisor
  • mentor
  • realtor
  • lawyer
phone   string     

Поле должно быть не длиннее 25 символов. Example: ywjtuwtkzdapaz

email   string     

Поле должно быть действительным электронным адресом. Example: alycia.skiles@example.com

inn   string  optional    

Поле должно быть не длиннее 12 символов.

Login user

This endpoint allows to login user.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/login" \
    --header "Content-Type: application/json" \
    --data "{
    \"login\": \"debitis\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/login"
);

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

let body = {
    "login": "debitis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "token": "19|DCyQVNUpDoGjUQHMkOEoynd7K7Hr5wyz2S4bjQgTbe34157c",
        "type": "Bearer"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "The provided credentials are incorrect."
}
 

Request      

POST api/v1/auth/login

Headers

Content-Type        

Example: application/json

Body Parameters

login   string     

Example: debitis

Login impersonate

This endpoint allows to login user.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/login/impersonate" \
    --header "Content-Type: application/json" \
    --data "{
    \"login\": \"nihil\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/login/impersonate"
);

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

let body = {
    "login": "nihil"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "token": "19|DCyQVNUpDoGjUQHMkOEoynd7K7Hr5wyz2S4bjQgTbe34157c",
        "type": "Bearer"
    },
    "error": null,
    "message": "Success"
}
 

Example response (403):


{
    "message": "Forbidden"
}
 

Request      

POST api/v1/auth/login/impersonate

Headers

Content-Type        

Example: application/json

Body Parameters

login   string     

Example: nihil

Select role after login

requires authentication

Обменивает одноразовый `login_token`, выданный `POST /auth/login`, на access token,
привязанный к выбранной роли.

`login_token` передаётся в заголовке `Authorization: Bearer <login_token>`,
роль — в теле запроса (`role_id` либо `role` с именем роли).

Backend проверяет, что роль назначена пользователю, гасит временный токен
и выдаёт role-scoped access token. Только он открывает прикладные endpoint'ы.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/login/select-role" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/login/select-role"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "token": "19|DCyQVNUpDoGjUQHMkOEoynd7K7Hr5wyz2S4bjQgTbe34157c",
        "type": "Bearer",
        "active_role": {
            "id": "9b535d76-da75-42d5-8eb1-66f622e8ee26",
            "name": "estate-agent",
            "description": "Сотрудник агентства недвижимости"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (403):


{
    "success": false,
    "data": null,
    "error": {
        "code": 403,
        "message": "Выбранная роль не назначена пользователю."
    },
    "message": "Error"
}
 

Request      

POST api/v1/auth/login/select-role

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Body Parameters

role_id   string  optional    

This field is required when role is not present. validation.uuid Must match an existing stored value.

role   string  optional    

This field is required when role_id is not present.

Login user by phone

This endpoint allows to login user by phone.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/send_code" \
    --header "Content-Type: application/json" \
    --data "{
    \"iso_code\": \"odit\",
    \"phone\": \"voluptatum\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/send_code"
);

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

let body = {
    "iso_code": "odit",
    "phone": "voluptatum"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "token": "19|DCyQVNUpDoGjUQHMkOEoynd7K7Hr5wyz2S4bjQgTbe34157c",
        "type": "Bearer"
    },
    "error": null,
    "message": "Success"
}
 

Example response (422):


{
    "message": "The phone field format is invalid.",
    "errors": {
        "phone": [
            "The phone field format is invalid."
        ]
    }
}
 

Request      

POST api/v1/auth/send_code

Headers

Content-Type        

Example: application/json

Body Parameters

iso_code   string     

Example: odit

phone   string     

Example: voluptatum

user_id   string  optional    

Must match an existing stored value.

User Login

This endpoint allows you to authenticate a user with username and password.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/check_code?code=14269&phone=%2B79123456789" \
    --header "Content-Type: application/json" \
    --data "{
    \"code\": \"est\",
    \"phone\": \"et\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/check_code"
);

const params = {
    "code": "14269",
    "phone": "+79123456789",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

let body = {
    "code": "est",
    "phone": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "token": "1163|GIWcGWTPNVN5XnJSTCvYyPc0fV36zzrPWfHfPe6K814886a6",
        "type": "Bearer",
        "sms_status": {
            "ok": true,
            "message": "Success"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (422):


{
    "success": false,
    "data": null,
    "error": "Invalid verification code.",
    "message": "Invalid verification code."
}
 

Request      

POST api/v1/auth/check_code

Headers

Content-Type        

Example: application/json

Query Parameters

code   string     

Code to check Example: 14269

phone   string     

Phone number Example: +79123456789

Body Parameters

code   string     

Example: est

phone   string     

Example: et

Check organization registration verification code

This endpoint allows to check verification code for organization registration.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/register/send_code" \
    --header "Content-Type: application/json" \
    --data "{
    \"iso_code\": \"saepe\",
    \"phone\": \"et\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/register/send_code"
);

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

let body = {
    "iso_code": "saepe",
    "phone": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "ok": true,
        "message": "Success"
    },
    "error": null,
    "message": "Success"
}
 

Example response (422):


{
    "message": "The phone field is required.",
    "errors": {
        "phone": [
            "The phone field is required."
        ]
    }
}
 

Request      

POST api/v1/auth/register/send_code

Headers

Content-Type        

Example: application/json

Body Parameters

iso_code   string     

Example: saepe

phone   string     

Example: et

user_id   string  optional    

Must match an existing stored value.

Check registration code

This endpoint allows to check registration code.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/register/check_code" \
    --header "Content-Type: application/json" \
    --data "{
    \"code\": \"omnis\",
    \"phone\": \"impedit\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/register/check_code"
);

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

let body = {
    "code": "omnis",
    "phone": "impedit"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "ok": true,
        "message": "Success"
    },
    "error": null,
    "message": "Success"
}
 

Example response (422):


{
    "success": false,
    "data": null,
    "error": "Invalid verification code.",
    "message": "Invalid verification code."
}
 

Request      

POST api/v1/auth/register/check_code

Headers

Content-Type        

Example: application/json

Body Parameters

code   string     

Example: omnis

phone   string     

Example: impedit

Register user

This endpoint allows to register user.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/register/user" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"occaecati\",
    \"email\": \"edna.walsh@example.net\",
    \"phone\": null,
    \"password\": \"unde\",
    \"roles\": [
        \"lawyer\"
    ],
    \"confirmed\": false
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/register/user"
);

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

let body = {
    "name": "occaecati",
    "email": "edna.walsh@example.net",
    "phone": null,
    "password": "unde",
    "roles": [
        "lawyer"
    ],
    "confirmed": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "token": "1163|GIWcGWTPNVN5XnJSTCvYyPc0fV36zzrPWfHfPe6K814886a6",
    "type": "Bearer",
    "active_role": {
        "id": "9b535d76-da75-42d5-8eb1-66f622e8ee26",
        "name": "private-person",
        "description": "Частное лицо"
    }
}
 

Example response (200, Продавец: сначала подтверждение телефона, токена нет):


{
    "status": "sms_required",
    "next_action": "enter_sms",
    "message": "Подтвердите номер телефона — введите код из SMS.",
    "actions": [
        {
            "code": "enter_sms",
            "label": "Ввести код из SMS"
        }
    ],
    "user_id": "9b535d77-a626-4add-8232-e7b64370e239"
}
 

Example response (422):


{
    "message": "The email has already been taken.",
    "errors": {
        "email": [
            "The email has already been taken."
        ]
    }
}
 

Request      

POST api/v1/auth/register/user

Headers

Content-Type        

Example: application/json

Body Parameters

name   string     

Example: occaecati

email   string     

Поле должно быть действительным электронным адресом. Example: edna.walsh@example.net

phone   string     
inn   string  optional    

Must match an existing stored value.

address   object  optional    
password   string     

Example: unde

profile_photo_path   string  optional    
birthday   string  optional    
roles   string[]  optional    
Must be one of:
  • administrator
  • private-person
  • private-broker
  • estate-agent
  • estate-representative
  • builder
  • director
  • supervisor
  • mentor
  • realtor
  • lawyer
realtyExportUrl   string  optional    

Поле должно быть не длиннее 1024 символов.

realtyExportAuthToken   string  optional    

Поле должно быть не длиннее 50 символов.

confirmed   boolean     

Example: false

Register organization

This endpoint allows to register an organization.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/register/organization" \
    --header "Content-Type: application/json" \
    --data "{
    \"user\": {
        \"name\": \"velit\",
        \"email\": \"rosalia.okeefe@example.org\",
        \"phone\": \"quasi\",
        \"inn\": \"ut\",
        \"password\": \"non\",
        \"profile_photo_path\": \"in\",
        \"birthday\": \"velit\",
        \"roles\": [
            \"private-person\"
        ],
        \"realtyExportUrl\": \"http:\\/\\/williamson.com\\/delectus-aperiam-deleniti-nisi-sed-rem\",
        \"realtyExportAuthToken\": \"buxgqxkmsczioga\"
    },
    \"organization\": {
        \"id\": \"architecto\",
        \"inn\": \"voluptas\",
        \"name\": \"similique\",
        \"address\": {
            \"country\": \"iusto\",
            \"state\": \"voluptatem\",
            \"city\": \"minima\",
            \"postal_code\": \"quia\",
            \"area\": \"repellat\",
            \"street\": \"voluptatem\",
            \"street_number\": \"odio\",
            \"cadastral_number\": \"ratione\"
        },
        \"email\": \"gaylord.georgianna@example.com\",
        \"phone\": \"corporis\",
        \"type\": \"builder\"
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/register/organization"
);

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

let body = {
    "user": {
        "name": "velit",
        "email": "rosalia.okeefe@example.org",
        "phone": "quasi",
        "inn": "ut",
        "password": "non",
        "profile_photo_path": "in",
        "birthday": "velit",
        "roles": [
            "private-person"
        ],
        "realtyExportUrl": "http:\/\/williamson.com\/delectus-aperiam-deleniti-nisi-sed-rem",
        "realtyExportAuthToken": "buxgqxkmsczioga"
    },
    "organization": {
        "id": "architecto",
        "inn": "voluptas",
        "name": "similique",
        "address": {
            "country": "iusto",
            "state": "voluptatem",
            "city": "minima",
            "postal_code": "quia",
            "area": "repellat",
            "street": "voluptatem",
            "street_number": "odio",
            "cadastral_number": "ratione"
        },
        "email": "gaylord.georgianna@example.com",
        "phone": "corporis",
        "type": "builder"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "ok": true,
        "message": "Success"
    },
    "error": null,
    "message": "Success"
}
 

Example response (422):


{
    "message": "The inn field must be 10 digits.",
    "errors": {
        "inn": [
            "The inn field must be 10 digits."
        ]
    }
}
 

Request      

POST api/v1/auth/register/organization

Headers

Content-Type        

Example: application/json

Body Parameters

user   object     
name   string     

Example: velit

email   string     

Поле должно быть действительным электронным адресом. Example: rosalia.okeefe@example.org

phone   string     

Example: quasi

inn   string  optional    

Must match an existing stored value. Example: ut

address   object  optional    
password   string     

Example: non

profile_photo_path   string  optional    

Example: in

birthday   string  optional    

Example: velit

roles   string[]  optional    
Must be one of:
  • administrator
  • private-person
  • private-broker
  • estate-agent
  • estate-representative
  • builder
  • director
  • supervisor
  • mentor
  • realtor
  • lawyer
realtyExportUrl   string  optional    

Поле должно быть не длиннее 1024 символов. Example: http://williamson.com/delectus-aperiam-deleniti-nisi-sed-rem

realtyExportAuthToken   string  optional    

Поле должно быть не длиннее 50 символов. Example: buxgqxkmsczioga

organization   object     
id   string  optional    

Example: architecto

inn   string     

Example: voluptas

name   string     

Example: similique

address   object     
country   string  optional    

Example: iusto

state   string  optional    

Example: voluptatem

city   string  optional    

Example: minima

postal_code   string  optional    

Example: quia

area   string  optional    

Example: repellat

street   string  optional    

Example: voluptatem

street_number   string  optional    

Example: odio

cadastral_number   string  optional    

Example: ratione

email   string     

Example: gaylord.georgianna@example.com

phone   string     

Example: corporis

type   string     

Example: builder

Must be one of:
  • builder
  • real-estate-agency
users   object  optional    
owner   object  optional    

Password Forgot

requires authentication

This endpoint allows you to password forgot.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/password/forgot" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/password/forgot"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "ok": true,
        "message": "Success"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Current password is incorrect."
}
 

Request      

POST api/v1/auth/password/forgot

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Body Parameters

email   string  optional    

Token Validate

requires authentication

This endpoint allows you to token validate.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/password/validate_token" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"received_token\": \"delectus\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/password/validate_token"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "received_token": "delectus"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "valid": true
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "success": false,
    "data": {
        "valid": false
    },
    "error": "Token is invalid.",
    "message": "Token is invalid."
}
 

Request      

POST api/v1/auth/password/validate_token

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

received_token   string     

Example: delectus

Password Reset

requires authentication

Меняет пароль по токену из письма и возвращает одноразовый `login_token`
со списком ролей — дальше фронт идёт в `POST /auth/login/select-role`,
как после обычного логина.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/password/reset" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"password\": \"-eZ~I+iN?\",
    \"token\": \"cupiditate\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/password/reset"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "-eZ~I+iN?",
    "token": "cupiditate"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "login_token": "19|DCyQVNUpDoGjUQHMkOEoynd7K7Hr5wyz2S4bjQgTbe34157c",
        "type": "Bearer",
        "roles": [
            {
                "id": "9b535d76-da75-42d5-8eb1-66f622e8ee26",
                "name": "estate-agent",
                "description": "Сотрудник агентства недвижимости"
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "Invalid or expired reset token."
}
 

Request      

POST api/v1/auth/password/reset

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

password   string     

Example: -eZ~I+iN?

token   string     

Example: cupiditate

User Logout

requires authentication

Отзывает текущий токен: role-scoped access token либо временный login-токен.
Остальные сессии пользователя (другие устройства, другие выбранные роли) продолжают работать.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/logout" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/logout"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/v1/auth/logout

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Switch active role

requires authentication

Меняет активную роль без повторного входа: действующий access token обменивается
на токен другой роли, уже назначенной пользователю.

Текущий токен передаётся в заголовке `Authorization: Bearer <access_token>`,
новая роль — в теле (`role_id` либо `role` с именем роли).

Старый токен гасится: продолжать работать под прежней ролью после смены нельзя.
Временный `login_token` для смены роли не подходит — используйте `/auth/login/select-role`.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/login/switch-role" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/login/switch-role"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "token": "20|hxYbbSSbYSVg8BYLDm4kklRTBvoHwnOP9uJpQqEqb6104694",
        "type": "Bearer",
        "active_role": {
            "id": "9b535d76-da75-42d5-8eb1-66f622e8ee26",
            "name": "builder",
            "description": "Застройщик"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (403):


{
    "success": false,
    "data": null,
    "error": {
        "code": 403,
        "message": "Выбранная роль не назначена пользователю."
    },
    "message": "Error"
}
 

Request      

POST api/v1/auth/login/switch-role

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Body Parameters

role_id   string  optional    

This field is required when role is not present. validation.uuid Must match an existing stored value.

role   string  optional    

This field is required when role_id is not present.

Admin Auth User

requires authentication

This endpoint allows you to admin auth user.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/auth/user/a00e73ba-d70a-43dd-bacf-4464fffedaa2" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/user/a00e73ba-d70a-43dd-bacf-4464fffedaa2"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "token": "23|PjPN45xC7x80qzq6wL7A2N8Y2qf2rKJQ6EZyaYp9",
        "type": "Bearer"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "User not found."
}
 

Request      

POST api/v1/auth/user/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the user. Example: a00e73ba-d70a-43dd-bacf-4464fffedaa2

Delete realty contacts

requires authentication

This endpoint allows you to delete realty contacts.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/realty/contacts/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/contacts/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "status": "Hard deleted"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/realty/contacts/{realty_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Auth user info

requires authentication

This endpoint allows you to get authenticated user information.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/auth/user" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/user"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
        "name": "Example manager",
        "birthday": "",
        "email": "manager@example.com",
        "phone": {
            "value": "+79209773366"
        },
        "profile_photo_path": null,
        "roles": [
            {
                "id": "9b535d76-da75-42d5-8eb1-66f622e8ee26",
                "name": "user manager",
                "description": "User manager"
            }
        ],
        "descendant_roles": [],
        "department": null,
        "permissions": [
            {
                "name": "create_user",
                "description": ""
            }
        ],
        "modals": [],
        "organization": {
            "id": "9b535d77-a626-4add-8232-e7b64370e239",
            "inn": "123456789"
        },
        "created_at": "2024-02-13 11 =>25 =>26"
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/auth/user

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Blog

Delete Tag

requires authentication

This endpoint allows you to delete Tag.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/tags/9b535d77-c996-41bb-8627-051dfdca9309" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/tags/9b535d77-c996-41bb-8627-051dfdca9309"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "status": "soft_deleted"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/tags/{tag_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

tag_id   string     

The ID of the tag. Example: 9b535d77-c996-41bb-8627-051dfdca9309

id   string     

The ID of the tag Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Get All Blog Article

requires authentication

This endpoint allows you to get All Blog Articles.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/articles" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "articles": [
            {
                "id": "9a0f6075-2e5f-455c-b5cc-3e2ac5c50189",
                "title": "Test article",
                "category": {
                    "id": "99fcf286-a8ae-48dd-a873-c7a958ff04a8",
                    "name": "Test category"
                },
                "text": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                "images": [
                    {
                        "folder_name": "news",
                        "images": [
                            {
                                "id": 92521,
                                "mime_type": "image/jpeg",
                                "name": "640-1920x1080",
                                "original_url": "http://api.ette.local/storage/92521/640-1920x1080.jpg",
                                "is_main": true,
                                "just_for_me": false
                            },
                            {
                                "id": 92522,
                                "mime_type": "image/jpeg",
                                "name": "640-1920x1080",
                                "original_url": "http://api.ette.local/storage/92522/640-1920x1080.jpg",
                                "is_main": false,
                                "just_for_me": false
                            }
                        ]
                    }
                ],
                "status": "published",
                "created_at": "2023-09-05 10=>05=>34"
            }
        ],
        "links": {
            "first": "http://localhost/api/v1/articles?page=1",
            "last": "http://localhost/api/v1/articles?page=1",
            "prev": null,
            "next": null
        },
        "meta": {
            "current_page": 1,
            "from": 1,
            "last_page": 1,
            "links": [
                {
                    "url": null,
                    "label": "pagination.previous",
                    "active": false
                },
                {
                    "url": "http://localhost/api/v1/articles?page=1",
                    "label": "1",
                    "active": true
                },
                {
                    "url": null,
                    "label": "pagination.next",
                    "active": false
                }
            ],
            "path": "http://localhost/api/v1/articles",
            "per_page": 15,
            "to": 1,
            "total": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/articles

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Show Blog Article

requires authentication

This endpoint allows you to get Blog Article by UUID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/articles/a02a6ef8-025a-4d83-b1a8-9f970916b7d2/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles/a02a6ef8-025a-4d83-b1a8-9f970916b7d2/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "article": {
            "id": "9a0f6075-2e5f-455c-b5cc-3e2ac5c50189",
            "title": "Test article",
            "category": {
                "id": "99fcf286-a8ae-48dd-a873-c7a958ff04a8",
                "name": "Test category"
            },
            "text": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
            "images": [
                {
                    "folder_name": "news",
                    "images": [
                        {
                            "id": 92521,
                            "mime_type": "image/jpeg",
                            "name": "640-1920x1080",
                            "original_url": "http://api.ette.local/storage/92521/640-1920x1080.jpg",
                            "is_main": true,
                            "just_for_me": false
                        },
                        {
                            "id": 92522,
                            "mime_type": "image/jpeg",
                            "name": "640-1920x1080",
                            "original_url": "http://api.ette.local/storage/92522/640-1920x1080.jpg",
                            "is_main": false,
                            "just_for_me": false
                        }
                    ]
                }
            ],
            "status": "published",
            "created_at": "2023-09-05 10=>05=>34"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/articles/{article_id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

article_id   string     

The ID of the article. Example: a02a6ef8-025a-4d83-b1a8-9f970916b7d2

id   string     

The ID of the blog article Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Delete Blog Article

requires authentication

This endpoint allows you to delete Blog Article.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/articles/a02a6ef8-025a-4d83-b1a8-9f970916b7d2" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles/a02a6ef8-025a-4d83-b1a8-9f970916b7d2"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/articles/{article_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

article_id   string     

The ID of the article. Example: a02a6ef8-025a-4d83-b1a8-9f970916b7d2

id   string     

The ID of the blog article Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Create Blog Article

requires authentication

This endpoint allows you to create Blog Article.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/articles" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"title\": \"nyfgmadrznezszdfpizdeig\",
    \"text\": \"debitis\",
    \"article_category_id\": \"107954d0-31a4-3470-961b-73641c019482\",
    \"status\": \"draft\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "nyfgmadrznezszdfpizdeig",
    "text": "debitis",
    "article_category_id": "107954d0-31a4-3470-961b-73641c019482",
    "status": "draft"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "article": {
            "id": "9a0f6075-2e5f-455c-b5cc-3e2ac5c50189",
            "title": "Test article",
            "category": {
                "id": "99fcf286-a8ae-48dd-a873-c7a958ff04a8",
                "name": "Test category"
            },
            "text": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
            "images": [
                {
                    "folder_name": "news",
                    "images": [
                        {
                            "id": 92521,
                            "mime_type": "image/jpeg",
                            "name": "640-1920x1080",
                            "original_url": "http://api.ette.local/storage/92521/640-1920x1080.jpg",
                            "is_main": true,
                            "just_for_me": false
                        },
                        {
                            "id": 92522,
                            "mime_type": "image/jpeg",
                            "name": "640-1920x1080",
                            "original_url": "http://api.ette.local/storage/92522/640-1920x1080.jpg",
                            "is_main": false,
                            "just_for_me": false
                        }
                    ]
                }
            ],
            "status": "published",
            "created_at": "2023-09-05 10=>05=>34"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/articles

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

title   string     

Поле должно быть не длиннее 255 символов. Example: nyfgmadrznezszdfpizdeig

text   string     

Example: debitis

article_category_id   string     

validation.uuid Must match an existing stored value. Example: 107954d0-31a4-3470-961b-73641c019482

images   object  optional    

Поле должно содержать не более 5 элементов.

status   string     

Example: draft

Must be one of:
  • draft
  • published

Update Blog Article

requires authentication

This endpoint allows you to Update Blog Article.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/articles/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"edfc79b3-5cf1-3e28-9398-a4c1ca2d41b9\",
    \"title\": \"klyrrdrpucg\",
    \"text\": \"esse\",
    \"article_category_id\": \"3cea5b35-5519-3813-9a88-ec288a50d7a7\",
    \"status\": \"draft\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "edfc79b3-5cf1-3e28-9398-a4c1ca2d41b9",
    "title": "klyrrdrpucg",
    "text": "esse",
    "article_category_id": "3cea5b35-5519-3813-9a88-ec288a50d7a7",
    "status": "draft"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "article": {
            "id": "9a0f6075-2e5f-455c-b5cc-3e2ac5c50189",
            "title": "Test article",
            "category": {
                "id": "99fcf286-a8ae-48dd-a873-c7a958ff04a8",
                "name": "Test category"
            },
            "text": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
            "images": [
                {
                    "folder_name": "news",
                    "images": [
                        {
                            "id": 92521,
                            "mime_type": "image/jpeg",
                            "name": "640-1920x1080",
                            "original_url": "http://api.ette.ru/storage/92521/640-1920x1080.jpg",
                            "is_main": true,
                            "just_for_me": false
                        },
                        {
                            "id": 92522,
                            "mime_type": "image/jpeg",
                            "name": "640-1920x1080",
                            "original_url": "http://api.ette.ru/storage/92522/640-1920x1080.jpg",
                            "is_main": false,
                            "just_for_me": false
                        }
                    ]
                }
            ],
            "status": "published",
            "created_at": "2023-09-05 10=>05=>34"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/articles/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the blog article Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: edfc79b3-5cf1-3e28-9398-a4c1ca2d41b9

title   string  optional    

Поле должно быть не длиннее 255 символов. Example: klyrrdrpucg

text   string  optional    

Example: esse

article_category_id   string  optional    

validation.uuid Must match an existing stored value. Example: 3cea5b35-5519-3813-9a88-ec288a50d7a7

images   object  optional    

Поле должно содержать не более 5 элементов.

status   string  optional    

Example: draft

Must be one of:
  • draft
  • published

Update Blog Article Status

requires authentication

This endpoint allows you to Update Blog Article Status.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/articles/status/894fe12e-0304-35a2-bb49-e5f3b664e51e" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"5f644641-9da7-36d1-bf8e-b4513db97d69\",
    \"status\": \"draft\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles/status/894fe12e-0304-35a2-bb49-e5f3b664e51e"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "5f644641-9da7-36d1-bf8e-b4513db97d69",
    "status": "draft"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "article": {
            "id": "9a0f6075-2e5f-455c-b5cc-3e2ac5c50189",
            "title": "Test article",
            "category": {
                "id": "99fcf286-a8ae-48dd-a873-c7a958ff04a8",
                "name": "Test category"
            },
            "text": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
            "images": [
                {
                    "folder_name": "news",
                    "images": [
                        {
                            "id": 92521,
                            "mime_type": "image/jpeg",
                            "name": "640-1920x1080",
                            "original_url": "http://api.ette.local/storage/92521/640-1920x1080.jpg",
                            "is_main": true,
                            "just_for_me": false
                        },
                        {
                            "id": 92522,
                            "mime_type": "image/jpeg",
                            "name": "640-1920x1080",
                            "original_url": "http://api.ette.local/storage/92522/640-1920x1080.jpg",
                            "is_main": false,
                            "just_for_me": false
                        }
                    ]
                }
            ],
            "status": "published",
            "created_at": "2023-09-05 10=>05=>34"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/articles/status/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the blog article Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: 5f644641-9da7-36d1-bf8e-b4513db97d69

status   string     

Example: draft

Must be one of:
  • draft
  • published

Get All Blog Category

requires authentication

is endpoint allows you to get All Blog Category.

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/articles-categories" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles-categories"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "article_categories": [
            {
                "id": "9a2233075-2e5f-455c-b5cc-3e2ac5c50189",
                "name": "titlename2",
                "article_count": 11
            },
            {
                "id": "9a0f6075-2e5f-455c-b5cc-3e2ac5c50189",
                "name": "titlename",
                "article_count": 15
            }
        ]
    },
    "links": {
        "first": "http://localhost/api/v1/articles-categories?page=1",
        "last": "http://localhost/api/v1/articles-categorie?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "pagination.previous",
                "active": false
            },
            {
                "url": "http://localhost/api/v1/articles-categorie?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "pagination.next",
                "active": false
            }
        ],
        "path": "http://localhost/api/v1/articles-categorie",
        "per_page": 15,
        "to": 1,
        "total": 1
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/articles-categories

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Show Blog Category

requires authentication

is endpoint allows you to show Blog Category.

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/articles-categories/0b94fe53-811c-4d23-b1d5-4f842f9b8b30/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles-categories/0b94fe53-811c-4d23-b1d5-4f842f9b8b30/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "article_category": {
            "id": "9a0f6075-2e5f-455c-b5cc-3e2ac5c50189",
            "name": "titlename",
            "articles": [
                {
                    "id": "9a0f6075-2e5f-455c-b5cc-3e2ac5c50189",
                    "title": "aaa22",
                    "created_at": "2023-09-05 10=>05=>34",
                    "image": {
                        "3e77eca5-ad48-43b7-99b-4369bea3806a": {
                            "name": "joda",
                            "file_name": "joda.jpeg",
                            "uuid": "3е77eca5-ad48-43b7-99b-4369bea3806a",
                            "preview_url": "",
                            "original_url": "http://localhost/storage/100/ioda.jpeg",
                            "order": 1,
                            "custom properties": [],
                            "extension": "jpeg",
                            "size": "7112"
                        }
                    }
                }
            ]
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/articles-categories/{articleCategory_id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

articleCategory_id   string     

The ID of the articleCategory. Example: 0b94fe53-811c-4d23-b1d5-4f842f9b8b30

id   string     

The ID of the blog category Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Delete Blog Category

requires authentication

This endpoint allows you to delete Blog Category.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/articles-categories/0b94fe53-811c-4d23-b1d5-4f842f9b8b30" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles-categories/0b94fe53-811c-4d23-b1d5-4f842f9b8b30"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/articles-categories/{articleCategory_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

articleCategory_id   string     

The ID of the articleCategory. Example: 0b94fe53-811c-4d23-b1d5-4f842f9b8b30

id   string     

The ID of the blog category Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Create Blog Category

requires authentication

is endpoint allows you to create Blog Category.

Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/articles-categories" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"gjkoxddjbry\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles-categories"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

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

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "article_category": {
            "id": "9a0f6075-2e5f-455c-b5cc-3e2ac5c50189",
            "name": "titlename",
            "articles": []
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/articles-categories

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Поле должно быть не длиннее 255 символов. Example: gjkoxddjbry

Update Blog Category

requires authentication

is endpoint allows you to update Blog Category.
Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/articles-categories/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"10b714f0-7270-3c56-9871-3b99cac31888\",
    \"name\": \"xdvrdcqbzcpjvosxrdvsg\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/articles-categories/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "10b714f0-7270-3c56-9871-3b99cac31888",
    "name": "xdvrdcqbzcpjvosxrdvsg"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "article_category": {
            "id": "9a0f6075-2e5f-455c-b5cc-3e2ac5c50189",
            "name": "titlename",
            "articles": []
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/articles-categories/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the blog category Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: 10b714f0-7270-3c56-9871-3b99cac31888

name   string     

Поле должно быть не длиннее 255 символов. Example: xdvrdcqbzcpjvosxrdvsg

Chat

Get All Conversations

requires authentication

This endpoint allows you to get All Conversation.

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/chats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/chats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Show Conversation

requires authentication

This endpoint allows you to get Conversation by UUID.

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/chats/894fe12e-0304-35a2-bb49-e5f3b664e51e/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chats/894fe12e-0304-35a2-bb49-e5f3b664e51e/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/chats/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the conversation Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Create Conversation

requires authentication

This endpoint allows you to create Conversation.

Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chats/create" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"realty_id\": \"5e6b5998-703f-3592-b58f-7e42b80c8649\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chats/create"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "realty_id": "5e6b5998-703f-3592-b58f-7e42b80c8649"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chats/create

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

realty_id   string     

validation.uuid Must match an existing stored value. Example: 5e6b5998-703f-3592-b58f-7e42b80c8649

Update Conversation

requires authentication

This endpoint allows you to update Conversation.

Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/chats/update/894fe12e-0304-35a2-bb49-e5f3b664e51e" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"cde1a4c1-1210-3b0d-affd-cad2a5e02ac1\",
    \"realty_id\": \"a1eb434f-aa93-33ec-8af2-32136d6dedae\",
    \"status\": \"rejected\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chats/update/894fe12e-0304-35a2-bb49-e5f3b664e51e"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "cde1a4c1-1210-3b0d-affd-cad2a5e02ac1",
    "realty_id": "a1eb434f-aa93-33ec-8af2-32136d6dedae",
    "status": "rejected"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/chats/update/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the conversation Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: cde1a4c1-1210-3b0d-affd-cad2a5e02ac1

realty_id   string     

validation.uuid Must match an existing stored value. Example: a1eb434f-aa93-33ec-8af2-32136d6dedae

status   string     

Example: rejected

Must be one of:
  • open
  • closed
  • rejected
  • archive

Create Message

requires authentication

This endpoint allows you to create Message.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chats/message/send" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"body\": \"laudantium\",
    \"reply_to_id\": \"ce116da6-53f2-380a-bf54-88426304c589\",
    \"conversation_id\": \"21a2ecba-5a36-342d-80b6-889d49052965\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chats/message/send"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "body": "laudantium",
    "reply_to_id": "ce116da6-53f2-380a-bf54-88426304c589",
    "conversation_id": "21a2ecba-5a36-342d-80b6-889d49052965"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chats/message/send

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

body   string     

Example: laudantium

reply_to_id   string  optional    

validation.uuid Must match an existing stored value. Example: ce116da6-53f2-380a-bf54-88426304c589

conversation_id   string     

validation.uuid Must match an existing stored value. Example: 21a2ecba-5a36-342d-80b6-889d49052965

Get Messages By Conversation ID

requires authentication

This endpoint allows you to get Message by conversation id.

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/chats/message/repudiandae" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chats/message/repudiandae"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/chats/message/{conversation_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

conversation_id   string     

The ID of the conversation. Example: repudiandae

Chess

Complex Create

requires authentication

This endpoint allows you to complex create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/complexes" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"eveniet\",
    \"address\": {
        \"country\": \"hic\",
        \"state\": \"omnis\",
        \"city\": \"tempora\",
        \"postal_code\": \"beatae\",
        \"area\": \"placeat\",
        \"street\": \"et\",
        \"street_number\": \"sequi\",
        \"cadastral_number\": \"aperiam\"
    },
    \"location\": [],
    \"is_published\": 14279259,
    \"is_completed\": 267.1,
    \"status\": \"published\",
    \"completion_date\": \"2026-09-10T11:20:54\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/complexes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "eveniet",
    "address": {
        "country": "hic",
        "state": "omnis",
        "city": "tempora",
        "postal_code": "beatae",
        "area": "placeat",
        "street": "et",
        "street_number": "sequi",
        "cadastral_number": "aperiam"
    },
    "location": [],
    "is_published": 14279259,
    "is_completed": 267.1,
    "status": "published",
    "completion_date": "2026-09-10T11:20:54"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/complexes

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Example: eveniet

address   object     
country   string  optional    

Example: hic

state   string  optional    

Example: omnis

city   string  optional    

Example: tempora

postal_code   string  optional    

Example: beatae

area   string  optional    

Example: placeat

street   string  optional    

Example: et

street_number   string  optional    

Example: sequi

cadastral_number   string  optional    

Example: aperiam

location   object     
is_published   number     

Example: 14279259

is_completed   number     

Example: 267.1

status   string     

Example: published

Must be one of:
  • draft
  • published
completion_date   string  optional    

Поле не является датой. Example: 2026-09-10T11:20:54

Complex Show

requires authentication

This endpoint allows you to complex show.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/complexes/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/complexes/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/complexes/{realty_id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Complex Update

requires authentication

This endpoint allows you to complex update.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/complexes/delectus/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"573fd411-6519-3387-9af2-bb0de492b887\",
    \"user_id\": \"1cd8f031-9ed7-3be5-ab24-733c4d8cf54f\",
    \"name\": \"ghq\",
    \"address\": {
        \"country\": \"qui\",
        \"state\": \"facere\",
        \"city\": \"ut\",
        \"postal_code\": \"molestiae\",
        \"area\": \"iure\",
        \"street\": \"sit\",
        \"street_number\": \"iusto\",
        \"cadastral_number\": \"dolores\"
    },
    \"is_published\": false,
    \"is_completed\": true,
    \"completion_date\": \"2026-09-10T11:20:54\",
    \"completionDate\": []
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/complexes/delectus/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "573fd411-6519-3387-9af2-bb0de492b887",
    "user_id": "1cd8f031-9ed7-3be5-ab24-733c4d8cf54f",
    "name": "ghq",
    "address": {
        "country": "qui",
        "state": "facere",
        "city": "ut",
        "postal_code": "molestiae",
        "area": "iure",
        "street": "sit",
        "street_number": "iusto",
        "cadastral_number": "dolores"
    },
    "is_published": false,
    "is_completed": true,
    "completion_date": "2026-09-10T11:20:54",
    "completionDate": []
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/complexes/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the complex. Example: delectus

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: 573fd411-6519-3387-9af2-bb0de492b887

user_id   string  optional    

validation.uuid Must match an existing stored value. Example: 1cd8f031-9ed7-3be5-ab24-733c4d8cf54f

name   string  optional    

Поле должно быть не длиннее 255 символов. Example: ghq

address   object  optional    
country   string  optional    

Example: qui

state   string  optional    

Example: facere

city   string  optional    

Example: ut

postal_code   string  optional    

Example: molestiae

area   string  optional    

Example: iure

street   string  optional    

Example: sit

street_number   string  optional    

Example: iusto

cadastral_number   string  optional    

Example: dolores

location   object  optional    
is_published   boolean  optional    

Example: false

is_completed   boolean  optional    

Example: true

completion_date   string  optional    

Поле не является датой. Example: 2026-09-10T11:20:54

completionDate   object     

Complex Delete

requires authentication

This endpoint allows you to complex delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/complexes/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/complexes/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/complexes/{realty_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Building Update

requires authentication

This endpoint allows you to building update.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/buildings/doloremque/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"quod\",
    \"user_id\": \"7eced79e-df40-380d-babc-dddce0381fee\",
    \"complex_id\": \"62a0b1e0-c976-3cb9-b968-10a1d30f5ab3\",
    \"name\": \"ycspcwhxybmnujshvgukw\",
    \"is_published\": true,
    \"is_completed\": true,
    \"completion_date\": \"2026-09-10T11:20:55\",
    \"sort_order\": 113.77291486,
    \"completionDate\": []
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/buildings/doloremque/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "quod",
    "user_id": "7eced79e-df40-380d-babc-dddce0381fee",
    "complex_id": "62a0b1e0-c976-3cb9-b968-10a1d30f5ab3",
    "name": "ycspcwhxybmnujshvgukw",
    "is_published": true,
    "is_completed": true,
    "completion_date": "2026-09-10T11:20:55",
    "sort_order": 113.77291486,
    "completionDate": []
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/buildings/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the building. Example: doloremque

Body Parameters

id   string     

Example: quod

user_id   string  optional    

validation.uuid Must match an existing stored value. Example: 7eced79e-df40-380d-babc-dddce0381fee

complex_id   string  optional    

validation.uuid Must match an existing stored value. Example: 62a0b1e0-c976-3cb9-b968-10a1d30f5ab3

name   string  optional    

Поле должно быть не длиннее 255 символов. Example: ycspcwhxybmnujshvgukw

is_published   boolean  optional    

Example: true

is_completed   boolean  optional    

Example: true

completion_date   string  optional    

Поле не является датой. Example: 2026-09-10T11:20:55

sort_order   number  optional    

Example: 113.77291486

completionDate   object     

Building Delete

requires authentication

This endpoint allows you to building delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/buildings/minus" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/buildings/minus"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/buildings/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the building. Example: minus

Property Bindings Show

requires authentication

This endpoint allows you to property bindings show.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/chess/binding/dignissimos/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/binding/dignissimos/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/chess/binding/{buildingId}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

buildingId   string     

Example: dignissimos

Realty Binding Update

requires authentication

This endpoint allows you to realty binding update.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/chess/binding" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"realty_id\": \"8d0c22b1-1b89-3aec-b50e-5a8d58d11817\",
    \"property_id\": \"8abfd413-c6ed-3fd4-b7df-77df1a7c07bc\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/binding"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "realty_id": "8d0c22b1-1b89-3aec-b50e-5a8d58d11817",
    "property_id": "8abfd413-c6ed-3fd4-b7df-77df1a7c07bc"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/chess/binding

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

realty_id   string  optional    

validation.uuid. Example: 8d0c22b1-1b89-3aec-b50e-5a8d58d11817

property_id   string  optional    

validation.uuid. Example: 8abfd413-c6ed-3fd4-b7df-77df1a7c07bc

Realty Binding Delete

requires authentication

This endpoint allows you to realty binding delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/chess/binding/et" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/binding/et"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/chess/binding/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the binding. Example: et

Realty Binding Create

requires authentication

This endpoint allows you to realty binding create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess/binding" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_id\": \"6819abc3-c9d6-36e4-a763-528a5e79b992\",
    \"type_id\": \"3fb70e1e-e8c1-3847-9ff2-e9863bdbbe6d\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/binding"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "property_id": "6819abc3-c9d6-36e4-a763-528a5e79b992",
    "type_id": "3fb70e1e-e8c1-3847-9ff2-e9863bdbbe6d"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess/binding

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

property_id   string     

validation.uuid Must match an existing stored value. Example: 6819abc3-c9d6-36e4-a763-528a5e79b992

type_id   string     

validation.uuid Must match an existing stored value. Example: 3fb70e1e-e8c1-3847-9ff2-e9863bdbbe6d

Realty Binding Show

requires authentication

This endpoint allows you to realty binding show.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/chess/binding/realty/aut/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/binding/realty/aut/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/chess/binding/realty/{realtyId}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realtyId   string     

Example: aut

Empty Cells Update

requires authentication

This endpoint allows you to empty cells update.
Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/chess/empty-cells" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"changed_cells\": [
        \"af470d5f-1403-3b03-adfb-ef90d75a8c76\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/empty-cells"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "changed_cells": [
        "af470d5f-1403-3b03-adfb-ef90d75a8c76"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/chess/empty-cells

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

changed_cells   string[]  optional    

validation.uuid Must match an existing stored value.

Property Update

requires authentication

This endpoint allows you to property update.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/chess/single-edit/quidem/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"e396dfae-fe55-3ff0-a4e3-860d496b7f2c\",
    \"is_commercial\": false,
    \"square_area\": 46730112.5477251,
    \"base_decoration\": \"finishing\",
    \"number_of_rooms\": 3685750.04937041,
    \"base_price\": 72523.9992,
    \"fixed_sum\": 17217603.4129,
    \"percent_of_total\": 9211.724657,
    \"per_sqm\": 2447194.3822314,
    \"has_furniture\": false,
    \"has_decoration\": true,
    \"has_appliances\": true,
    \"discount_amount\": 203194.567108,
    \"realtor_commission\": 215688.337412,
    \"buyer_gift\": \"bgdefhvusuaedncdnrvbmo\",
    \"realtor_gift\": \"rmdexst\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/single-edit/quidem/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "e396dfae-fe55-3ff0-a4e3-860d496b7f2c",
    "is_commercial": false,
    "square_area": 46730112.5477251,
    "base_decoration": "finishing",
    "number_of_rooms": 3685750.04937041,
    "base_price": 72523.9992,
    "fixed_sum": 17217603.4129,
    "percent_of_total": 9211.724657,
    "per_sqm": 2447194.3822314,
    "has_furniture": false,
    "has_decoration": true,
    "has_appliances": true,
    "discount_amount": 203194.567108,
    "realtor_commission": 215688.337412,
    "buyer_gift": "bgdefhvusuaedncdnrvbmo",
    "realtor_gift": "rmdexst"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/chess/single-edit/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the single edit. Example: quidem

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: e396dfae-fe55-3ff0-a4e3-860d496b7f2c

is_commercial   boolean  optional    

Example: false

number   string  optional    
status   string  optional    
Must be one of:
  • sale
  • reserved
  • sold
  • assignment
  • builder-reserved
  • booking
  • action
  • investor
square   number  optional    
square_area   number  optional    

Example: 46730112.547725

base_decoration   string  optional    

Example: finishing

Must be one of:
  • rough
  • pre-finishing
  • finishing
number_of_rooms   number  optional    

Example: 3685750.0493704

comment   string  optional    
base_price   number  optional    

Example: 72523.9992

commission   number  optional    
fixed_sum   number  optional    

Example: 17217603.4129

percent_of_total   number  optional    

Example: 9211.724657

per_sqm   number  optional    

Example: 2447194.3822314

has_furniture   boolean  optional    

Example: false

has_decoration   boolean  optional    

Example: true

has_appliances   boolean  optional    

Example: true

discount_amount   number  optional    

Example: 203194.567108

realtor_commission   number  optional    

Example: 215688.337412

buyer_gift   string  optional    

Поле должно быть не длиннее 1023 символов. Example: bgdefhvusuaedncdnrvbmo

realtor_gift   string  optional    

Поле должно быть не длиннее 1023 символов. Example: rmdexst

Joined Cells Create

requires authentication

This endpoint allows you to joined cells create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess/joined-cells" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"building_id\": \"95164b90-5a05-3649-88a9-b889076b1054\",
    \"cells_to_join\": [
        {
            \"border_color\": \"dolores\",
            \"cells\": [
                \"97294e43-0894-3350-9752-9f30236d42df\"
            ]
        }
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/joined-cells"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "building_id": "95164b90-5a05-3649-88a9-b889076b1054",
    "cells_to_join": [
        {
            "border_color": "dolores",
            "cells": [
                "97294e43-0894-3350-9752-9f30236d42df"
            ]
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess/joined-cells

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

building_id   string     

validation.uuid Must match an existing stored value. Example: 95164b90-5a05-3649-88a9-b889076b1054

cells_to_join   object[]     
border_color   string     

Example: dolores

cells   string[]  optional    

validation.uuid Must match an existing stored value.

Joined Cells Update

requires authentication

This endpoint allows you to joined cells update.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/chess/joined-cells/aut/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"258c2ae2-e178-3993-9839-8e8b87973dab\",
    \"new_cells\": [
        \"faa19b01-7c78-3d3e-bbdd-c0b0b268e3d3\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/joined-cells/aut/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "258c2ae2-e178-3993-9839-8e8b87973dab",
    "new_cells": [
        "faa19b01-7c78-3d3e-bbdd-c0b0b268e3d3"
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/chess/joined-cells/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the joined cell. Example: aut

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: 258c2ae2-e178-3993-9839-8e8b87973dab

border_color   string  optional    
new_cells   string[]  optional    

validation.uuid Must match an existing stored value.

Joined Cells Delete

requires authentication

This endpoint allows you to joined cells delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/chess/joined-cells" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"joined_cells\": [
        \"3e755feb-749f-3b8a-b2d9-35f82b00e37d\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/joined-cells"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "joined_cells": [
        "3e755feb-749f-3b8a-b2d9-35f82b00e37d"
    ]
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/chess/joined-cells

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

joined_cells   string[]  optional    

validation.uuid Must match an existing stored value.

Parking Show

requires authentication

This endpoint allows you to parking show.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/chess/floor/parking/deleniti/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/floor/parking/deleniti/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/chess/floor/parking/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the parking. Example: deleniti

Parking Lot Update

requires authentication

This endpoint allows you to parking lot update.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/chess/floor/parking/lot/eaque/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"673c902f-aa4a-379f-89fa-eb4e26356dff\",
    \"floor_id\": \"0cc8264b-c432-38cb-889e-a413ad541f69\",
    \"base_price\": 0.433064,
    \"square\": 806.114350977,
    \"status\": \"sold\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/floor/parking/lot/eaque/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "673c902f-aa4a-379f-89fa-eb4e26356dff",
    "floor_id": "0cc8264b-c432-38cb-889e-a413ad541f69",
    "base_price": 0.433064,
    "square": 806.114350977,
    "status": "sold"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/chess/floor/parking/lot/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the lot. Example: eaque

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: 673c902f-aa4a-379f-89fa-eb4e26356dff

floor_id   string  optional    

validation.uuid Must match an existing stored value. Example: 0cc8264b-c432-38cb-889e-a413ad541f69

base_price   number  optional    

Example: 0.433064

square   number  optional    

Example: 806.114350977

status   string  optional    

Example: sold

Must be one of:
  • sale
  • reserved
  • sold
  • assignment
  • builder-reserved
  • booking
  • action
  • investor

Parking Lot Delete

requires authentication

This endpoint allows you to parking lot delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/chess/floor/parking/lot/vero" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/floor/parking/lot/vero"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/chess/floor/parking/lot/{parking_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

parking_id   string     

The ID of the parking. Example: vero

Parking Create

requires authentication

This endpoint allows you to parking create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess/floor/parking" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"floor_id\": \"fd999008-e705-34b3-bb3f-5b1c519f1f99\",
    \"amount\": 17,
    \"base_price\": 3.48256,
    \"square\": 2685.0306581,
    \"status\": \"sale\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/floor/parking"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "floor_id": "fd999008-e705-34b3-bb3f-5b1c519f1f99",
    "amount": 17,
    "base_price": 3.48256,
    "square": 2685.0306581,
    "status": "sale"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess/floor/parking

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

floor_id   string  optional    

validation.uuid Must match an existing stored value. Example: fd999008-e705-34b3-bb3f-5b1c519f1f99

amount   integer     

Поле должно быть не менее 1. Поле должно быть не больше 1000. Example: 17

base_price   number     

Example: 3.48256

square   number     

Example: 2685.0306581

status   string     

Example: sale

Must be one of:
  • sale
  • reserved
  • sold
  • assignment
  • builder-reserved
  • booking
  • action
  • investor

Floor Reg Create

requires authentication

This endpoint allows you to floor reg create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess/floor/regular" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"floor_id\": \"impedit\",
    \"add_direction\": \"down\",
    \"floorId\": \"7157a758-fa1b-3e38-a90c-367864a11175\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/floor/regular"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "floor_id": "impedit",
    "add_direction": "down",
    "floorId": "7157a758-fa1b-3e38-a90c-367864a11175"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess/floor/regular

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

floor_id   string     

Example: impedit

add_direction   string     

Example: down

Must be one of:
  • up
  • down
floorId   string  optional    

validation.uuid Must match an existing stored value. Example: 7157a758-fa1b-3e38-a90c-367864a11175

Floor Irreg Create

requires authentication

This endpoint allows you to floor irreg create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess/floor/irregular" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"building_id\": \"a5def8b7-491d-3192-b072-7c7a6e0933e1\",
    \"type\": \"parking\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/floor/irregular"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "building_id": "a5def8b7-491d-3192-b072-7c7a6e0933e1",
    "type": "parking"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess/floor/irregular

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

building_id   string     

validation.uuid Must match an existing stored value. Example: a5def8b7-491d-3192-b072-7c7a6e0933e1

type   string  optional    

Example: parking

Must be one of:
  • parking
  • mansard

Floor Collection Update

requires authentication

This endpoint allows you to floor collection update.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/chess/floor/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"floors\": {
        \"id\": \"9ec114b6-834a-4bae-8d99-b14fc12e3ac1\",
        \"name\": \"pcocehigvscudmgttekuvhpbb\",
        \"type\": \"parking\",
        \"number\": 44921014.340002
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/floor/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "floors": {
        "id": "9ec114b6-834a-4bae-8d99-b14fc12e3ac1",
        "name": "pcocehigvscudmgttekuvhpbb",
        "type": "parking",
        "number": 44921014.340002
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/chess/floor/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

floors   object  optional    
id   string     

validation.uuid Must match an existing stored value. Example: 9ec114b6-834a-4bae-8d99-b14fc12e3ac1

name   string  optional    

Поле должно быть не длиннее 255 символов. Example: pcocehigvscudmgttekuvhpbb

type   string  optional    

Example: parking

Must be one of:
  • regular
  • parking
  • mansard
number   number  optional    

Example: 44921014.340002

Floor List Delete

requires authentication

This endpoint allows you to floor list delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/chess/floor" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"floors\": [
        \"e4f5d9ec-f58c-3ca6-a376-ae9efbe0fab5\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/floor"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "floors": [
        "e4f5d9ec-f58c-3ca6-a376-ae9efbe0fab5"
    ]
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/chess/floor

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

floors   string[]  optional    

validation.uuid Must match an existing stored value. Must match an existing stored value.

Riser Collection Update

requires authentication

This endpoint allows you to riser collection update.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/chess/riser" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"risers\": {
        \"id\": \"9ec11483-8625-4be5-a452-76908c104d25\",
        \"square\": 15,
        \"square_area\": 1,
        \"view\": [
            \"forest_park\"
        ],
        \"number_of_rooms\": 501.7491
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/riser"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "risers": {
        "id": "9ec11483-8625-4be5-a452-76908c104d25",
        "square": 15,
        "square_area": 1,
        "view": [
            "forest_park"
        ],
        "number_of_rooms": 501.7491
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/chess/riser

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

risers   object[]  optional    
id   string     

validation.uuid Must match an existing stored value. Example: 9ec11483-8625-4be5-a452-76908c104d25

square   number  optional    

Must match the regex /^\d{1,6}(.\d{1,2})?$/. Поле должно быть не менее 0. Поле должно быть не больше 999999.99. Example: 15

square_area   number  optional    

Must match the regex /^\d{1,6}(.\d{1,2})?$/. Поле должно быть не менее 0. Поле должно быть не больше 999999.99. Example: 1

view   string[]  optional    
Must be one of:
  • sea
  • town
  • mountain
  • forest_park
  • forest
  • city
  • olympic_objects
  • river
  • yard
id   string     

validation.uuid Must match an existing stored value. Example: 64a360d6-34c8-34be-9a20-2dc4357d813f

square   number  optional    

Must match the regex /^\d{1,6}(.\d{1,2})?$/. Поле должно быть не менее 0. Поле должно быть не больше 999999.99. Example: 4

square_area   number  optional    

Must match the regex /^\d{1,6}(.\d{1,2})?$/. Поле должно быть не менее 0. Поле должно быть не больше 999999.99. Example: 23

view   object  optional    
number_of_rooms   number  optional    

Example: 5299542.2678904

number_of_rooms   number  optional    

Example: 501.7491

Riser List Delete

requires authentication

This endpoint allows you to riser list delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/chess/riser" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"risers\": [
        \"fb030108-2aac-35a4-bb17-2fc53f5d195e\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/riser"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "risers": [
        "fb030108-2aac-35a4-bb17-2fc53f5d195e"
    ]
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/chess/riser

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

risers   string[]  optional    

validation.uuid Must match an existing stored value.

Plan Index

requires authentication

This endpoint allows you to plan index.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/chess/plan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"building_id\": \"f1144eb5-61e2-3630-b2e5-c24a29f323ad\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/plan"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "building_id": "f1144eb5-61e2-3630-b2e5-c24a29f323ad"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/chess/plan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

building_id   string     

validation.uuid Must match an existing stored value. Example: f1144eb5-61e2-3630-b2e5-c24a29f323ad

Plan Upload

requires authentication

This endpoint allows you to plan upload.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess/plan/upload" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"building_id\": \"3876e3e2-f58c-3e4b-8bae-198e130c9b37\",
    \"plan_type\": \"property\",
    \"image\": \"excepturi\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/plan/upload"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "building_id": "3876e3e2-f58c-3e4b-8bae-198e130c9b37",
    "plan_type": "property",
    "image": "excepturi"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess/plan/upload

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

building_id   string     

validation.uuid Must match an existing stored value. Example: 3876e3e2-f58c-3e4b-8bae-198e130c9b37

plan_type   string     

Example: property

Must be one of:
  • floor
  • property
  • riser
image   string     

Example: excepturi

Plan Riser Upload

requires authentication

This endpoint allows you to plan riser upload.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess/plan/riser/upload" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"property_ids\": [],
    \"image\": \"optio\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/plan/riser/upload"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "property_ids": [],
    "image": "optio"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess/plan/riser/upload

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

property_ids   object     
image   string     

Example: optio

propertyIds   string[]  optional    

Must match an existing stored value.

Attachment Floors Create

requires authentication

This endpoint allows you to attachment floors create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess/plan/attachment/floors" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"plan_id\": \"4292b5ab-2581-37e8-be7e-a76215999191\",
    \"floors\": [
        \"873ad066-b47d-36ff-86ae-1b2f4a42f255\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/plan/attachment/floors"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "plan_id": "4292b5ab-2581-37e8-be7e-a76215999191",
    "floors": [
        "873ad066-b47d-36ff-86ae-1b2f4a42f255"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess/plan/attachment/floors

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

plan_id   string  optional    

validation.uuid Must match an existing stored value. Example: 4292b5ab-2581-37e8-be7e-a76215999191

floors   string[]  optional    

validation.uuid Must match an existing stored value.

Attachment Properties Create

requires authentication

This endpoint allows you to attachment properties create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess/plan/attachment/properties" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"plan_id\": \"58ddc205-7e80-3944-9039-7b2dac98ca8d\",
    \"properties\": [
        \"071f29dd-47dd-3a69-8244-3f619034f1c1\"
    ],
    \"floors\": [
        \"46a500f8-2498-3b4d-bd0b-1759cd752286\"
    ],
    \"risers\": [
        \"092cfb04-96b4-3e78-a099-4fcf2837790c\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/plan/attachment/properties"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "plan_id": "58ddc205-7e80-3944-9039-7b2dac98ca8d",
    "properties": [
        "071f29dd-47dd-3a69-8244-3f619034f1c1"
    ],
    "floors": [
        "46a500f8-2498-3b4d-bd0b-1759cd752286"
    ],
    "risers": [
        "092cfb04-96b4-3e78-a099-4fcf2837790c"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess/plan/attachment/properties

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

plan_id   string  optional    

validation.uuid Must match an existing stored value. Example: 58ddc205-7e80-3944-9039-7b2dac98ca8d

properties   string[]  optional    

validation.uuid Must match an existing stored value.

floors   string[]  optional    

validation.uuid Must match an existing stored value.

risers   string[]  optional    

validation.uuid Must match an existing stored value.

Attachment Delete

requires authentication

This endpoint allows you to attachment delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/chess/plan/attachment/sunt" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/plan/attachment/sunt"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/chess/plan/attachment/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the attachment. Example: sunt

Plan Delete

requires authentication

This endpoint allows you to plan delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/chess/plan/dicta" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/plan/dicta"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/chess/plan/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the plan. Example: dicta

Chess Duplicate

requires authentication

This endpoint allows you to chess duplicate.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/chess/duplicate/laudantium" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"buildingId\": \"10d4551a-f37a-39ff-be15-2b72da76318a\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/duplicate/laudantium"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "buildingId": "10d4551a-f37a-39ff-be15-2b72da76318a"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

GET api/v1/chess/duplicate/{buildingId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

buildingId   string     

Example: laudantium

Body Parameters

buildingId   string     

validation.uuid Must match an existing stored value. Example: 10d4551a-f37a-39ff-be15-2b72da76318a

Create chess

requires authentication

This endpoint let you get chess information.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"building_id\": \"da2b4eae-d83d-37ff-872b-9db5c879f4df\",
    \"floors_number\": 13,
    \"risers_number\": 21
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "building_id": "da2b4eae-d83d-37ff-872b-9db5c879f4df",
    "floors_number": 13,
    "risers_number": 21
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "building_id": "9c5d144d-55f5-4181-97af-48fc238a9d6d",
        "floors_count": 1,
        "risers_count": 1,
        "properties_count": 1,
        "floors": [
            {
                "id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                "name": null,
                "type": "regular",
                "number": 1,
                "total_square": 80,
                "cells_count": 5
            }
        ],
        "risers": [
            {
                "id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                "number": 1,
                "square": null,
                "square_area": 10,
                "views": null,
                "number_of_rooms": null
            }
        ],
        "properties": [
            {
                "id": "9c5d1455-9f03-4a80-9569-7ead7efed6cb",
                "realty_type_id": "9b535d77-b6b5-4682-94b1-8384913a2c37",
                "cell_id": "9c5d1455-9db4-4422-a62c-352d9d104ab4",
                "is_empty": false,
                "is_joined": false,
                "is_commercial": false,
                "square": 10,
                "square_area": 10,
                "number_of_rooms": 0,
                "number": "1",
                "int_number": "1",
                "floor_id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                "floor_type": "regular",
                "floor_number": 1,
                "riser_id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                "view": [
                    "mountain"
                ],
                "riser_number": 1,
                "base_decoration": "rough",
                "status": "sale",
                "created_at": "2024-06-24 10 =>31 =>10",
                "campaigns": {
                    "id": "9c5d1455-9f78-4977-ad2d-64e05898121c",
                    "discount_amount": null,
                    "realtor_commission": null,
                    "buyer_gift": null,
                    "realtor_gift": null
                },
                "options": {
                    "id": "9c5d1455-9ff0-4652-8de1-264f939ba273",
                    "has_furniture": false,
                    "has_decoration": false,
                    "has_appliances": false
                },
                "prices": {
                    "id": "9c5d1455-a056-4bd8-94bd-af194c94a353",
                    "base_price": 1650000,
                    "commission": "0.000",
                    "commission_type": null,
                    "fixed_sum": 0,
                    "percent_of_total": 0,
                    "per_sqm": 165000
                },
                "cells": [
                    {
                        "id": "9c5d1455-9db4-4422-a62c-352d9d104ab4",
                        "floor_id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                        "riser_id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                        "is_empty": false,
                        "is_joined": false
                    }
                ],
                "last_binding_realty_id": null,
                "last_binding_realty_owner_id": null,
                "last_binding_realty_owner_fio": null,
                "calculated_price": 1650000,
                "calculated_price_per_sqm": 165000,
                "is_info_hidden": false,
                "has_private_person_owned_realty_binding": false,
                "owned_by_user": false,
                "is_hidden": false,
                "owner_is_private_person": false,
                "all_bindings_deleted": true,
                "is_initial_bindings": false
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

building_id   string     

validation.uuid Must match an existing stored value. Example: da2b4eae-d83d-37ff-872b-9db5c879f4df

floors_number   number     

Поле должно быть не больше 163. Example: 13

risers_number   number     

Поле должно быть не больше 255. Example: 21

Building

Список корпусов шахматки

requires authentication

Пагинированный список корпусов (chess_buildings) с агрегатами и счётчиками свойств квартир, отсортированных по релевантности — корпуса с наибольшим числом подходящих под фильтр свойств квартир идут первыми.

Ключевая идея — двойная фильтрация: Эндпоинт принимает два независимых набора фильтров одновременно:

Если ни один из фильтров свойств квартир (см. ChessProperty\Filters\AllowedFilters::names()) не передан — в том числе без вложенного filter[property][...], — filtered_property_count берётся из агрегата property_sale_count без дополнительных запросов.

Поддерживается:

Примеры запросов:

# Все корпуса (первая страница, 15 записей):
GET /api/v1/buildings?page[number]=1&page[size]=15

# Корпуса конкретного ЖК, только опубликованные:
GET /api/v1/buildings?filter[complex_id]=9d7f02e7-00a6-478c-9f6f-d39f7e4ad038&filter[is_published]=1

# Поиск корпуса по названию:
GET /api/v1/buildings?filter[name]=Подъезд

# Только сданные корпуса с агрегатами:
GET /api/v1/buildings?filter[is_completed]=1&include=aggregates

# Пересчёт filtered_property_count по цене и комнатности (вложенный фильтр):
GET /api/v1/buildings?filter[property][price]=2000000,8000000&filter[property][number_of_rooms][]=2&filter[property][sale]=1

# Пересчёт через вложенные цена/м² + только в продаже:
GET /api/v1/buildings?filter[property][price_sqm]=80000,200000&filter[property][sale]=1&filter[complex_id]=9d7f02e7-00a6-478c-9f6f-d39f7e4ad038

# Комбо — фильтр корпусов + фильтр свойств квартир + include:
GET /api/v1/buildings?filter[is_completed]=1&filter[property][number_of_rooms][]=3&filter[property][options][]=has_furniture&include=aggregates&page[size]=20
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/buildings?page%5Bnumber%5D=2&page%5Bsize%5D=12&include=aut&filter%5Bcomplex_id%5D=quasi&filter%5Bname%5D=deserunt&filter%5Bis_completed%5D=1&filter%5Bis_published%5D=1&filter%5Bhouse_status%5D=autem&filter%5Bbuilding_id%5D=voluptatem&filter%5Bproperty%5D%5Bsquare%5D=et&filter%5Bproperty%5D%5Bcomplex_rooms%5D%5B%5D[]=impedit&filter%5Bproperty%5D%5Bprice%5D=maxime&filter%5Bproperty%5D%5Bprice_sqm%5D=omnis&filter%5Bproperty%5D%5Bfrom_owner%5D=1&filter%5Bproperty%5D%5Bnumber_of_rooms%5D%5B%5D[]=amet&filter%5Bproperty%5D%5Boptions%5D%5B%5D[]=illum&filter%5Bproperty%5D%5Bsale%5D=1&filter%5Bproperty%5D%5Bwindow_view%5D%5B%5D[]=ipsum" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/buildings"
);

const params = {
    "page[number]": "2",
    "page[size]": "12",
    "include": "aut",
    "filter[complex_id]": "quasi",
    "filter[name]": "deserunt",
    "filter[is_completed]": "1",
    "filter[is_published]": "1",
    "filter[house_status]": "autem",
    "filter[building_id]": "voluptatem",
    "filter[property][square]": "et",
    "filter[property][complex_rooms][][0]": "impedit",
    "filter[property][price]": "maxime",
    "filter[property][price_sqm]": "omnis",
    "filter[property][from_owner]": "1",
    "filter[property][number_of_rooms][][0]": "amet",
    "filter[property][options][][0]": "illum",
    "filter[property][sale]": "1",
    "filter[property][window_view][][0]": "ipsum",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "buildings": [
            {
                "id": "9da10d91-a358-4c75-86e4-244c12c4554a",
                "user_id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "complex_id": "9d7f02e7-00a6-478c-9f6f-d39f7e4ad038",
                "name": "Подъезд 1",
                "is_published": true,
                "is_completed": true,
                "property_count": 18,
                "sale_property_count": 5,
                "completion_date": "2021-09-30",
                "realty_created_at": "2025-04-14T04:25:00+00:00",
                "realty_updated_at": "2025-04-14T04:25:00+00:00",
                "filtered_property_count": 3
            },
            {
                "id": "9da10d93-bf01-41b8-b359-051036c51877",
                "user_id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "complex_id": "9d7f02e7-00a6-478c-9f6f-d39f7e4ad038",
                "name": "Подъезд 2",
                "is_published": true,
                "is_completed": true,
                "property_count": 20,
                "sale_property_count": 11,
                "completion_date": "2021-09-30",
                "realty_created_at": "2025-04-14T04:25:00+00:00",
                "realty_updated_at": "2025-04-14T04:25:00+00:00",
                "filtered_property_count": 8
            },
            {
                "id": "9da10d96-3b89-4520-a21a-f4bef0eb2f58",
                "user_id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "complex_id": "9d7f02e7-00a6-478c-9f6f-d39f7e4ad038",
                "name": "Подъезд 3",
                "is_published": true,
                "is_completed": true,
                "property_count": 18,
                "sale_property_count": 3,
                "completion_date": "2020-12-31",
                "realty_created_at": "2025-04-14T04:25:00+00:00",
                "realty_updated_at": "2025-04-14T04:25:00+00:00",
                "filtered_property_count": 1
            }
        ],
        "links": [
            {
                "url": null,
                "label": "pagination.previous",
                "active": false
            },
            {
                "url": "http://api.ette.local:8080/api/v1/buildings?page%5Bnumber%5D=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "pagination.next",
                "active": false
            }
        ],
        "meta": {
            "current_page": 1,
            "first_page_url": "http://api.ette.local:8080/api/v1/buildings?page%5Bnumber%5D=1",
            "from": 1,
            "last_page": 1,
            "last_page_url": "http://api.ette.local:8080/api/v1/buildings?page%5Bnumber%5D=1",
            "next_page_url": null,
            "path": "http://api.ette.local:8080/api/v1/buildings",
            "per_page": 15,
            "prev_page_url": null,
            "to": 3,
            "total": 3
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/buildings

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

page[number]   integer     

Номер страницы (JSON:API pagination).

Пример: page[number]=2 Example: 2

page[size]   integer     

Количество корпусов на странице. По умолчанию: 15. Максимум: 100 (см. конфиг json-api-paginate.max_results).

Пример: page[size]=20 Example: 12

include   string     

Список связей для подгрузки (через запятую).

Доступные значения:

  • aggregates — агрегаты корпуса: общее количество свойств квартир, свойств квартир в продаже, опубликованных свойств квартир и т.д. Используются как fallback для filtered_property_count, если фильтры свойств квартир не переданы.

Пример: include=aggregates Example: aut

filter[complex_id]   string     

Точная фильтрация по UUID жилого комплекса (chess_buildings.complex_id).

Используется для получения корпусов конкретного ЖК — самый частый сценарий вызова.

Пример: filter[complex_id]=9d7f02e7-00a6-478c-9f6f-d39f7e4ad038 Example: quasi

filter[name]   string     

Поиск по названию корпуса (частичное совпадение, LIKE %value%).

Удобен для поиска подъезда или секции по номеру или части названия.

Пример: filter[name]=Подъезд 1 Example: deserunt

filter[is_completed]   boolean     

Фильтрация по признаку сдачи корпуса (chess_buildings.is_completed, точное совпадение).

Значения: 1 — только сданные корпуса; 0 — только строящиеся.

Пример: filter[is_completed]=1 Example: true

filter[is_published]   boolean     

Фильтрация по признаку публикации корпуса (chess_buildings.is_published, точное совпадение).

Значения: 1 — только опубликованные; 0 — только скрытые.

Пример: filter[is_published]=1 Example: true

filter[house_status]   string     

Фильтр свойств квартир по статусу сдачи корпуса (на уровне связанного chess_buildings.is_completed).

Пример: filter[house_status]=built Example: autem

filter[building_id]   string     

Явное ограничение выборки свойств квартир по UUID корпуса. В контексте списка корпусов обычно не нужен — используется общей схемой ChessPropertyQuery.

Пример: filter[building_id]=9da10d91-a358-4c75-86e4-244c12c4554a Example: voluptatem

filter[property][square]   string     

Вложенный фильтр шахматки: площадь квартиры (chess_properties.square, диапазон, м²).

Пример: filter[property][square]=30,60 Example: et

filter[property][complex_rooms][]   string[]     

Вложенный фильтр: комнатность (legacy-имя complex_rooms). Целые числа; значение >= 4 — «четыре и более».

Пример: filter[property][complex_rooms][]=2&filter[property][complex_rooms][]=3

filter[property][price]   string     

Вложенный фильтр: базовая цена квартиры (chess_property_prices.base_price, диапазон).

Пример: filter[property][price]=2000000,8000000 Example: maxime

filter[property][price_sqm]   string     

Вложенный фильтр: цена за м² квартиры (chess_property_prices.per_sqm, диапазон).

Пример: filter[property][price_sqm]=80000,200000 Example: omnis

filter[property][from_owner]   boolean     

Вложенный фильтр: только квартиры от застройщика/собственника.

Пример: filter[property][from_owner]=1 Example: true

filter[property][number_of_rooms][]   string[]     

Вложенный фильтр: комнатность квартиры (1, 2, 3, more — более трёх комнат).

Пример: filter[property][number_of_rooms][]=2&filter[property][number_of_rooms][]=more

filter[property][options][]   string[]     

Вложенный фильтр: опции квартиры (has_furniture, has_decoration, has_appliances, OR).

Пример: filter[property][options][]=has_furniture

filter[property][sale]   boolean     

Вложенный фильтр: только квартиры в продаже, без парковочных этажей (ChessPropertyPropertyFilter), влияет на filtered_property_count.

Пример: filter[property][sale]=1 Example: true

filter[property][window_view][]   string[]     

Вложенный фильтр: вид из окна — JSON-поле views стояка (chess_risers, whereJsonContains).

Пример: filter[property][window_view][]=sea&filter[property][window_view][]=city

Create a building

requires authentication

This endpoint allows to create a building.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/buildings" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"user_id\": \"addb4887-ac0b-3663-9fca-3fd647a845ea\",
    \"complex_id\": \"2ecd6cd4-472f-3044-b08a-27ea2b728bc2\",
    \"name\": \"mfrftjsqhfwwevivbayvlyaik\",
    \"is_published\": true,
    \"is_completed\": false,
    \"completion_date\": \"2026-09-10T11:20:55\",
    \"sort_order\": 4889.6942
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/buildings"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": "addb4887-ac0b-3663-9fca-3fd647a845ea",
    "complex_id": "2ecd6cd4-472f-3044-b08a-27ea2b728bc2",
    "name": "mfrftjsqhfwwevivbayvlyaik",
    "is_published": true,
    "is_completed": false,
    "completion_date": "2026-09-10T11:20:55",
    "sort_order": 4889.6942
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/buildings

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

user_id   string     

validation.uuid. Example: addb4887-ac0b-3663-9fca-3fd647a845ea

complex_id   string     

validation.uuid Must match an existing stored value. Example: 2ecd6cd4-472f-3044-b08a-27ea2b728bc2

name   string     

Поле должно быть не длиннее 255 символов. Example: mfrftjsqhfwwevivbayvlyaik

is_published   boolean     

Example: true

is_completed   boolean     

Example: false

completion_date   string  optional    

Поле не является датой. Example: 2026-09-10T11:20:55

sort_order   number  optional    

Example: 4889.6942

Get chess building by ID

requires authentication

This endpoint allows you to get chess building by ID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/buildings/9ec11110-10e5-4f99-affd-0b9521c88c16/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/buildings/9ec11110-10e5-4f99-affd-0b9521c88c16/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "building": {
            "id": "9da10d91-a358-4c75-86e4-244c12c4554a",
            "user_id": "99ef4f19-6d18-4576-81a3-71282a90f645",
            "complex_id": "9d7f02e7-00a6-478c-9f6f-d39f7e4ad038",
            "name": "Подъезд 1",
            "is_published": true,
            "is_completed": true,
            "property_count": 18,
            "completion_date": "2021-09-30",
            "realty_created_at": "2025-04-14T04:25:00+00:00",
            "realty_updated_at": "2025-04-14T04:25:00+00:00"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/buildings/{building_id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

building_id   string     

The ID of the building. Example: 9ec11110-10e5-4f99-affd-0b9521c88c16

id   string     

Chess building ID Example: 9da10d91-a358-4c75-86e4-244c12c4554a

Property

Show chess property information

requires authentication

This endpoint let you get chess property information.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/chess/single-edit/9c5d144d-55f5-4181-97af-48fc238a9d6d/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/single-edit/9c5d144d-55f5-4181-97af-48fc238a9d6d/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "property": {
            "id": "9c85ab35-320b-466f-a626-bfad1d5ca56e",
            "number": null,
            "status": "sold",
            "square": 92,
            "base_decoration": null,
            "number_of_rooms": null,
            "comment": null,
            "created_at": "2024-07-14 17 =>46 =>09",
            "media": [],
            "campaigns": {
                "id": "9c85ab35-33a2-43d9-a062-62b5888d6679",
                "discount_amount": null,
                "realtor_commission": null,
                "buyer_gift": null,
                "realtor_gift": null
            },
            "options": {
                "id": "9c85ab35-34a1-4e81-a90f-f10ff0212986",
                "has_furniture": false,
                "has_decoration": false,
                "has_appliances": false
            },
            "prices": {
                "id": "9c85ab35-355f-41f5-845a-1350d8be2b99",
                "base_price": 1000000,
                "commission": null,
                "commission_type": null,
                "fixed_sum": 1000,
                "percent_of_total": null,
                "per_sqm": null
            },
            "plans": [],
            "building": {
                "id": "9be0051b-26cd-45e2-8422-7af43fd8266e",
                "user_id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "complex_id": "9b631f5c-120b-42b7-8aee-121059fd6bfd",
                "name": "Подъезд 2",
                "is_published": false,
                "is_completed": true,
                "completion_date": null,
                "complex": {
                    "id": "9b631f5c-120b-42b7-8aee-121059fd6bfd",
                    "user_id": "9c6d36bf-e539-43c4-8815-56a5b9129697",
                    "name": "ЖК Метрополь",
                    "address": {
                        "country": "Россия",
                        "state": null,
                        "city": "Сочи",
                        "postal_code": "354002",
                        "area": null,
                        "street": "ул Депутатская",
                        "street_number": "10Б/1"
                    },
                    "location": [
                        39.7394513,
                        43.5734219
                    ],
                    "is_published": null,
                    "is_completed": null,
                    "completion_date": null,
                    "owner": {
                        "id": "9c6d36bf-e539-43c4-8815-56a5b9129697",
                        "name": "метрополь",
                        "email": "metropol@ette.ru",
                        "phones": [
                            {
                                "value": "+79488492123",
                                "verified_at": null,
                                "for_code_send": false
                            },
                            {
                                "value": "+79383838321",
                                "verified_at": null,
                                "for_code_send": true
                            }
                        ],
                        "profile_photo_path": null,
                        "roles": [
                            {
                                "name": "builder",
                                "color": "#D871AA",
                                "description": {
                                    "ar": "مطور",
                                    "es": "Desarrollador",
                                    "gb": "Builder",
                                    "ru": "Застройщик"
                                }
                            }
                        ],
                        "organization_id": "9c6d36bf-bfc2-450e-ae2c-98fce9621113",
                        "organization": {
                            "id": "9c6d36bf-bfc2-450e-ae2c-98fce9621113",
                            "inn": "2320145626",
                            "name": "ООО 'МЕТРОПОЛЬ-СОЧИ'",
                            "type": "builder",
                            "address": {
                                "area": null,
                                "city": "Сочи",
                                "state": null,
                                "street": "ул. Пластунская д.54",
                                "country": "Россия",
                                "postal_code": "354000",
                                "street_number": null
                            },
                            "deleted_at": null,
                            "pivot": {
                                "user_id": "9c6d36bf-e539-43c4-8815-56a5b9129697",
                                "organization_id": "9c6d36bf-bfc2-450e-ae2c-98fce9621113"
                            }
                        },
                        "confirmed": true,
                        "phone_confirmed": true
                    },
                    "type": null
                }
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/chess/single-edit/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

Property ID Example: 9c5d144d-55f5-4181-97af-48fc238a9d6d

Update properties collection

requires authentication

This endpoint allows to update properties collection.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/chess/properties" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"properties\": {
        \"id\": \"9ed968d0-c296-4317-b134-706e8657e221\",
        \"is_commercial\": true,
        \"number\": \"nesciunt\",
        \"status\": \"booking\",
        \"square\": 72682.801701184,
        \"square_area\": 37569.228596,
        \"base_decoration\": \"finishing\",
        \"number_of_rooms\": 12951,
        \"comment\": \"quis\",
        \"base_price\": 1.2302,
        \"commission\": 2666314.7232,
        \"fixed_sum\": 28741340,
        \"percent_of_total\": 452379386.608406,
        \"per_sqm\": 613620.318487975,
        \"has_furniture\": false,
        \"has_decoration\": true,
        \"has_appliances\": true,
        \"discount_amount\": 0.71,
        \"realtor_commission\": 622368303.2,
        \"buyer_gift\": \"mjtd\",
        \"realtor_gift\": \"pntidflrwyidsqgik\"
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/properties"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "properties": {
        "id": "9ed968d0-c296-4317-b134-706e8657e221",
        "is_commercial": true,
        "number": "nesciunt",
        "status": "booking",
        "square": 72682.801701184,
        "square_area": 37569.228596,
        "base_decoration": "finishing",
        "number_of_rooms": 12951,
        "comment": "quis",
        "base_price": 1.2302,
        "commission": 2666314.7232,
        "fixed_sum": 28741340,
        "percent_of_total": 452379386.608406,
        "per_sqm": 613620.318487975,
        "has_furniture": false,
        "has_decoration": true,
        "has_appliances": true,
        "discount_amount": 0.71,
        "realtor_commission": 622368303.2,
        "buyer_gift": "mjtd",
        "realtor_gift": "pntidflrwyidsqgik"
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "building_id": "9c5d144d-55f5-4181-97af-48fc238a9d6d",
        "floors_count": 1,
        "risers_count": 1,
        "property_count": 1,
        "floors": [
            {
                "id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                "name": null,
                "type": "regular",
                "number": 1,
                "total_square": 80,
                "cells_count": 5
            }
        ],
        "risers": [
            {
                "id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                "number": 1,
                "square": null,
                "square_area": 10,
                "views": null,
                "number_of_rooms": null
            }
        ],
        "properties": [
            {
                "id": "9c5d1455-9f03-4a80-9569-7ead7efed6cb",
                "realty_type_id": "9b535d77-b6b5-4682-94b1-8384913a2c37",
                "cell_id": "9c5d1455-9db4-4422-a62c-352d9d104ab4",
                "is_empty": false,
                "is_joined": false,
                "is_commercial": false,
                "square": 10,
                "square_area": 10,
                "number_of_rooms": 0,
                "number": "1",
                "floor_id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                "floor_type": "regular",
                "floor_number": 1,
                "riser_id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                "view": [
                    "mountain"
                ],
                "riser_number": 1,
                "base_decoration": "rough",
                "status": "sale",
                "created_at": "2024-06-24 10 =>31 =>10",
                "campaigns": {
                    "id": "9c5d1455-9f78-4977-ad2d-64e05898121c",
                    "discount_amount": null,
                    "realtor_commission": null,
                    "buyer_gift": null,
                    "realtor_gift": null
                },
                "options": {
                    "id": "9c5d1455-9ff0-4652-8de1-264f939ba273",
                    "has_furniture": false,
                    "has_decoration": false,
                    "has_appliances": false
                },
                "prices": {
                    "id": "9c5d1455-a056-4bd8-94bd-af194c94a353",
                    "base_price": 1650000,
                    "commission": "0.000",
                    "commission_type": null,
                    "fixed_sum": 0,
                    "percent_of_total": 0,
                    "per_sqm": 165000
                },
                "cells": [
                    {
                        "id": "9c5d1455-9db4-4422-a62c-352d9d104ab4",
                        "floor_id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                        "riser_id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                        "is_empty": false,
                        "is_joined": false
                    }
                ],
                "last_binding_realty_id": null,
                "last_binding_realty_owner_id": null,
                "last_binding_realty_owner_fio": null,
                "calculated_price": 1650000,
                "calculated_price_per_sqm": 165000,
                "is_info_hidden": false,
                "has_private_person_owned_realty_binding": false,
                "owned_by_user": false,
                "is_hidden": false,
                "owner_is_private_person": false,
                "all_bindings_deleted": true
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/chess/properties

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

properties   object     
id   string     

validation.uuid Must match an existing stored value. Example: 9ed968d0-c296-4317-b134-706e8657e221

is_commercial   boolean  optional    

Example: true

number   string  optional    

Example: nesciunt

status   string  optional    

Example: booking

Must be one of:
  • sale
  • reserved
  • sold
  • assignment
  • builder-reserved
  • booking
  • action
  • investor
square   number  optional    

Example: 72682.801701184

square_area   number  optional    

Example: 37569.228596

base_decoration   string  optional    

Example: finishing

Must be one of:
  • rough
  • pre-finishing
  • finishing
number_of_rooms   number  optional    

Example: 12951

comment   string  optional    

Example: quis

base_price   number  optional    

Example: 1.2302

commission   number  optional    

Example: 2666314.7232

fixed_sum   number  optional    

Example: 28741340

percent_of_total   number  optional    

Example: 452379386.60841

per_sqm   number  optional    

Example: 613620.31848798

has_furniture   boolean  optional    

Example: false

has_decoration   boolean  optional    

Example: true

has_appliances   boolean  optional    

Example: true

discount_amount   number  optional    

Example: 0.71

realtor_commission   number  optional    

Example: 622368303.2

buyer_gift   string  optional    

Поле должно быть не длиннее 1023 символов. Example: mjtd

realtor_gift   string  optional    

Поле должно быть не длиннее 1023 символов. Example: pntidflrwyidsqgik

Riser

Create riser

requires authentication

This endpoint allows you to create a riser.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/chess/riser" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"building_id\": \"b1942bb9-07f3-31ba-bbf4-30871562c92c\",
    \"add_direction\": \"right\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/riser"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "building_id": "b1942bb9-07f3-31ba-bbf4-30871562c92c",
    "add_direction": "right"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "building_id": "f7f47260-b89b-3df1-92f3-cfae8d99fdb6",
        "floors_count": 1,
        "risers_count": 1,
        "property_count": 1,
        "floors": [
            {
                "id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                "name": null,
                "type": "regular",
                "number": 1,
                "total_square": 80,
                "cells_count": 5
            }
        ],
        "risers": [
            {
                "id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                "number": 1,
                "square": null,
                "square_area": 10,
                "views": null,
                "number_of_rooms": null
            }
        ],
        "properties": [
            {
                "id": "9c5d1455-9f03-4a80-9569-7ead7efed6cb",
                "realty_type_id": "9b535d77-b6b5-4682-94b1-8384913a2c37",
                "cell_id": "9c5d1455-9db4-4422-a62c-352d9d104ab4",
                "is_empty": false,
                "is_joined": false,
                "is_commercial": false,
                "square": 10,
                "square_area": 10,
                "number_of_rooms": 0,
                "number": "1",
                "floor_id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                "floor_type": "regular",
                "floor_number": 1,
                "riser_id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                "view": [
                    "mountain"
                ],
                "riser_number": 1,
                "base_decoration": "rough",
                "status": "sale",
                "created_at": "2024-06-24 10 =>31 =>10",
                "campaigns": {
                    "id": "9c5d1455-9f78-4977-ad2d-64e05898121c",
                    "discount_amount": null,
                    "realtor_commission": null,
                    "buyer_gift": null,
                    "realtor_gift": null
                },
                "options": {
                    "id": "9c5d1455-9ff0-4652-8de1-264f939ba273",
                    "has_furniture": false,
                    "has_decoration": false,
                    "has_appliances": false
                },
                "prices": {
                    "id": "9c5d1455-a056-4bd8-94bd-af194c94a353",
                    "base_price": 1650000,
                    "commission": "0.000",
                    "commission_type": null,
                    "fixed_sum": 0,
                    "percent_of_total": 0,
                    "per_sqm": 165000
                },
                "cells": [
                    {
                        "id": "9c5d1455-9db4-4422-a62c-352d9d104ab4",
                        "floor_id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                        "riser_id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                        "is_empty": false,
                        "is_joined": false
                    }
                ],
                "last_binding_realty_id": null,
                "last_binding_realty_owner_id": null,
                "last_binding_realty_owner_fio": null,
                "calculated_price": 1650000,
                "calculated_price_per_sqm": 165000,
                "is_info_hidden": false,
                "has_private_person_owned_realty_binding": false,
                "owned_by_user": false,
                "is_hidden": false,
                "owner_is_private_person": false,
                "all_bindings_deleted": true
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/chess/riser

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

riser_number   string  optional    
building_id   string     

validation.uuid Must match an existing stored value. Example: b1942bb9-07f3-31ba-bbf4-30871562c92c

add_direction   string     

Example: right

Must be one of:
  • left
  • right

View

Просмотр шахматки корпуса

requires authentication

Возвращает полную структуру шахматки для конкретного корпуса: этажи, стояки и все квартиры (chess_properties) с ценами, опциями и кампаниями.

Ключевая идея ответа — is_filtered: Список квартир в ответе всегда содержит все ячейки корпуса — пустые, объединённые, любые. Фильтры не скрывают квартиры из шахматки, а лишь помечают их: каждая квартира получает поле is_filtered = true, если он попадает в текущую выборку по переданным фильтрам, и is_filtered = false — если нет. Это позволяет фронтенду визуально "затемнить" неподходящие ячейки, сохраняя сетку корпуса нетронутой.

Поддерживается:

Примеры запросов:

# Без фильтров — вся шахматка, у каждой квартиры is_filtered = true:
GET /api/v1/chess/9c5d144d-55f5-4181-97af-48fc238a9d6d/show

# Только в продаже (вложенный ключ), двушки и трёшки:
GET /api/v1/chess/{buildingId}/show?filter[property][sale]=1&filter[property][number_of_rooms][]=2&filter[property][number_of_rooms][]=3

# Диапазон цены и площади:
GET /api/v1/chess/{buildingId}/show?filter[property][price]=3000000,8000000&filter[property][square]=40,90

# Квартиры с мебелью и видом на море:
GET /api/v1/chess/{buildingId}/show?filter[property][options][]=has_furniture&filter[property][window_view][]=sea

# Единый вложенный фильтр по параметрам шахматки:
GET /api/v1/chess/{buildingId}/show?filter[property][price]=2000000,6000000&filter[property][number_of_rooms][]=2&filter[property][sale]=1

# Только от застройщика, с отделкой, не на парковочном этаже:
GET /api/v1/chess/{buildingId}/show?filter[property][from_owner]=1&filter[property][options][]=has_decoration&filter[property][sale]=1
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/chess/9c5d144d-55f5-4181-97af-48fc238a9d6d/show?filter%5Bhouse_status%5D=voluptate&filter%5Bbuilding_id%5D=quia&filter%5Bestate_type%5D=asperiores&filter%5Bproperty%5D%5Bsquare%5D=ipsam&filter%5Bproperty%5D%5Bcomplex_rooms%5D%5B%5D[]=cupiditate&filter%5Bproperty%5D%5Bprice%5D=ut&filter%5Bproperty%5D%5Bprice_sqm%5D=aut&filter%5Bproperty%5D%5Bfrom_owner%5D=1&filter%5Bproperty%5D%5Bnumber_of_rooms%5D%5B%5D[]=quis&filter%5Bproperty%5D%5Boptions%5D%5B%5D[]=soluta&filter%5Bproperty%5D%5Bsale%5D=1&filter%5Bproperty%5D%5Bwindow_view%5D%5B%5D[]=aut" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/chess/9c5d144d-55f5-4181-97af-48fc238a9d6d/show"
);

const params = {
    "filter[house_status]": "voluptate",
    "filter[building_id]": "quia",
    "filter[estate_type]": "asperiores",
    "filter[property][square]": "ipsam",
    "filter[property][complex_rooms][][0]": "cupiditate",
    "filter[property][price]": "ut",
    "filter[property][price_sqm]": "aut",
    "filter[property][from_owner]": "1",
    "filter[property][number_of_rooms][][0]": "quis",
    "filter[property][options][][0]": "soluta",
    "filter[property][sale]": "1",
    "filter[property][window_view][][0]": "aut",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "building_id": "9c5d144d-55f5-4181-97af-48fc238a9d6d",
        "floors_count": 1,
        "risers_count": 1,
        "properties_count": 1,
        "floors": [
            {
                "id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                "name": null,
                "type": "regular",
                "number": 1,
                "total_square": 80,
                "cells_count": 5
            }
        ],
        "risers": [
            {
                "id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                "number": 1,
                "square": null,
                "square_area": 10,
                "views": null,
                "number_of_rooms": null
            }
        ],
        "properties": [
            {
                "id": "9c5d1455-9f03-4a80-9569-7ead7efed6cb",
                "realty_type_id": "9b535d77-b6b5-4682-94b1-8384913a2c37",
                "cell_id": "9c5d1455-9db4-4422-a62c-352d9d104ab4",
                "is_empty": false,
                "is_joined": false,
                "is_commercial": false,
                "square": 10,
                "square_area": 10,
                "number_of_rooms": 0,
                "number": "1",
                "int_number": "1",
                "floor_id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                "floor_type": "regular",
                "floor_number": 1,
                "riser_id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                "view": [
                    "mountain"
                ],
                "riser_number": 1,
                "base_decoration": "rough",
                "status": "sale",
                "created_at": "2024-06-24 10:31:10",
                "campaigns": {
                    "id": "9c5d1455-9f78-4977-ad2d-64e05898121c",
                    "discount_amount": null,
                    "realtor_commission": null,
                    "buyer_gift": null,
                    "realtor_gift": null
                },
                "options": {
                    "id": "9c5d1455-9ff0-4652-8de1-264f939ba273",
                    "has_furniture": false,
                    "has_decoration": false,
                    "has_appliances": false
                },
                "prices": {
                    "id": "9c5d1455-a056-4bd8-94bd-af194c94a353",
                    "base_price": 1650000,
                    "commission": "0.000",
                    "commission_type": null,
                    "fixed_sum": 0,
                    "percent_of_total": 0,
                    "per_sqm": 165000
                },
                "cells": [
                    {
                        "id": "9c5d1455-9db4-4422-a62c-352d9d104ab4",
                        "floor_id": "9c5d1455-9c6f-43b4-bd00-87ae309ff119",
                        "riser_id": "9c5d1455-9d0c-43af-9bb7-b37d578871da",
                        "is_empty": false,
                        "is_joined": false
                    }
                ],
                "last_binding_realty_id": null,
                "last_binding_realty_owner_id": null,
                "last_binding_realty_owner_fio": null,
                "calculated_price": 1650000,
                "calculated_price_per_sqm": 165000,
                "is_info_hidden": false,
                "has_private_person_owned_realty_binding": false,
                "owned_by_user": false,
                "is_hidden": false,
                "owner_is_private_person": false,
                "all_bindings_deleted": true,
                "is_initial_bindings": false,
                "is_filtered": true
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/chess/{buildingId}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

buildingId   string     

UUID корпуса (таблица chess_buildings). Example: 9c5d144d-55f5-4181-97af-48fc238a9d6d

Query Parameters

filter[house_status]   string     

Фильтр по статусу сдачи корпуса на уровне связанного здания (chess_buildings.is_completed).

⚠️ Логика привязана к модели корпуса шахматки, а не к текстовым статусам ЖК из каталога объектов.

Пример: filter[house_status]=built Example: voluptate

filter[building_id]   string     

UUID корпуса для явного ограничения выборки квартир.

Для этого эндпоинта building_id уже фиксируется из URL-параметра {buildingId}, поэтому явно передавать его не нужно. Параметр поддерживается в рамках общей схемы ChessPropertyQuery и допустим, но избыточен.

Пример: filter[building_id]=9c5d144d-55f5-4181-97af-48fc238a9d6d Example: quia

filter[estate_type]   string     

Зарезервировано. В текущей реализации (ChessPropertyEstateTypeFilter) фильтр принимает значение, но не изменяет SQL-запрос.

Пример: filter[estate_type]=apartment Example: asperiores

filter[property][square]   string     

Вложенный фильтр шахматки: площадь квартиры (chess_properties.square, диапазон, м²).

Форматы:

  • filter[property][square]=50,70
  • filter[property][square][]=50&filter[property][square][]=70

Пример: filter[property][square]=40,100 Example: ipsam

filter[property][complex_rooms][]   string[]     

Вложенный фильтр: комнатность (legacy-имя complex_rooms, см. ChessPropertyPropertyFilter). Целые числа; значение >= 4 интерпретируется как «четыре и более».

Пример: filter[property][complex_rooms][]=2&filter[property][complex_rooms][]=4

filter[property][price]   string     

Вложенный фильтр: базовая цена квартиры (chess_property_prices.base_price, диапазон).

Форматы:

  • filter[property][price]=2000000,8000000
  • filter[property][price][]=2000000&filter[property][price][]=8000000

Пример: filter[property][price]=1500000,5000000 Example: ut

filter[property][price_sqm]   string     

Вложенный фильтр: цена за м² квартиры (chess_property_prices.per_sqm, диапазон).

Форматы:

  • filter[property][price_sqm]=80000,200000
  • filter[property][price_sqm][]=80000&filter[property][price_sqm][]=200000

Пример: filter[property][price_sqm]=100000,300000 Example: aut

filter[property][from_owner]   boolean     

Вложенный фильтр: только квартиры от застройщика/собственника (роль builder у владельца квартиры).

Значения: 1 / true — только от застройщика; 0 / false — только от агентств.

Пример: filter[property][from_owner]=1 Example: true

filter[property][number_of_rooms][]   string[]     

Вложенный фильтр: количество комнат квартиры (chess_properties.number_of_rooms, множественный выбор).

Допустимые значения: 1, 2, 3, more (более трёх комнат).

Пример: filter[property][number_of_rooms][]=1&filter[property][number_of_rooms][]=more

filter[property][options][]   string[]     

Вложенный фильтр: опции квартиры (chess_property_options, OR-условие).

Допустимые значения: has_furniture, has_decoration, has_appliances.

Пример: filter[property][options][]=has_furniture&filter[property][options][]=has_appliances

filter[property][sale]   boolean     

Вложенный фильтр: только квартиры в продаже, без парковочных этажей (ChessPropertyPropertyFilter).

Пример: filter[property][sale]=1 Example: true

filter[property][window_view][]   string[]     

Вложенный фильтр: вид из окна. Проверяется JSON-поле views стояка (chess_risers) через whereJsonContains по корпусу квартиры.

Конкретный набор значений зависит от заполнения шахматки. Типичные примеры: sea, city, mountain.

Пример: filter[property][window_view][]=sea&filter[property][window_view][]=mountain

Endpoints

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/sanctum/csrf-cookie"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/sanctum/csrf-cookie"
);



fetch(url, {
    method: "GET",
}).then(response => response.json());

Example response (204):

Show headers
cache-control: no-cache, private
x-ratelimit-limit: 900
x-ratelimit-remaining: 899
set-cookie: XSRF-TOKEN=eyJpdiI6IkdPc2VNQWt3b2xldml6OVRPYmRmUUE9PSIsInZhbHVlIjoieVlXMDRxM1UrK3FrQWJydTV1YUR1OGUydTFmYUJxdm90SngrZjJNSUtjSmVXMVY2dlhOYWM4LzJMSklxOFVPWW9hS0ZPczRDeVlvalFXdVcrT0V1NU5LbG9kZk9zbElVYjd0WDVFek9iTzQ0K2pwVWZHT0YrWGNxNUJPSUxNejMiLCJtYWMiOiIyMzYyZmE0NTYzYzc0ZDk2OWM4OGM5NWI0MjJhNDI2MTA4N2UyZmNlNGM0MDFhZGM4MGM5MTRmOWZjYTNhZGUyIiwidGFnIjoiIn0%3D; expires=Thu, 10 Sep 2026 10:20:53 GMT; Max-Age=7200; path=/; domain=localhost; secure; samesite=lax; ette_session=eyJpdiI6Ikdxck1oU2lhVzh0THR2amJJMTB1Q0E9PSIsInZhbHVlIjoiRmEvTmxUbXB3QnA2MjlISkFCbHdZUGd5dWs3OGlrL21GVUZnb3JSVEM5SitMY25xaU9BZzU2NEUxMzV2cVlpZmpmR0cxU3JkSnVYQ2wrSHlYdzNtSFNwRG1oU1NOMFlaUmtNV0k5aGRSNWVRSGN2UWgzSE9Ka29QR1FUR3lDWmoiLCJtYWMiOiJjNjUzZDc2YjFmYzE2ZTU0MjNlYjYzNmUyMTA4MzgyYjJjYzJiYzhkZmZmNTE2MWVkNDE4NjUwZjY3ODQ5NzU2IiwidGFnIjoiIn0%3D; expires=Thu, 10 Sep 2026 10:20:53 GMT; Max-Age=7200; path=/; domain=localhost; secure; httponly; samesite=lax
 
Empty response
 

Authentication

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/youtube/auth"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/youtube/auth"
);



fetch(url, {
    method: "GET",
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
 

{
    "message": "App\\Http\\Middleware\\ForceJsonResponse::handle(): Return value must be of type Illuminate\\Http\\JsonResponse|Illuminate\\Http\\Response, Illuminate\\Http\\RedirectResponse returned",
    "exception": "TypeError",
    "file": "/var/www/app/Http/Middleware/ForceJsonResponse.php",
    "line": 18,
    "trace": [
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\ForceJsonResponse",
            "type": "->"
        },
        {
            "file": "/var/www/app/Http/Middleware/HorizonAccess.php",
            "line": 29,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\HorizonAccess",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
            "line": 51,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
            "line": 110,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
            "line": 61,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\HandleCors",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
            "line": 58,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 137,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 175,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 144,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 236,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 229,
            "function": "callLaravelRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 103,
            "function": "makeApiCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 39,
            "function": "makeResponseCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 471,
            "function": "__invoke",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 397,
            "function": "iterateThroughStrategies",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 94,
            "function": "fetchResponses",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 186,
            "function": "processRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php",
            "line": 43,
            "function": "{closure:Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp::extractEndpointsInfoFromLaravelApp():185}",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php",
            "line": 61,
            "function": "render",
            "class": "Illuminate\\Console\\View\\Components\\Task",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 183,
            "function": "__call",
            "class": "Illuminate\\Console\\View\\Components\\Factory",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 73,
            "function": "extractEndpointsInfoFromLaravelApp",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 51,
            "function": "extractEndpointsInfoAndWriteToDisk",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Commands/GenerateDocumentation.php",
            "line": 55,
            "function": "get",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 36,
            "function": "handle",
            "class": "Knuckles\\Scribe\\Commands\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/Util.php",
            "line": 43,
            "function": "{closure:Illuminate\\Container\\BoundMethod::call():35}",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 96,
            "function": "unwrapIfClosure",
            "class": "Illuminate\\Container\\Util",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 35,
            "function": "callBoundMethod",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 803,
            "function": "call",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 292,
            "function": "call",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Command/Command.php",
            "line": 285,
            "function": "execute",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 261,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Command\\Command",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Application.php",
            "line": 1144,
            "function": "run",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Application.php",
            "line": 379,
            "function": "doRunCommand",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Application.php",
            "line": 218,
            "function": "doRun",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
            "line": 198,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Application.php",
            "line": 1242,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Console\\Kernel",
            "type": "->"
        },
        {
            "file": "/var/www/artisan",
            "line": 18,
            "function": "handleCommand",
            "class": "Illuminate\\Foundation\\Application",
            "type": "->"
        }
    ]
}
 

Request      

GET api/v1/youtube/auth

Redirect

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/youtube/callback"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/youtube/callback"
);



fetch(url, {
    method: "GET",
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
 

{
    "message": "$_GET['code'] is not set.",
    "exception": "Exception",
    "file": "/var/www/vendor/dawson/youtube/routes/web.php",
    "line": 24,
    "trace": [
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/CallableDispatcher.php",
            "line": 39,
            "function": "{closure:{closure:/var/www/vendor/dawson/youtube/routes/web.php:6}:19}",
            "class": "Dawson\\Youtube\\YoutubeServiceProvider",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 254,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\CallableDispatcher",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 219,
            "function": "runCallable",
            "class": "Illuminate\\Routing\\Route",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 822,
            "function": "run",
            "class": "Illuminate\\Routing\\Route",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 137,
            "function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 821,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 800,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 764,
            "function": "runRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 753,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 200,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/var/www/app/Http/Middleware/ForceJsonResponse.php",
            "line": 18,
            "function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\ForceJsonResponse",
            "type": "->"
        },
        {
            "file": "/var/www/app/Http/Middleware/HorizonAccess.php",
            "line": 29,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\HorizonAccess",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
            "line": 51,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
            "line": 110,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
            "line": 61,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\HandleCors",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
            "line": 58,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 137,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 175,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 144,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 236,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 229,
            "function": "callLaravelRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 103,
            "function": "makeApiCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 39,
            "function": "makeResponseCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 471,
            "function": "__invoke",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 397,
            "function": "iterateThroughStrategies",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 94,
            "function": "fetchResponses",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 186,
            "function": "processRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php",
            "line": 43,
            "function": "{closure:Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp::extractEndpointsInfoFromLaravelApp():185}",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php",
            "line": 61,
            "function": "render",
            "class": "Illuminate\\Console\\View\\Components\\Task",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 183,
            "function": "__call",
            "class": "Illuminate\\Console\\View\\Components\\Factory",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 73,
            "function": "extractEndpointsInfoFromLaravelApp",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 51,
            "function": "extractEndpointsInfoAndWriteToDisk",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Commands/GenerateDocumentation.php",
            "line": 55,
            "function": "get",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 36,
            "function": "handle",
            "class": "Knuckles\\Scribe\\Commands\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/Util.php",
            "line": 43,
            "function": "{closure:Illuminate\\Container\\BoundMethod::call():35}",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 96,
            "function": "unwrapIfClosure",
            "class": "Illuminate\\Container\\Util",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 35,
            "function": "callBoundMethod",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 803,
            "function": "call",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 292,
            "function": "call",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Command/Command.php",
            "line": 285,
            "function": "execute",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 261,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Command\\Command",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Application.php",
            "line": 1144,
            "function": "run",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Application.php",
            "line": 379,
            "function": "doRunCommand",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Application.php",
            "line": 218,
            "function": "doRun",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
            "line": 198,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Application.php",
            "line": 1242,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Console\\Kernel",
            "type": "->"
        },
        {
            "file": "/var/www/artisan",
            "line": 18,
            "function": "handleCommand",
            "class": "Illuminate\\Foundation\\Application",
            "type": "->"
        }
    ]
}
 

Request      

GET api/v1/youtube/callback

Authenticate the request for channel access.

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/broadcasting/auth"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/broadcasting/auth"
);



fetch(url, {
    method: "GET",
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
set-cookie: ette_session=eyJpdiI6IjRncTB3YUNQK0haQjZ2SGV2dlRTUFE9PSIsInZhbHVlIjoiQTNSSk1OaS96cmNMOWxHNUdVcnZ1MHlFZ2o0bWlpQnZDemVWM1pLWUVJWkRXekpHTzlrTS9WSjZWSmQ3U2NKYlRJZDFEVTViMFR5Q2EwNU5XbzJ1VFo2R0R2NStONGwzUG5NRnhzUFlaTUh4MlJQcE5JU3lubDRHVkNXUU5aa2MiLCJtYWMiOiI1MmI1MGFhZDNlNGU3NjA2MDM4NDM4ZWEyOTFhODIwNTFiZTU3MmQ3ZTc0ODVmNzgxMjZmMDM2NGNjYWYzOWE3IiwidGFnIjoiIn0%3D; expires=Thu, 10 Sep 2026 10:20:53 GMT; Max-Age=7200; path=/; domain=localhost; secure; httponly; samesite=lax
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/broadcasting/auth

POST api/v1/broadcasting/auth

GET api/v1

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1"
const url = new URL(
    "https://staging-api.ette.ru/api/v1"
);



fetch(url, {
    method: "GET",
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
 

{
    "message": "App\\Http\\Middleware\\ForceJsonResponse::handle(): Return value must be of type Illuminate\\Http\\JsonResponse|Illuminate\\Http\\Response, Illuminate\\Http\\RedirectResponse returned",
    "exception": "TypeError",
    "file": "/var/www/app/Http/Middleware/ForceJsonResponse.php",
    "line": 18,
    "trace": [
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\ForceJsonResponse",
            "type": "->"
        },
        {
            "file": "/var/www/app/Http/Middleware/HorizonAccess.php",
            "line": 29,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\HorizonAccess",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
            "line": 51,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
            "line": 110,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
            "line": 61,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\HandleCors",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
            "line": 58,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 137,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 175,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 144,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 236,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 229,
            "function": "callLaravelRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 103,
            "function": "makeApiCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 39,
            "function": "makeResponseCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 471,
            "function": "__invoke",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 397,
            "function": "iterateThroughStrategies",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 94,
            "function": "fetchResponses",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 186,
            "function": "processRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php",
            "line": 43,
            "function": "{closure:Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp::extractEndpointsInfoFromLaravelApp():185}",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php",
            "line": 61,
            "function": "render",
            "class": "Illuminate\\Console\\View\\Components\\Task",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 183,
            "function": "__call",
            "class": "Illuminate\\Console\\View\\Components\\Factory",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 73,
            "function": "extractEndpointsInfoFromLaravelApp",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 51,
            "function": "extractEndpointsInfoAndWriteToDisk",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/knuckleswtf/scribe/src/Commands/GenerateDocumentation.php",
            "line": 55,
            "function": "get",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 36,
            "function": "handle",
            "class": "Knuckles\\Scribe\\Commands\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/Util.php",
            "line": 43,
            "function": "{closure:Illuminate\\Container\\BoundMethod::call():35}",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 96,
            "function": "unwrapIfClosure",
            "class": "Illuminate\\Container\\Util",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 35,
            "function": "callBoundMethod",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 803,
            "function": "call",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 292,
            "function": "call",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Command/Command.php",
            "line": 285,
            "function": "execute",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 261,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Command\\Command",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Application.php",
            "line": 1144,
            "function": "run",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Application.php",
            "line": 379,
            "function": "doRunCommand",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/symfony/console/Application.php",
            "line": 218,
            "function": "doRun",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
            "line": 198,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Application.php",
            "line": 1242,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Console\\Kernel",
            "type": "->"
        },
        {
            "file": "/var/www/artisan",
            "line": 18,
            "function": "handleCommand",
            "class": "Illuminate\\Foundation\\Application",
            "type": "->"
        }
    ]
}
 

Request      

GET api/v1

Favourite

Favourite Save

requires authentication

This endpoint allows you to favourite save.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/favourites/save" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"realty_id\": \"sed\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/favourites/save"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "realty_id": "sed"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/favourites/save

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

realty_id   string     

Must match an existing stored value. Example: sed

Favourite Index

requires authentication

This endpoint allows you to favourite index.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/favourites/index" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/favourites/index"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/favourites/index

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Geo

Get address info

requires authentication

This endpoint allows you to get address info.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/geocode/address" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"search_keywords\": \"sint\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/geocode/address"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search_keywords": "sint"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "results": [
            {
                "country": "Россия",
                "state": null,
                "city": "Сочи",
                "area": null,
                "street": "улица Чебрикова",
                "street_number": "38А",
                "postal_code": "354057",
                "coordinates": {
                    "longitude": 39.73514103789353,
                    "latitude": 43.5959908
                },
                "formatted_address": "354057, Россия, Сочи, улица Чебрикова, 38А"
            },
            {
                "country": "Россия",
                "state": null,
                "city": "Сочи",
                "area": null,
                "street": "улица Чебрикова",
                "street_number": "38А",
                "postal_code": "354057",
                "coordinates": {
                    "longitude": 39.7353287,
                    "latitude": 43.5960547
                },
                "formatted_address": "354057, Россия, Сочи, улица Чебрикова, 38А"
            },
            {
                "country": "Россия",
                "state": null,
                "city": "Сочи",
                "area": null,
                "street": "улица Чебрикова",
                "street_number": "38А",
                "postal_code": "354057",
                "coordinates": {
                    "longitude": 39.7348504,
                    "latitude": 43.5959245
                },
                "formatted_address": "354057, Россия, Сочи, улица Чебрикова, 38А"
            },
            {
                "country": "Россия",
                "state": null,
                "city": "Сочи",
                "area": null,
                "street": "улица Чебрикова",
                "street_number": "38А",
                "postal_code": "354057",
                "coordinates": {
                    "longitude": 39.7349891,
                    "latitude": 43.5961222
                },
                "formatted_address": "354057, Россия, Сочи, улица Чебрикова, 38А"
            },
            {
                "country": "Россия",
                "state": null,
                "city": "Сочи",
                "area": null,
                "street": "улица Чебрикова",
                "street_number": "38А",
                "postal_code": "354057",
                "coordinates": {
                    "longitude": 39.7348895,
                    "latitude": 43.5958567
                },
                "formatted_address": "354057, Россия, Сочи, улица Чебрикова, 38А"
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/v1/geocode/address

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

search_keywords   string     

Example: sint

Resolve area and sub-area by address

Returns area and sub-area IDs from `areas` / `sub_areas` tables for the given address.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/geocode/area_by_address?address=%D0%B3+%D0%A1%D0%BE%D1%87%D0%B8%2C+%D1%83%D0%BB+%D0%9B%D0%B0%D0%BD%D0%B4%D1%8B%D1%88%D0%B5%D0%B2%D0%B0%D1%8F%2C+13" \
    --header "Content-Type: application/json" \
    --data "{
    \"address\": \"quod\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/geocode/area_by_address"
);

const params = {
    "address": "г Сочи, ул Ландышевая, 13",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

let body = {
    "address": "quod"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "area_id": "9b5363b7-1dc4-4807-9a09-0d43abc44ddd",
        "sub_area_id": "757fe70f-6216-4264-b136-9a47118dedab"
    },
    "error": null,
    "message": "Success"
}
 

Example response (200):


{
    "success": true,
    "data": {
        "area_id": null,
        "sub_area_id": null
    },
    "error": null,
    "message": "Success"
}
 

Request      

GET api/v1/geocode/area_by_address

Headers

Content-Type        

Example: application/json

Query Parameters

address   string     

Full address string Example: г Сочи, ул Ландышевая, 13

Body Parameters

address   string     

Example: quod

GeoCode

Rosreestr Geo Object Info

requires authentication

This endpoint allows you to rosreestr geo object info.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/geocode/rosreestr/geo-object-info" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"cadastral_number\": \"ad\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/geocode/rosreestr/geo-object-info"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "cadastral_number": "ad"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/geocode/rosreestr/geo-object-info

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

cadastral_number   string     

Example: ad

Coordinates Index

requires authentication

This endpoint allows you to coordinates index.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/geocode/coordinates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"coordinates\": {
        \"longitude\": 53455738.70214656,
        \"latitude\": 412336.66342
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/geocode/coordinates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "coordinates": {
        "longitude": 53455738.70214656,
        "latitude": 412336.66342
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/v1/geocode/coordinates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

coordinates   object     
longitude   number     

Example: 53455738.702147

latitude   number     

Example: 412336.66342

Distance To Sea

requires authentication

This endpoint allows you to distance to sea.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/geocode/distance_to_sea" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"longitude\": 35444573.503603,
    \"latitude\": 7.79126057
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/geocode/distance_to_sea"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "longitude": 35444573.503603,
    "latitude": 7.79126057
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/v1/geocode/distance_to_sea

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

longitude   number     

Example: 35444573.503603

latitude   number     

Example: 7.79126057

Cadastral Number By Coord

requires authentication

This endpoint allows you to cadastral number by coord.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/geocode/cadastral_number_by_coord" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"latitude\": 6314640,
    \"longitude\": 35351.345972
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/geocode/cadastral_number_by_coord"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "latitude": 6314640,
    "longitude": 35351.345972
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/geocode/cadastral_number_by_coord

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

latitude   number     

Example: 6314640

longitude   number     

Example: 35351.345972

Geo Locate By Coord

requires authentication

This endpoint allows you to geo locate by coord.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/geocode/geo_locate_by_coord" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"latitude\": 80720423.16129,
    \"longitude\": 92135.98
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/geocode/geo_locate_by_coord"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "latitude": 80720423.16129,
    "longitude": 92135.98
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/geocode/geo_locate_by_coord

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

latitude   number     

Example: 80720423.16129

longitude   number     

Example: 92135.98

Locations

Get All Public Countries

This endpoint allows you to get All Public Countries.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/public/country"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/public/country"
);



fetch(url, {
    method: "GET",
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Request      

GET api/v1/public/country

Get address info by address

requires authentication

This endpoint allows you to get address info by address.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/geocode/address_info" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"address\": \"natus\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/geocode/address_info"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "address": "natus"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "address_info": [
            {
                "source": "г Москва, ул Сухонская, д 11, кв 89",
                "result": "г Москва, ул Сухонская, д 11, кв 89",
                "postal_code": "127642",
                "country": "Россия",
                "country_iso_code": "RU",
                "federal_district": "Центральный",
                "region_fias_id": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                "region_kladr_id": "7700000000000",
                "region_iso_code": "RU-MOW",
                "region_with_type": "г Москва",
                "region_type": "г",
                "region_type_full": "город",
                "region": "Москва",
                "area_fias_id": null,
                "area_kladr_id": null,
                "area_with_type": null,
                "area_type": null,
                "area_type_full": null,
                "area": null,
                "city_fias_id": null,
                "city_kladr_id": null,
                "city_with_type": null,
                "city_type": null,
                "city_type_full": null,
                "city": null,
                "city_area": "Северо-восточный",
                "city_district_fias_id": null,
                "city_district_kladr_id": null,
                "city_district_with_type": "р-н Северное Медведково",
                "city_district_type": "р-н",
                "city_district_type_full": "район",
                "city_district": "Северное Медведково",
                "settlement_fias_id": null,
                "settlement_kladr_id": null,
                "settlement_with_type": null,
                "settlement_type": null,
                "settlement_type_full": null,
                "settlement": null,
                "street_fias_id": "95dbf7fb-0dd4-4a04-8100-4f6c847564b5",
                "street_kladr_id": "77000000000283600",
                "street_with_type": "ул Сухонская",
                "street_type": "ул",
                "street_type_full": "улица",
                "street": "Сухонская",
                "stead_fias_id": null,
                "stead_kladr_id": null,
                "stead_cadnum": null,
                "stead_type": null,
                "stead_type_full": null,
                "stead": null,
                "house_fias_id": "5ee84ac0-eb9a-4b42-b814-2f5f7c27c255",
                "house_kladr_id": "7700000000028360004",
                "house_cadnum": "77:02:0004008:1017",
                "house_type": "д",
                "house_type_full": "дом",
                "house": "11",
                "block_type": null,
                "block_type_full": null,
                "block": null,
                "entrance": null,
                "floor": null,
                "flat_fias_id": "f26b876b-6857-4951-b060-ec6559f04a9a",
                "flat_cadnum": "77:02:0004008:4143",
                "flat_type": "кв",
                "flat_type_full": "квартира",
                "flat": "89",
                "flat_area": "34.6",
                "square_meter_price": "244503",
                "flat_price": "8459804",
                "postal_box": null,
                "fias_id": "f26b876b-6857-4951-b060-ec6559f04a9a",
                "fias_code": "77000000000000028360004",
                "fias_level": "9",
                "fias_actuality_state": "0",
                "kladr_id": "7700000000028360004",
                "capital_marker": "0",
                "okato": "45280583000",
                "oktmo": "45362000",
                "tax_office": "7715",
                "tax_office_legal": "7715",
                "timezone": "UTC+3",
                "geo_lat": "55.8782557",
                "geo_lon": "37.65372",
                "beltway_hit": "IN_MKAD",
                "beltway_distance": null,
                "qc_geo": 0,
                "qc_complete": 0,
                "qc_house": 2,
                "qc": 0,
                "unparsed_parts": null,
                "metro": [
                    {
                        "distance": 1.1,
                        "line": "Калужско-Рижская",
                        "name": "Бабушкинская"
                    },
                    {
                        "distance": 1.2,
                        "line": "Калужско-Рижская",
                        "name": "Медведково"
                    },
                    {
                        "distance": 2.5,
                        "line": "Калужско-Рижская",
                        "name": "Свиблово"
                    }
                ]
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/geocode/address_info

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

address   string     

Example: natus

Area

Get All Areas

requires authentication

This endpoint allows you to get All Areas.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/locations/area" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/area"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "areas": [
            {
                "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                "name": "Сочи",
                "deleted_at": "null",
                "city": {
                    "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                    "name": "Сочи",
                    "deleted_at": "null",
                    "country": {
                        "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                        "name": "Сочи",
                        "deleted_at": "null"
                    }
                },
                "sub_areas": [
                    {
                        "id": "cb55d244-dc6d-4f11-85ef-2f0adff19dde",
                        "name": "test sub area",
                        "deleted_at": null
                    }
                ]
            },
            {
                "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                "name": "Сочи",
                "deleted_at": "null",
                "city": {
                    "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                    "name": "Сочи",
                    "deleted_at": "null",
                    "country": {
                        "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                        "name": "Сочи",
                        "deleted_at": "null"
                    }
                },
                "sub_areas": [
                    {
                        "id": "ce9d6f06-5cbc-47a0-a504-863272c33fbd",
                        "name": "test sub area",
                        "deleted_at": null
                    }
                ]
            }
        ],
        "links": {
            "first": "http://localhost/api/v1/locations/areas?page=1",
            "last": "http://localhost/api/v1/locations/areas?page=1",
            "prev": null,
            "next": null
        },
        "meta": {
            "current_page": 1,
            "from": 1,
            "last_page": 1,
            "links": [
                {
                    "url": null,
                    "label": "pagination.previous",
                    "active": false
                },
                {
                    "url": "http://localhost/api/v1/locations/areas?page=1",
                    "label": "1",
                    "active": true
                },
                {
                    "url": null,
                    "label": "pagination.next",
                    "active": false
                }
            ],
            "path": "http://localhost/api/v1/articles",
            "per_page": 15,
            "to": 1,
            "total": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/locations/area

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Show Area

requires authentication

This endpoint allows you to get Area by UUID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/locations/area/894fe12e-0304-35a2-bb49-e5f3b664e51e/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/area/894fe12e-0304-35a2-bb49-e5f3b664e51e/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "area": {
            "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
            "name": "Сочи",
            "deleted_at": "null",
            "city": {
                "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                "name": "Сочи",
                "deleted_at": "null",
                "country": {
                    "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                    "name": "Сочи",
                    "deleted_at": "null"
                }
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/locations/area/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the area Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Create Area

requires authentication

This endpoint allows you to create Area.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/locations/area" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"itaque\",
    \"city_id\": \"702a246f-82ab-3f12-a079-0a9d33dae867\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/area"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "itaque",
    "city_id": "702a246f-82ab-3f12-a079-0a9d33dae867"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "area": {
            "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
            "name": "Сочи",
            "deleted_at": "null",
            "city": {
                "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                "name": "Сочи",
                "deleted_at": "null",
                "country": {
                    "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                    "name": "Сочи",
                    "deleted_at": "null"
                }
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/locations/area

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Example: itaque

city_id   string     

validation.uuid Must match an existing stored value. Example: 702a246f-82ab-3f12-a079-0a9d33dae867

Update Area

requires authentication

This endpoint allows you to update Area.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/locations/area/9b53631b-fec3-4a7f-a697-c6dfa43f76a4/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"incidunt\",
    \"city_id\": \"52d41368-0b3c-3773-803a-80bf921fc0d0\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/area/9b53631b-fec3-4a7f-a697-c6dfa43f76a4/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "incidunt",
    "city_id": "52d41368-0b3c-3773-803a-80bf921fc0d0"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "area": {
            "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
            "name": "Сочи",
            "deleted_at": "null",
            "city": {
                "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                "name": "Сочи",
                "deleted_at": "null",
                "country": {
                    "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                    "name": "Сочи",
                    "deleted_at": "null"
                }
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/locations/area/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the area. Example: 9b53631b-fec3-4a7f-a697-c6dfa43f76a4

Body Parameters

name   string  optional    

Example: incidunt

city_id   string  optional    

validation.uuid Must match an existing stored value. Example: 52d41368-0b3c-3773-803a-80bf921fc0d0

Delete Area

requires authentication

This endpoint allows you to delete Area.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/locations/area/9b53631b-fec3-4a7f-a697-c6dfa43f76a4" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/area/9b53631b-fec3-4a7f-a697-c6dfa43f76a4"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "status": "Soft_deleted"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/locations/area/{area_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

area_id   string     

The ID of the area. Example: 9b53631b-fec3-4a7f-a697-c6dfa43f76a4

Sub-area

Get All Sub-Areas

requires authentication

This endpoint allows you to get all sub-areas.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/locations/sub_area" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/sub_area"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "40bcc0a3-0ce3-4c67-9daf-b0d9c2e0b759",
            "name": "Курортный городок",
            "deleted_at": null,
            "area": {
                "id": "871e4c7c-0877-41d4-9243-bded52114c16",
                "name": "Адлерский",
                "deleted_at": null,
                "city": {
                    "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                    "name": "Сочи",
                    "deleted_at": null
                }
            }
        },
        {
            "id": "0603163e-1cd1-4902-830b-dea1beffffbe",
            "name": "Черемушки",
            "deleted_at": null,
            "area": {
                "id": "871e4c7c-0877-41d4-9243-bded52114c16",
                "name": "Адлерский",
                "deleted_at": null,
                "city": {
                    "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                    "name": "Сочи",
                    "deleted_at": null
                }
            }
        }
    ],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/locations/sub_area

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Create sub-area

requires authentication

This endpoint allows you to create sub-area.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/locations/sub_area" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"molestias\",
    \"area_id\": \"1e7079ae-aefd-35ed-8e4f-29c22f575769\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/sub_area"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "molestias",
    "area_id": "1e7079ae-aefd-35ed-8e4f-29c22f575769"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "sub_area": {
            "id": "0603163e-1cd1-4902-830b-dea1beffffbe",
            "name": "Черемушки",
            "deleted_at": null,
            "area": {
                "id": "871e4c7c-0877-41d4-9243-bded52114c16",
                "name": "Адлерский",
                "deleted_at": null,
                "city": {
                    "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                    "name": "Сочи",
                    "deleted_at": null
                }
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/locations/sub_area

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Example: molestias

area_id   string     

validation.uuid Must match an existing stored value. Example: 1e7079ae-aefd-35ed-8e4f-29c22f575769

Show Sub-Area

requires authentication

This endpoint allows you to get sub-area by UUID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/locations/sub_area/01e196fe-9565-41bc-a226-e9396bc8d79f/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/sub_area/01e196fe-9565-41bc-a226-e9396bc8d79f/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "sub_area": {
            "id": "0603163e-1cd1-4902-830b-dea1beffffbe",
            "name": "Черемушки",
            "deleted_at": null,
            "area": {
                "id": "871e4c7c-0877-41d4-9243-bded52114c16",
                "name": "Адлерский",
                "deleted_at": null,
                "city": {
                    "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                    "name": "Сочи",
                    "deleted_at": null
                }
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/locations/sub_area/{subArea_id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

subArea_id   string     

The ID of the subArea. Example: 01e196fe-9565-41bc-a226-e9396bc8d79f

id   string     

The ID of the sub-area Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Update Sub-Area

requires authentication

This endpoint allows you to update Sub-Area.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/locations/sub_area/qui/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"non\",
    \"name\": \"doloribus\",
    \"area_id\": \"aec5527c-06b4-36f4-b5a3-1f67a0f04f1f\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/sub_area/qui/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "non",
    "name": "doloribus",
    "area_id": "aec5527c-06b4-36f4-b5a3-1f67a0f04f1f"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "sub_area": {
            "id": "0603163e-1cd1-4902-830b-dea1beffffbe",
            "name": "Черемушки",
            "deleted_at": null,
            "area": {
                "id": "871e4c7c-0877-41d4-9243-bded52114c16",
                "name": "Адлерский",
                "deleted_at": null,
                "city": {
                    "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                    "name": "Сочи",
                    "deleted_at": null
                }
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/locations/sub_area/{subArea}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

subArea   string     

Example: qui

id   string     

The ID of the Sub-Area Example: 0603163e-1cd1-4902-830b-dea1beffffbe

Body Parameters

id   string     

Example: non

name   string  optional    

Example: doloribus

area_id   string  optional    

validation.uuid Must match an existing stored value. Example: aec5527c-06b4-36f4-b5a3-1f67a0f04f1f

Delete Sub-Area

requires authentication

This endpoint allows you to delete sub-area.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/locations/sub_area/01e196fe-9565-41bc-a226-e9396bc8d79f" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/sub_area/01e196fe-9565-41bc-a226-e9396bc8d79f"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "status": "Soft_deleted"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/locations/sub_area/{subArea_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

subArea_id   string     

The ID of the subArea. Example: 01e196fe-9565-41bc-a226-e9396bc8d79f

id   string     

The ID of the sub-area Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Update permission

requires authentication

This endpoint allows you to update permission.
Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/permissions/0603163e-1cd1-4902-830b-dea1beffffbe/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"ea8ade04-0615-38d1-8316-13ca11f11114\",
    \"name\": \"tenetur\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/permissions/0603163e-1cd1-4902-830b-dea1beffffbe/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "ea8ade04-0615-38d1-8316-13ca11f11114",
    "name": "tenetur"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "permission": {
            "name": "delete_user",
            "description": null,
            "guard_name": "organization"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/permissions/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the permission Example: 0603163e-1cd1-4902-830b-dea1beffffbe

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: ea8ade04-0615-38d1-8316-13ca11f11114

name   string     

Example: tenetur

description   string  optional    

Country

Get All Countries

requires authentication

This endpoint allows you to get All Countries.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/locations/country" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/country"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "countries": [
            {
                "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                "name": "Россия",
                "iso_code": "RU",
                "lang_code": "ru",
                "phone_code": "7",
                "coordinates": [
                    39.723109,
                    43.5854823
                ],
                "cities": [
                    {
                        "id": "99ef49cd-3a8a-4979-8f34-56fec2cdebc0",
                        "name": "Сочи"
                    },
                    {
                        "id": "9a59e593-653e-48e3-918f-c9d0c1674689",
                        "name": "Раменское"
                    }
                ]
            }
        ],
        "links": {
            "first": "http://localhost/api/v1/articles?page=1",
            "last": "http://localhost/api/v1/articles?page=1",
            "prev": null,
            "next": null
        },
        "meta": {
            "current_page": 1,
            "from": 1,
            "last_page": 1,
            "links": [
                {
                    "url": null,
                    "label": "pagination.previous",
                    "active": false
                },
                {
                    "url": "http://localhost/api/v1/articles?page=1",
                    "label": "1",
                    "active": true
                },
                {
                    "url": null,
                    "label": "pagination.next",
                    "active": false
                }
            ],
            "path": "http://localhost/api/v1/articles",
            "per_page": 15,
            "to": 1,
            "total": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/locations/country

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Create Country

requires authentication

This endpoint allows you to create Country.

Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/locations/country" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"ue\",
    \"iso_code\": \"v\",
    \"lang_code\": \"cpgo\",
    \"phone_code\": 51110,
    \"location\": {
        \"latitude\": 48,
        \"longitude\": 0
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/country"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "ue",
    "iso_code": "v",
    "lang_code": "cpgo",
    "phone_code": 51110,
    "location": {
        "latitude": 48,
        "longitude": 0
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "country": {
            "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
            "name": "Россия",
            "iso_code": "RU",
            "lang_code": "ru",
            "phone_code": "7",
            "coordinates": [
                39.723109,
                43.5854823
            ]
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/locations/country

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Поле должно быть не длиннее 255 символов. Example: ue

iso_code   string     

Поле должно быть не длиннее 2 символов. Example: v

lang_code   string     

Поле должно быть не длиннее 4 символов. Example: cpgo

phone_code   number     

Example: 51110

location   object     
latitude   number     

Поле должно быть не больше 50. Поле должно быть не менее 0. Example: 48

longitude   number     

Поле должно быть не больше 50. Поле должно быть не менее 0. Example: 0

Show Country

requires authentication

This endpoint allows you to get Country by UUID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/locations/country/894fe12e-0304-35a2-bb49-e5f3b664e51e/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/country/894fe12e-0304-35a2-bb49-e5f3b664e51e/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "country": {
            "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
            "name": "Россия",
            "iso_code": "RU",
            "lang_code": "ru",
            "phone_code": "7",
            "coordinates": [
                39.723109,
                43.5854823
            ],
            "cities": [
                {
                    "id": "99ef49cd-3a8a-4979-8f34-56fec2cdebc0",
                    "name": "Сочи"
                },
                {
                    "id": "9a59e593-653e-48e3-918f-c9d0c1674689",
                    "name": "Раменское"
                }
            ]
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/locations/country/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the city Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Update Country

requires authentication

This endpoint allows you to update Country.

Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/locations/country/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"veritatis\",
    \"name\": \"zjkfvxmepxq\",
    \"iso_code\": \"ar\",
    \"lang_code\": \"hzvz\",
    \"phone_code\": 62.445577,
    \"location\": {
        \"latitude\": 57,
        \"longitude\": 21
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/country/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "veritatis",
    "name": "zjkfvxmepxq",
    "iso_code": "ar",
    "lang_code": "hzvz",
    "phone_code": 62.445577,
    "location": {
        "latitude": 57,
        "longitude": 21
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "country": {
            "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
            "name": "Россия",
            "iso_code": "RU",
            "lang_code": "ru",
            "phone_code": "7",
            "coordinates": [
                39.723109,
                43.5854823
            ]
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/locations/country/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the country Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Body Parameters

id   string     

Example: veritatis

name   string  optional    

Поле должно быть не длиннее 255 символов. Example: zjkfvxmepxq

iso_code   string  optional    

Поле должно быть не длиннее 2 символов. Example: ar

lang_code   string  optional    

Поле должно быть не длиннее 4 символов. Example: hzvz

phone_code   number  optional    

Example: 62.445577

location   object     
latitude   number     

Поле должно быть не больше 50. Поле должно быть не менее 0. Example: 57

longitude   number     

Поле должно быть не больше 50. Поле должно быть не менее 0. Example: 21

Delete Country

requires authentication

This endpoint allows you to delete Country.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/locations/country/9b535d76-c8e2-4a24-96f8-c07b18a8175d" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/country/9b535d76-c8e2-4a24-96f8-c07b18a8175d"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "status": "Soft_deleted"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/locations/country/{country_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

country_id   string     

The ID of the country. Example: 9b535d76-c8e2-4a24-96f8-c07b18a8175d

id   string     

The ID of the blog country Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

City

Get All Cities

requires authentication

This endpoint allows you to get All Cities.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/locations/city" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/city"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "cities": [
            {
                "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                "name": "Сочи",
                "country": "Россия"
            },
            {
                "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
                "name": "Егорьевск",
                "country": "Россия"
            }
        ],
        "links": {
            "first": "http://localhost/api/v1/articles?page=1",
            "last": "http://localhost/api/v1/articles?page=1",
            "prev": null,
            "next": null
        },
        "meta": {
            "current_page": 1,
            "from": 1,
            "last_page": 1,
            "links": [
                {
                    "url": null,
                    "label": "pagination.previous",
                    "active": false
                },
                {
                    "url": "http://localhost/api/v1/articles?page=1",
                    "label": "1",
                    "active": true
                },
                {
                    "url": null,
                    "label": "pagination.next",
                    "active": false
                }
            ],
            "path": "http://localhost/api/v1/articles",
            "per_page": 15,
            "to": 1,
            "total": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/locations/city

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Create City

requires authentication

This endpoint allows you to create City.

Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/locations/city" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"ihnzjchvrynyygszyqreppo\",
    \"country_id\": \"8c6c638e-9984-3ca0-811c-19f886f0e60e\",
    \"location\": {
        \"latitude\": 20,
        \"longitude\": 32
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/city"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "ihnzjchvrynyygszyqreppo",
    "country_id": "8c6c638e-9984-3ca0-811c-19f886f0e60e",
    "location": {
        "latitude": 20,
        "longitude": 32
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "city": {
            "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
            "name": "Сочи",
            "country": "Россия",
            "coordinates": [
                39.723109,
                43.5854823
            ]
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/locations/city

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Поле должно быть не длиннее 255 символов. Example: ihnzjchvrynyygszyqreppo

country_id   string     

validation.uuid Must match an existing stored value. Example: 8c6c638e-9984-3ca0-811c-19f886f0e60e

location   object     
latitude   number     

Поле должно быть не больше 50. Поле должно быть не менее 0. Example: 20

longitude   number     

Поле должно быть не больше 50. Поле должно быть не менее 0. Example: 32

Show City

requires authentication

This endpoint allows you to get City by UUID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/locations/city/894fe12e-0304-35a2-bb49-e5f3b664e51e/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/city/894fe12e-0304-35a2-bb49-e5f3b664e51e/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "city": {
            "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
            "name": "Сочи",
            "country": "Россия",
            "coordinates": [
                39.723109,
                43.5854823
            ]
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/locations/city/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the city Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Update City

requires authentication

This endpoint allows you to update City.

Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/locations/city/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"animi\",
    \"name\": \"adkuxfrlh\",
    \"country_id\": \"a9d13c4d-a804-31f9-8035-a1de05e1aefe\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/locations/city/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "animi",
    "name": "adkuxfrlh",
    "country_id": "a9d13c4d-a804-31f9-8035-a1de05e1aefe"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "city": {
            "id": "99ef433c-7fa1-43a8-a857-4fe6e70bc979",
            "name": "Сочи",
            "country": "Россия",
            "coordinates": [
                39.723109,
                43.5854823
            ]
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/locations/city/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the city Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Body Parameters

id   string     

Example: animi

name   string  optional    

Поле должно быть не длиннее 255 символов. Example: adkuxfrlh

country_id   string     

validation.uuid Must match an existing stored value. Example: a9d13c4d-a804-31f9-8035-a1de05e1aefe

location   string  optional    

Menu

requires authentication

This endpoint allows you to get menus.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/menu" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/menu"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "data": [
            {
                "id": "018efa64-aab9-72d2-be25-84da2418dfe5",
                "name": "Новостройки",
                "icon": "http://api.ette.local/storage/menu_icon/novostroiki.svg",
                "url": "/novostroiki"
            },
            {
                "id": "018efa64-aad3-719a-a575-cb2f35d07064",
                "name": "Квартиры",
                "icon": "http://api.ette.local/storage/menu_icon/kvartiry.svg",
                "url": "/kvartiry"
            },
            {
                "id": "1b3514fc-a671-474a-848b-cfa46283b737",
                "name": "Коттеджные посёлки",
                "icon": "http://api.ette.local/storage/menu_icon/poselki.svg",
                "url": "/poselok"
            },
            {
                "id": "018efa64-aae6-7175-b737-41238ce4f488",
                "name": "Дома",
                "icon": "http://api.ette.local/storage/menu_icon/doma.svg",
                "url": "/doma"
            },
            {
                "id": "018efa64-ab00-716b-a125-4ff35e4eddc1",
                "name": "Земельные участки",
                "icon": "http://api.ette.local/storage/menu_icon/zemelnye-uchastki.svg",
                "url": "/zemelnye-ucastki"
            },
            {
                "id": "018efa64-ab15-7001-97aa-1a609249362c",
                "name": "Коммерческая недвижимость",
                "icon": "http://api.ette.local/storage/menu_icon/kommercheskaia-nedvizhimost.svg",
                "url": "/kommerceskaia-nedvizimost"
            },
            {
                "id": "018efa64-ab29-701d-86f8-470b1964c3ee",
                "name": "Аренда",
                "icon": "http://api.ette.local/storage/menu_icon/arenda.svg",
                "url": "/arenda"
            },
            {
                "id": "c2393881-aee4-4efa-b591-4f08d9b4ef66",
                "name": "Гараж или машиноместо",
                "icon": "http://api.ette.local/storage/menu_icon/parking.svg",
                "url": "/garaz-mashinomesto"
            },
            {
                "id": "018efa64-ab3a-7280-b229-d967dfa7b1d5",
                "name": "Поиск по карте",
                "icon": "http://api.ette.local/storage/menu_icon/map.svg",
                "url": "/map"
            },
            {
                "id": "018efa64-ab4a-71cc-b095-f045c89f6882",
                "name": "Новости",
                "icon": "http://api.ette.local/storage/menu_icon/news.svg",
                "url": "/news"
            },
            {
                "id": "018efa64-ab5d-7004-aa61-395b413f472c",
                "name": "Настройки",
                "icon": "http://api.ette.local/storage/menu_icon/settings.svg",
                "url": "/settings"
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/menu

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Modal

requires authentication

This endpoint allows you to modal update.
Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/modals" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"quo\",
    \"is_read\": 12946.62242,
    \"step\": 410415500.008649
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/modals"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "quo",
    "is_read": 12946.62242,
    "step": 410415500.008649
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/modals

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Example: quo

is_read   number     

Example: 12946.62242

step   number     

Example: 410415500.00865

Organization

Organization Index

requires authentication

This endpoint allows you to organization index.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/organizations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/organizations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/organizations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Organization Create

requires authentication

This endpoint allows you to organization create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/organizations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"inn\": \"et\",
    \"name\": \"vel\",
    \"address\": {
        \"country\": \"optio\",
        \"state\": \"praesentium\",
        \"city\": \"animi\",
        \"postal_code\": \"omnis\",
        \"area\": \"facere\",
        \"street\": \"vitae\",
        \"street_number\": \"quae\",
        \"cadastral_number\": \"aperiam\"
    },
    \"email\": \"sydnie.hyatt@example.net\",
    \"phone\": \"et\",
    \"type\": \"builder\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/organizations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "inn": "et",
    "name": "vel",
    "address": {
        "country": "optio",
        "state": "praesentium",
        "city": "animi",
        "postal_code": "omnis",
        "area": "facere",
        "street": "vitae",
        "street_number": "quae",
        "cadastral_number": "aperiam"
    },
    "email": "sydnie.hyatt@example.net",
    "phone": "et",
    "type": "builder"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/organizations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

id   string  optional    
inn   string     

Example: et

name   string     

Example: vel

address   object     
country   string  optional    

Example: optio

state   string  optional    

Example: praesentium

city   string  optional    

Example: animi

postal_code   string  optional    

Example: omnis

area   string  optional    

Example: facere

street   string  optional    

Example: vitae

street_number   string  optional    

Example: quae

cadastral_number   string  optional    

Example: aperiam

email   string     

Example: sydnie.hyatt@example.net

phone   string     

Example: et

type   string     

Example: builder

Must be one of:
  • builder
  • real-estate-agency
users   object  optional    
owner   object  optional    

Organization Delete

requires authentication

This endpoint allows you to organization delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/organizations/9b5361cd-d5c5-49b3-9d34-c14f8fa30591" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/organizations/9b5361cd-d5c5-49b3-9d34-c14f8fa30591"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/organizations/{organization_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

organization_id   string     

The ID of the organization. Example: 9b5361cd-d5c5-49b3-9d34-c14f8fa30591

Organization User Set Approved

requires authentication

This endpoint allows you to organization user set approved.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/organizations/9b5361cd-d5c5-49b3-9d34-c14f8fa30591/users/a00e73ba-d70a-43dd-bacf-4464fffedaa2/set_approved" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"orgId\": \"vel\",
    \"userId\": \"sapiente\",
    \"approved\": true,
    \"ban_reason\": \"repudiandae\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/organizations/9b5361cd-d5c5-49b3-9d34-c14f8fa30591/users/a00e73ba-d70a-43dd-bacf-4464fffedaa2/set_approved"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "orgId": "vel",
    "userId": "sapiente",
    "approved": true,
    "ban_reason": "repudiandae"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/organizations/{organization_id}/users/{id}/set_approved

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

organization_id   string     

The ID of the organization. Example: 9b5361cd-d5c5-49b3-9d34-c14f8fa30591

id   string     

The ID of the user. Example: a00e73ba-d70a-43dd-bacf-4464fffedaa2

Body Parameters

orgId   string     

Must match an existing stored value. Example: vel

userId   string     

Must match an existing stored value. Example: sapiente

approved   boolean     

Example: true

ban_reason   string  optional    

Example: repudiandae

Organization Inn Validation

requires authentication

This endpoint allows you to organization inn validation.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/organizations/inn/validate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"inn\": \"4070194660\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/organizations/inn/validate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "inn": "4070194660"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/v1/organizations/inn/validate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

inn   string     

Must match the regex /^\d{10,12}$/. Must match an existing stored value. Example: 4070194660

Organization Update

requires authentication

This endpoint allows you to organization update.
Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/organizations/9b5361cd-d5c5-49b3-9d34-c14f8fa30591/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"inn\": \"voluptatem\",
    \"name\": \"est\",
    \"address\": {
        \"country\": \"non\",
        \"state\": \"deleniti\",
        \"city\": \"et\",
        \"postal_code\": \"laboriosam\",
        \"area\": \"adipisci\",
        \"street\": \"tempore\",
        \"street_number\": \"voluptas\",
        \"cadastral_number\": \"qui\"
    },
    \"roles\": []
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/organizations/9b5361cd-d5c5-49b3-9d34-c14f8fa30591/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "inn": "voluptatem",
    "name": "est",
    "address": {
        "country": "non",
        "state": "deleniti",
        "city": "et",
        "postal_code": "laboriosam",
        "area": "adipisci",
        "street": "tempore",
        "street_number": "voluptas",
        "cadastral_number": "qui"
    },
    "roles": []
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/organizations/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the organization. Example: 9b5361cd-d5c5-49b3-9d34-c14f8fa30591

Body Parameters

inn   string     

Example: voluptatem

name   string     

Example: est

address   object     
country   string  optional    

Example: non

state   string  optional    

Example: deleniti

city   string  optional    

Example: et

postal_code   string  optional    

Example: laboriosam

area   string  optional    

Example: adipisci

street   string  optional    

Example: tempore

street_number   string  optional    

Example: voluptas

cadastral_number   string  optional    

Example: qui

password   string  optional    
email   string  optional    
phone   string  optional    
remember_token   string  optional    
profile_photo_path   string  optional    
roles   object     

Organization Show

requires authentication

This endpoint allows you to organization show.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/organizations/9b5361cd-d5c5-49b3-9d34-c14f8fa30591/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/organizations/9b5361cd-d5c5-49b3-9d34-c14f8fa30591/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/organizations/{organization_id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

organization_id   string     

The ID of the organization. Example: 9b5361cd-d5c5-49b3-9d34-c14f8fa30591

Pdf

Pdf Realty Download

requires authentication

This endpoint allows you to pdf realty download.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/pdf/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/pdf/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/v1/pdf/realty/{realty_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Permissions

Get All permissions

requires authentication

This endpoint allows you to get all permissions.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/permissions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/permissions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "07ba29bf-3032-4e47-b9c1-27f609783254",
            "name": "create_article",
            "description": null,
            "guard_name": "user"
        },
        {
            "id": "1ba8f60a-6fd4-41b4-81a4-41e526480d4b",
            "name": "create_article_category",
            "description": null,
            "guard_name": "user"
        },
        {
            "id": "2ac03038-e868-47db-a934-75b5b891a837",
            "name": "force_delete_realty",
            "description": null,
            "guard_name": "user"
        },
        {
            "id": "40347bbb-8c86-45d0-9a41-0fb3e65141e3",
            "name": "edit_user",
            "description": null,
            "guard_name": "user"
        }
    ]
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/permissions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Create permission

requires authentication

This endpoint allows you to create permission.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/permissions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"delectus\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/permissions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

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

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "permission": {
            "name": "delete_user",
            "description": null,
            "guard_name": "organization"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/permissions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Example: delectus

description   string  optional    

Show permission

requires authentication

This endpoint allows you to get permission by UUID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/permissions/894fe12e-0304-35a2-bb49-e5f3b664e51e/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/permissions/894fe12e-0304-35a2-bb49-e5f3b664e51e/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "permission": {
            "name": "delete_user",
            "description": null,
            "guard_name": "organization"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/permissions/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the permission Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Delete permission

requires authentication

This endpoint allows you to delete permission.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/permissions/07ba29bf-3032-4e47-b9c1-27f609783254" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/permissions/07ba29bf-3032-4e47-b9c1-27f609783254"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "status": "Deleted"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/permissions/{permission_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

permission_id   string     

The ID of the permission. Example: 07ba29bf-3032-4e47-b9c1-27f609783254

id   string     

The ID of the permission Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Public

Search by INN

This endpoint allows you search organizations by INN.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/public/search_by_inn/7707083893"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/public/search_by_inn/7707083893"
);



fetch(url, {
    method: "GET",
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": null,
            "inn": "232010357008",
            "name": "ИП Каратеев Александр Сергеевич",
            "address": {
                "country": "Россия",
                "state": "Краснодарский край",
                "city": "Сочи",
                "postal_code": "354000",
                "area": null,
                "street": "",
                "street_number": null
            },
            "profile_photo_path": null
        }
    ],
    "error": null,
    "message": "Success"
}
 

Request      

GET api/v1/public/search_by_inn/{inn}

URL Parameters

inn   string     

INN search query string Example: 7707083893

Public Egrn

Egrn Keys

requires authentication

This endpoint allows you to egrn keys.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/public/egrn/keys" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/public/egrn/keys"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/public/egrn/keys

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Public Organization

Organization Type

requires authentication

This endpoint allows you to organization type.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/public/organization/types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/public/organization/types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/public/organization/types

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

requires authentication

This endpoint allows you to organization search.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/public/organization/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"needle\": \"nesciunt\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/public/organization/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "needle": "nesciunt"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Show organization by inn

This endpoint allows you to retrieve the organization by INN from our database

Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/public/organization/2320185812"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/public/organization/2320185812"
);



fetch(url, {
    method: "GET",
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/public/organization/{organization_inn}

URL Parameters

organization_inn   integer     

The INN of the organization. Example: 2320185812

Realty

Get Realty Videos

requires authentication

This endpoint allows you to get realty videos.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/videos" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/videos"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "videos": [
            {
                "id": "43ade673-a7c5-4bbe-bd1b-aa0e6d93b97a",
                "file_path": "videos/01909300-dbf8-7201-8886-329465011195.mp4",
                "youtube_id": "ERHFYpsgiH4",
                "created_at": "2024-07-20T19:44:45+00:00",
                "updated_at": "2024-07-20T19:44:46+00:00"
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/realty/{realty_id}/videos

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Set Realty Visibility

requires authentication

This endpoint allows you to set realty visibility.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/set_visibility" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"visibility\": \"public\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/set_visibility"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "visibility": "public"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "Status": "Success"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/realty/{realty_id}/set_visibility

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Body Parameters

visibility   string     

Example: public

Must be one of:
  • private
  • protected
  • public

Transfer realty to new owner

requires authentication

This endpoint allows you to transfer realty to new owner.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/transfer_control" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"email\": \"test@example.com\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/transfer_control"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "test@example.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "success": true
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/v1/realty/{realty_id}/transfer_control

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Body Parameters

email   string     

User email address Example: test@example.com

Give permissions for realty to selected users (by email list)

requires authentication

This endpoint allows you to give permissions for realty to selected users (by email list).
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/permissions_give" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"email_list\": [
        \"test@test.com\",
        \"test2@test.com\"
    ],
    \"permissions\": [
        \"read\",
        \"update\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/permissions_give"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email_list": [
        "test@test.com",
        "test2@test.com"
    ],
    "permissions": [
        "read",
        "update"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "success": true
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/v1/realty/{realty_id}/permissions_give

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Body Parameters

email_list   string[]     

User emails list

permissions   string[]     

Permission list

Check if current user has permission for realty

requires authentication

Checks whether the authenticated user has the specified permission for the given realty object.
Returns 200 if access is granted, 403 if the user does not have the required permission.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty/550e8400-e29b-41d4-a716-446655440000/check-permission" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/550e8400-e29b-41d4-a716-446655440000/check-permission"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "user_can_read": true,
        "user_can_update": false
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (403, The user does not have the specified permission for this realty):


{
    "success": false,
    "data": null,
    "error": "Forbidden",
    "message": "Forbidden"
}
 

Request      

GET api/v1/realty/{realty}/check-permission

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realty   string     

The UUID of the realty object Example: 550e8400-e29b-41d4-a716-446655440000

Realty Permission Detach

requires authentication

This endpoint allows you to realty permission detach.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/permissions_detach" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"email_list\": [
        \"eligendi\"
    ],
    \"permissions\": [
        \"delete\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/permissions_detach"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email_list": [
        "eligendi"
    ],
    "permissions": [
        "delete"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/realty/{realty_id}/permissions_detach

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Body Parameters

email_list   string[]     
permissions   string[]     
Must be one of:
  • read
  • update
  • delete

Realty Filter Count

requires authentication

This endpoint allows you to realty filter count.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty/realty-filter-count" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/realty-filter-count"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/realty/realty-filter-count

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Get Realty Objects

requires authentication

Получение списка объектов недвижимости с возможностью фильтрации по различным параметрам.

Поддерживается:

Примеры запросов:

# Базовая пагинация:
GET /api/v1/realty?pagination[limit]=20&pagination[offset]=0

# Сортировка по цене (сначала дешевые):
GET /api/v1/realty?sort=object_price

# Сортировка по убыванию даты обновления (по умолчанию):
GET /api/v1/realty?sort=-current_updated_at

# Комбинированная сортировка (по цене и дате):
GET /api/v1/realty?sort=object_price,-created_at

# Фильтрация по статусу и типу сделки:
GET /api/v1/realty?filter[status]=published&filter[deal_type]=sale

# Фильтрация по диапазону цены:
GET /api/v1/realty?filter[price][]=2000000&filter[price][]=5000000

# Фильтрация по нескольким районам:
GET /api/v1/realty?filter[area_relation][]=9b6e0a09-2c31-4fc3-8325-76bcdf1372be&filter[area_relation][]=9b6e0a09-2c31-4fc3-8325-76bcdf1372bf

# Фильтрация с булевыми параметрами:
GET /api/v1/realty?filter[from_owner]=1&filter[not_first_floor]=true

# Поиск по названию или адресу:
GET /api/v1/realty?filter[name]=ЖК Рыба

# Сложная фильтрация (статус, тип сделки, цена, комнаты):
GET /api/v1/realty?filter[status]=published&filter[deal_type]=sale&filter[price][]=2000000&filter[price][]=5000000&filter[rooms]=2

# Выбор конкретных полей:
GET /api/v1/realty?fields[]=id&fields[]=name&fields[]=price&fields[]=address

# Загрузка связанных данных:
GET /api/v1/realty?include=price,images,owner,area.city

# Полный пример с пагинацией, сортировкой, фильтрацией, выбором полей и загрузкой связей:
GET /api/v1/realty?filter[status]=published&filter[deal_type]=sale&filter[complex_is_completed]=1&sort=-current_updated_at&fields[]=id&fields[]=name&fields[]=price&fields[]=address&include=price,images,owner&pagination[limit]=20&pagination[offset]=0
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty?pagination%5Blimit%5D=17&pagination%5Boffset%5D=11&sort=qui&fields%5B%5D=odio&include=fuga&filter%5BwithRegion%5D=expedita&filter%5BwithCountryRegion%5D=non&filter%5BwithCityRegion%5D=ut&filter%5Bname%5D=deleniti&filter%5Btype_id%5D=fugit&filter%5Bdeal_type%5D=quaerat&filter%5Brooms%5D=12&filter%5Bfloor%5D=18&filter%5Bprice%5D=ea&filter%5Bprice_per_sqm%5D=porro&filter%5Bnot_last_floor%5D=1&filter%5Bnot_first_floor%5D=&filter%5Bfrom_owner%5D=1&filter%5Bis_owner%5D=&filter%5Bstatus%5D=eius&filter%5Bcomplex_is_published%5D=13&filter%5Bcomplex_square%5D=sequi&filter%5Bcomplex_price%5D=et&filter%5Bcomplex_price_per_sqm%5D=sit&filter%5Bcomplex_has_campaign%5D=1&filter%5Bcomplex_floor%5D[]=et&filter%5Bcomplex_rooms%5D[]=quos&filter%5Bcomplex_from_owner%5D=1&filter%5Bcomplex_is_completed%5D=&filter%5Bcomplex_completion_interval%5D[]=delectus&filter%5Bcomplex_not_first_floor%5D=&filter%5Bcomplex_not_last_floor%5D=1&filter%5Barea_relation%5D[]=est&filter%5Bsub_area%5D[]=quia&filter%5Bestate_type%5D=natus&filter%5Bnumber_of_rooms%5D=voluptas&filter%5Bfz214%5D=1&filter%5Bproperty_options%5D[]=eum&filter%5Bproperty%5D%5Bsquare%5D=error&filter%5Bproperty%5D%5Bcomplex_rooms%5D%5B%5D[]=et&filter%5Bproperty%5D%5Bprice%5D=hic&filter%5Bproperty%5D%5Bprice_sqm%5D=vel&filter%5Bproperty%5D%5Bfrom_owner%5D=1&filter%5Bproperty%5D%5Bnumber_of_rooms%5D%5B%5D[]=atque&filter%5Bproperty%5D%5Boptions%5D%5B%5D[]=voluptate&filter%5Bproperty%5D%5Bsale%5D=1&filter%5Bproperty%5D%5Bwindow_view%5D%5B%5D[]=qui&filter%5Bhouse_status%5D=corporis&filter%5Bpool%5D=1&filter%5Bcountry%5D=id&filter%5Btrashed%5D=1&filter%5Barchived%5D=1&filter%5Baddress%5D=enim&filter%5Bis_aska_realty%5D=&filter%5Buser_id%5D=consequatur" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty"
);

const params = {
    "pagination[limit]": "17",
    "pagination[offset]": "11",
    "sort": "qui",
    "fields[]": "odio",
    "include": "fuga",
    "filter[withRegion]": "expedita",
    "filter[withCountryRegion]": "non",
    "filter[withCityRegion]": "ut",
    "filter[name]": "deleniti",
    "filter[type_id]": "fugit",
    "filter[deal_type]": "quaerat",
    "filter[rooms]": "12",
    "filter[floor]": "18",
    "filter[price]": "ea",
    "filter[price_per_sqm]": "porro",
    "filter[not_last_floor]": "1",
    "filter[not_first_floor]": "0",
    "filter[from_owner]": "1",
    "filter[is_owner]": "0",
    "filter[status]": "eius",
    "filter[complex_is_published]": "13",
    "filter[complex_square]": "sequi",
    "filter[complex_price]": "et",
    "filter[complex_price_per_sqm]": "sit",
    "filter[complex_has_campaign]": "1",
    "filter[complex_floor][0]": "et",
    "filter[complex_rooms][0]": "quos",
    "filter[complex_from_owner]": "1",
    "filter[complex_is_completed]": "0",
    "filter[complex_completion_interval][0]": "delectus",
    "filter[complex_not_first_floor]": "0",
    "filter[complex_not_last_floor]": "1",
    "filter[area_relation][0]": "est",
    "filter[sub_area][0]": "quia",
    "filter[estate_type]": "natus",
    "filter[number_of_rooms]": "voluptas",
    "filter[fz214]": "1",
    "filter[property_options][0]": "eum",
    "filter[property][square]": "error",
    "filter[property][complex_rooms][][0]": "et",
    "filter[property][price]": "hic",
    "filter[property][price_sqm]": "vel",
    "filter[property][from_owner]": "1",
    "filter[property][number_of_rooms][][0]": "atque",
    "filter[property][options][][0]": "voluptate",
    "filter[property][sale]": "1",
    "filter[property][window_view][][0]": "qui",
    "filter[house_status]": "corporis",
    "filter[pool]": "1",
    "filter[country]": "id",
    "filter[trashed]": "1",
    "filter[archived]": "1",
    "filter[address]": "enim",
    "filter[is_aska_realty]": "0",
    "filter[user_id]": "consequatur",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
            "name": "жк рыба",
            "description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
            "address": {
                "country": "Россия",
                "state": "г Москва",
                "city": "Москва",
                "postal_code": "109147",
                "area": null,
                "street": "ул Абельмановская",
                "street_number": null
            },
            "liked": false,
            "location": [
                37.670133,
                55.73518
            ],
            "images": [],
            "area": {
                "id": "9b6e0a09-2c31-4fc3-8325-76bcdf1372be",
                "name": "Адлерский",
                "deleted_at": null,
                "city": {
                    "id": "9b6dff1d-23f1-4189-b23a-8fb2162fb687",
                    "name": "Сочи",
                    "deleted_at": null,
                    "country": {
                        "id": "9b6dff1d-20c7-4e06-a573-73faefadc8e4",
                        "name": "Россия",
                        "deleted_at": null
                    }
                }
            },
            "main_image": null,
            "created_at": "04.03.2024",
            "updated_at": "04.03.2024",
            "price": {
                "price_per_sqm": 11222,
                "object_price": 1233233
            },
            "status": "published",
            "contacts": [
                {
                    "id": "9b7c2924-ac4b-44c3-8986-d20e88f2f05f",
                    "name": "станислав",
                    "phone": "79872827062",
                    "email": "ximik.tut@mail.ru",
                    "type": "builder",
                    "commission": "13444",
                    "commission_type": "fixed",
                    "note": "рыбарыбарыба"
                }
            ],
            "realty_type": {
                "id": "9b6dff1d-aef6-496f-97ad-293d5c87cccc",
                "slug": "novostroiki"
            },
            "deleted_at": null,
            "user_can_read": true,
            "user_can_update": true
        },
        {
            "id": "9b7c0ec1-7a9f-4e41-8c6d-adb61619b8b8",
            "name": "ЖК Пример",
            "description": "ОписаниеОписаниеОписаниеОписание",
            "address": {
                "country": "Россия",
                "state": "Краснодарский край",
                "city": "Сочи",
                "postal_code": "354000",
                "area": null,
                "street": "ул Пластунская",
                "street_number": "52Ж/4"
            },
            "liked": false,
            "location": [
                39.7388129,
                43.6042021
            ],
            "aggregates": {
                "property_count": 0,
                "property_sale_count": 0,
                "property_public_count": 0,
                "property_public_sale_count": 0
            },
            "images": [],
            "area": {
                "id": "9b6e0a09-2c31-4fc3-8325-76bcdf1372be",
                "name": "Адлерский",
                "deleted_at": null,
                "city": {
                    "id": "9b6dff1d-23f1-4189-b23a-8fb2162fb687",
                    "name": "Сочи",
                    "deleted_at": null,
                    "country": {
                        "id": "9b6dff1d-20c7-4e06-a573-73faefadc8e4",
                        "name": "Россия",
                        "deleted_at": null
                    }
                }
            },
            "main_image": null,
            "created_at": "04.03.2024",
            "updated_at": "27.03.2024",
            "price": {
                "object_price": 3000000
            },
            "contacts": [
                {
                    "id": "9b7c0ec1-9724-40cd-acbc-864457c6d7b2",
                    "name": "Славик",
                    "phone": null,
                    "email": "1@mail.ru",
                    "type": "builder",
                    "commission": null,
                    "commission_type": "fixed",
                    "note": null
                }
            ],
            "realty_type": {
                "id": "9b6dff1d-aef6-496f-97ad-293d5c87cccc",
                "slug": "novostroiki"
            },
            "deleted_at": null,
            "user_can_update": true
        }
    ],
    "meta": {
        "pagination": {
            "offset": 0,
            "limit": 10,
            "total": 3843,
            "hasMore": true,
            "type": "offset"
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/realty

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

pagination[limit]   integer     

Количество записей на странице. По умолчанию: 10 Максимум: без ограничений если указать (-1)

Пример: pagination[limit]=20

Полный пример с offset: pagination[limit]=20&pagination[offset]=40 Example: 17

pagination[offset]   integer     

Смещение от начала выборки (количество записей, которые нужно пропустить). Используется для постраничной навигации вместе с limit.

Примеры:

  • offset=0 - первые 20 записей (если limit=20)
  • offset=20 - следующие 20 записей
  • offset=40 - еще 20 записей и т.д.

Пример: pagination[offset]=20&pagination[limit]=20 Example: 11

sort   string     

Поле для сортировки результатов. Можно указать несколько полей через запятую. Минус (-) перед полем означает сортировку по убыванию.

Доступные поля для сортировки:

  • created_at - по дате создания (по возрастанию)
  • -created_at - по дате создания (по убыванию)
  • current_updated_at - по дате обновления (по возрастанию)
  • -current_updated_at - по дате обновления (по убыванию) - используется по умолчанию
  • object_price - по цене объекта (по возрастанию)
  • -object_price - по цене объекта (по убыванию)

Примеры использования: sort=-current_updated_at,object_price Сортировка по умолчанию: -current_updated_at (сначала новые) Example: qui

fields[]   string     

Поля объекта недвижимости для включения в ответ. Параметр может повторяться несколько раз для указания нескольких полей.

Доступные поля:

  • id - уникальный идентификатор
  • user_id - ID владельца
  • name - название
  • full_name - полное название из Aska CRM
  • description - описание
  • additional_info - дополнительная информация
  • lawyer_comment - комментарий юриста
  • address - адрес (JSON объект)
  • area_id - ID района
  • sub_area_id - ID микрорайона
  • type_id - ID типа недвижимости
  • deal_type - тип сделки (sale/rent)
  • status - статус (draft/published/archived)
  • archived - архивный объект (0/1)
  • visibility - видимость (private/protected/public)
  • is_chess_binded - привязан ли к шахматке
  • crm_approve - одобрено в CRM
  • location - координаты
  • created_at - дата создания
  • updated_at - дата обновления
  • deleted_at - дата удаления
  • clear_name - очищенное название
  • contacts_data - данные контактов (JSON)
  • video_group_id - ID видео группы
  • current_created_at - актуальная дата создания
  • current_updated_at - актуальная дата обновления
  • aska_crm_external_id - ID во внешней CRM
  • aska_lot - номер лота в Aska
  • calculated_property_count - расчетное количество объектов
  • calculated_sale_property_count - расчетное количество объектов на продаже Example: odio
include   string     

Связанные данные для загрузки (через запятую).

Доступные связи:

  • area.city.country - полная иерархия местоположения
  • area.subAreas - все микрорайоны
  • subArea - первый микрорайон
  • totalArea - отображает подсчеты для в поле total_area
  • features - особенности объекта
  • price - информация о ценах
  • type - тип недвижимости
  • aggregates - агрегированные данные
  • owner - владелец объекта
  • owner.phone - телефон владельца
  • owner.roles - роли владельца
  • owner.organizations - организации владельца
  • owner.department - отдел владельца
  • usersByPermissions - пользователи с правами
  • contactWithLowestCommission - контакт с минимальной комиссией
  • videoGroup - видео группа
  • binding - связи
  • visibleContacts - видимые контакты
  • builderContact - контакт застройщика
  • realtyType - тип недвижимости
  • like - лайки
  • users - пользователи с доступом
  • buildings - корпуса (для ЖК)
  • mainImage - главное изображение
  • square - площадь
  • firstImage - первое изображение Example: fuga
filter[withRegion]   string     

Фильтрует объекты по региону текущего пользователя — применяет оба условия одновременно: страну (country_id) и город (city_id) из профиля авторизованного пользователя.

Если у пользователя не заполнен country_id или city_id — соответствующее условие не применяется.

⚠️ Значение параметра не имеет значения — фильтр активируется при любом переданном значении.

Пример: filter[withRegion]=1 Example: expedita

filter[withCountryRegion]   string     

Фильтрует объекты по стране текущего пользователя. Использует country_id из профиля авторизованного пользователя.

Если у пользователя не заполнен country_id — фильтр не применяется.

⚠️ Значение параметра не имеет значения — фильтр активируется при любом переданном значении.

Пример: filter[withCountryRegion]=1 Example: non

filter[withCityRegion]   string     

Фильтрует объекты по городу текущего пользователя. Использует city_id из профиля авторизованного пользователя.

Если у пользователя не заполнен city_id — фильтр не применяется.

⚠️ Значение параметра не имеет значения — фильтр активируется при любом переданном значении.

Пример: filter[withCityRegion]=1 Example: ut

filter[name]   string     

Поиск по названию объекта, адресу, имени или телефону застройщика. Выполняется частичное совпадение (поиск подстроки).

Пример: filter[name]=ЖК Рыба Example: deleniti

filter[type_id]   string     

ID типа объекта недвижимости.

Пример: filter[type_id]=9b6dff1d-aef6-496f-97ad-293d5c87cccc Example: fugit

filter[deal_type]   string     

Тип сделки.

Доступные значения:

  • sale - продажа
  • rent - аренда

Пример: filter[deal_type]=sale Example: quaerat

filter[rooms]   integer     

Количество комнат (точное значение).

Пример: filter[rooms]=2 Example: 12

filter[floor]   integer     

Номер этажа (точное значение).

Пример: filter[floor]=5 Example: 18

filter[price]   string     

Фильтрация по цене.

Возможные форматы:

  1. Одно число - минимальная цена: filter[price]=1000000
  2. Массив [min, max] - диапазон цен: filter[price][]=1000000&filter[price][]=5000000

Второй вариант эквивалентен: filter[price]=1000000,5000000 Example: ea

filter[price_per_sqm]   string     

Фильтрация по цене за квадратный метр.

Возможные форматы:

  1. Одно число - минимальная цена за м²: filter[price_per_sqm]=50000
  2. Массив [min, max] - диапазон цен за м²: filter[price_per_sqm][]=50000&filter[price_per_sqm][]=150000 Example: porro
filter[not_last_floor]   boolean     

Исключить объекты на последнем этаже.

Значения:

  • 1 или true - не показывать объекты на последнем этаже
  • 0 или false - показывать все (по умолчанию)

Пример: filter[not_last_floor]=1 Example: true

filter[not_first_floor]   boolean     

Исключить объекты на первом этаже.

Значения:

  • 1 или true - не показывать объекты на первом этаже
  • 0 или false - показывать все (по умолчанию)

Пример: filter[not_first_floor]=1 Example: false

filter[from_owner]   boolean     

Только объекты от собственника (не от агентств).

Значения:

  • 1 или true - только от собственников
  • 0 или false - все объекты (по умолчанию)

Пример: filter[from_owner]=1 Example: true

filter[is_owner]   boolean     

Только объекты текущего авторизованного пользователя.

Значения:

  • 1 или true - только мои объекты
  • 0 или false - все доступные объекты (по умолчанию)

Пример: filter[is_owner]=1 Example: false

filter[status]   string     

Статус публикации объекта.

Доступные значения:

  • draft - черновик
  • published - опубликован
  • archived - в архиве
  • blocked - заблокирован
  • waiting - ожидает модерации

Пример: filter[status]=published Example: eius

filter[complex_is_published]   integer     

Только объекты в опубликованных ЖК.

Значения:

  • 1 - только в опубликованных ЖК
  • 0 - все объекты (по умолчанию)

Пример: filter[complex_is_published]=1 Example: 13

filter[complex_square]   string     

Фильтрация по площади в ЖК.

Формат: массив [min, max] Пример: filter[complex_square][]=30&filter[complex_square][]=100 Example: sequi

filter[complex_price]   string     

Фильтрация по базовой цене в ЖК.

Формат: массив [min, max] Пример: filter[complex_price][]=2000000&filter[complex_price][]=10000000 Example: et

filter[complex_price_per_sqm]   string     

Фильтрация по цене за м² в ЖК.

Формат: массив [min, max] Пример: filter[complex_price_per_sqm][]=70000&filter[complex_price_per_sqm][]=150000 Example: sit

filter[complex_has_campaign]   integer     

Показывать ли объекты с кампаниями.

Значения:

  • 1 - только с кампаниями
  • 0 - все объекты (по умолчанию)

Пример: filter[complex_has_campaign]=1 Example: 1

filter[complex_floor]   string[]     

Фильтрация по этажности ЖК.

Формат: массив [min, max] Пример: filter[complex_floor][]=5&filter[complex_floor][]=17

filter[complex_rooms]   string[]     

Фильтрация по количеству комнат в ЖК.

Формат: массив [min, max] Пример: filter[complex_rooms][]=1&filter[complex_rooms][]=4

filter[complex_from_owner]   boolean     

Выбрать все ЖК, где квартиры предлагаются от собственника/застройщика.

Значения:

  • 1 или true - только от застройщика
  • 0 или false - все ЖК (по умолчанию)

Пример: filter[complex_from_owner]=1 Example: true

filter[complex_is_completed]   boolean     

Выбрать все завершенные объекты ЖК.

Значения:

  • 1 или true - только завершенные
  • 0 или false - все (по умолчанию)

Пример: filter[complex_is_completed]=1 Example: false

filter[complex_completion_interval]   string[]     

Фильтрация по дате сдачи ЖК.

Формат: массив с датами начала и окончания в формате YYYY-MM-DD Пример: filter[complex_completion_interval][]=2024-01-01&filter[complex_completion_interval][]=2024-12-31

filter[complex_not_first_floor]   boolean     

Исключить квартиры на первых этажах в ЖК.

Значения:

  • 1 или true - исключить первые этажи
  • 0 или false - все этажи (по умолчанию)

Пример: filter[complex_not_first_floor]=1 Example: false

filter[complex_not_last_floor]   boolean     

Исключить квартиры на последних этажах в ЖК.

Значения:

  • 1 или true - исключить последние этажи
  • 0 или false - все этажи (по умолчанию)

Пример: filter[complex_not_last_floor]=1 Example: true

filter[area_relation]   string[]     

Список ID зон для фильтрации.

Пример: filter[area_relation][]=9b6e0a09-2c31-4fc3-8325-76bcdf1372be&filter[area_relation][]=9b6e0a09-2c31-4fc3-8325-76bcdf1372bf

filter[sub_area]   string[]     

Список ID микрорайонов для фильтрации.

Пример: filter[sub_area][]=9b6e0a09-2c31-4fc3-8325-76bcdf1372be&filter[sub_area][]=9b6e0a09-2c31-4fc3-8325-76bcdf1372bf

filter[estate_type]   string     

Тип недвижимости.

Доступные значения:

  • apartment - квартира
  • house - дом
  • commercial - коммерческая
  • land - участок

Пример: filter[estate_type]=apartment Example: natus

filter[number_of_rooms]   string     

Фильтрация по диапазону количества комнат.

Формат: массив [min, max] Пример: filter[number_of_rooms][]=1&filter[number_of_rooms][]=5 Example: voluptas

filter[fz214]   boolean     

Только ЖК по 214-ФЗ.

Значения:

  • 1 или true - только по 214-ФЗ
  • 0 или false - все (по умолчанию)

Пример: filter[fz214]=1 Example: true

filter[property_options]   string[]     

ID опций объекта (балкон, лифт, паркинг и т.д.).

Пример: filter[property_options][]=1&filter[property_options][]=2&filter[property_options][]=3

filter[property][square]   string     

Фильтрация по параметрам шахматки через единый вложенный фильтр.

Площадь квартиры в шахматке (chess_properties.square, диапазон).

Форматы:

  • filter[property][square]=50,70
  • filter[property][square][]=50&filter[property][square][]=70 Example: error
filter[property][complex_rooms][]   string[]     

⚠️ Legacy/уточнить у фронтенда: фильтрация по комнатности в шахматке (множественный выбор).

Формат: массив значений. Значение 4 и выше интерпретируется как "4+".

Пример: filter[property][complex_rooms][]=2&filter[property][complex_rooms][]=4

filter[property][price]   string     

Фильтрация по базовой цене квартиры в шахматке (chess_property_prices.base_price, диапазон).

Форматы:

  • filter[property][price]=100000,500000
  • filter[property][price][]=100000&filter[property][price][]=500000 Example: hic
filter[property][price_sqm]   string     

Фильтрация по цене за м² квартиры в шахматке (chess_property_prices.per_sqm, диапазон).

Форматы:

  • filter[property][price_sqm]=1000,5000
  • filter[property][price_sqm][]=1000&filter[property][price_sqm][]=5000 Example: vel
filter[property][from_owner]   boolean     

Фильтр квартир в шахматке: только от застройщика/собственника (роль builder у владельца квартиры).

Значения:

  • 1 или true — только от застройщика
  • 0 или false — только от агентств

Пример: filter[property][from_owner]=1 Example: true

filter[property][number_of_rooms][]   string[]     

Фильтрация по комнатам в шахматке (множественный выбор).

Поддерживаемые значения:

  • 1, 2, 3
  • more — больше 3 комнат

Пример: filter[property][number_of_rooms][]=2&filter[property][number_of_rooms][]=more

filter[property][options][]   string[]     

Опции квартиры в шахматке (chess_property_options, множественный выбор, OR).

Доступные значения:

  • has_furniture
  • has_decoration
  • has_appliances

Пример: filter[property][options][]=has_furniture&filter[property][options][]=has_appliances

filter[property][sale]   boolean     

Показывать только те объекты, в которых есть квартиры со статусом продажи.

Пример: filter[property][sale]=1 Example: true

filter[property][window_view][]   string[]     

Вид из окна (параметры шахматки). Проверяется JSON-поле views стояка (chess_risers) через whereJsonContains по корпусу квартиры.

Доступные значения (типичные):

  • yard — во двор
  • street — на улицу
  • sea — на море
  • park — на парк
  • river — на реку

Пример: filter[property][window_view][]=yard&filter[property][window_view][]=park

filter[house_status]   string     

Статус дома в ЖК.

Доступные значения:

  • built - построен
  • building - строится
  • project - проект

Пример: filter[house_status]=built Example: corporis

filter[pool]   boolean     

Наличие бассейна.

Значения:

  • 1 или true - с бассейном
  • 0 или false - без бассейна (по умолчанию)

Пример: filter[pool]=1 Example: true

filter[country]   string     

ID страны для фильтрации.

Пример: filter[country]=9b6dff1d-20c7-4e06-a573-73faefadc8e4 Example: id

filter[trashed]   boolean     

Включать удаленные объекты (только для администраторов).

Значения:

  • 1 или true - показывать удаленные
  • 0 или false - не показывать удаленные (по умолчанию)

Пример: filter[trashed]=1 Example: true

filter[archived]   boolean     

Фильтр по архивным объектам.

Значения:

  • 1 или true - только архивные
  • 0 или false - только неархивные

Пример: filter[archived]=1 Example: true

filter[address]   string     

Поиск по адресу (частичное совпадение).

Пример: filter[address]=Москва Example: enim

filter[is_aska_realty]   boolean     

Только объекты Aska (внутренний фильтр).

Значения:

  • 1 или true - только объекты Aska
  • 0 или false - все объекты (по умолчанию)

Пример: filter[is_aska_realty]=1 Example: false

filter[user_id]   string     

Фильтр по ID пользователя.

Пример: filter[user_id]=85f64c09-33da-43d2-bdc4-5d57380a67ac Example: consequatur

Body Parameters

filter   object  optional    
sort   string  optional    
fields   object  optional    
include   string  optional    
storage   string  optional    
Must be one of:
  • database
  • elasticsearch
pagination   object  optional    

Realty Create

requires authentication

This endpoint allows you to realty create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/realty" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"status\": \"published\",
    \"crm_approve\": true,
    \"additional_info\": \"accusamus\",
    \"lawyer_comment\": \"aspernatur\",
    \"area_id\": \"be8a26d3-222a-32b6-a3a0-a09ffec21ab0\",
    \"sub_area_id\": \"89b0bf3c-836e-3589-a83a-dac3ca4fd477\",
    \"type_id\": \"a60f0ce1-09c4-3638-a583-56b3e85908e0\",
    \"deal_type\": \"id\",
    \"building_id\": \"0c0ac1aa-b31b-3ba1-8805-8606686b5b53\",
    \"clear_name\": \"hgdkmfhdeiet\",
    \"video_group_id\": \"ab\",
    \"current_created_at\": \"officia\",
    \"current_updated_at\": \"ad\",
    \"user_id\": \"eveniet\",
    \"address\": {
        \"city\": \"quasi\",
        \"street\": \"laboriosam\"
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "published",
    "crm_approve": true,
    "additional_info": "accusamus",
    "lawyer_comment": "aspernatur",
    "area_id": "be8a26d3-222a-32b6-a3a0-a09ffec21ab0",
    "sub_area_id": "89b0bf3c-836e-3589-a83a-dac3ca4fd477",
    "type_id": "a60f0ce1-09c4-3638-a583-56b3e85908e0",
    "deal_type": "id",
    "building_id": "0c0ac1aa-b31b-3ba1-8805-8606686b5b53",
    "clear_name": "hgdkmfhdeiet",
    "video_group_id": "ab",
    "current_created_at": "officia",
    "current_updated_at": "ad",
    "user_id": "eveniet",
    "address": {
        "city": "quasi",
        "street": "laboriosam"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/realty

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

status   string     

Example: published

Must be one of:
  • draft
  • published
  • archived
crm_approve   boolean  optional    

Example: true

name   string  optional    

This field is required unless status is in draft. Поле должно быть не длиннее 255 символов.

description   string  optional    

This field is required unless status is in draft.

additional_info   string  optional    

Example: accusamus

lawyer_comment   string  optional    

Example: aspernatur

area_id   string  optional    

This field is required unless status is in draft. validation.uuid Must match an existing stored value. Example: be8a26d3-222a-32b6-a3a0-a09ffec21ab0

sub_area_id   string  optional    

This field is required unless status is in draft. validation.uuid Must match an existing stored value. Example: 89b0bf3c-836e-3589-a83a-dac3ca4fd477

address   object  optional    

This field is required unless status is in draft.

city   string  optional    

This field is required unless status is in draft. Example: quasi

street   string  optional    

This field is required unless status is in draft. Example: laboriosam

images   object  optional    
docs   object  optional    
plans   object  optional    
presentations   object  optional    
type_id   string     

validation.uuid Must match an existing stored value. Example: a60f0ce1-09c4-3638-a583-56b3e85908e0

deal_type   string  optional    

Example: id

Must be one of:
  • sell
  • rent
  • sell_rent
features   string[]  optional    
price   object  optional    
tags   object  optional    
deleted_medias   object  optional    
location   string  optional    
contacts   string  optional    
building_id   string  optional    

validation.uuid Must match an existing stored value. Example: 0c0ac1aa-b31b-3ba1-8805-8606686b5b53

visibility   string  optional    
Must be one of:
  • private
  • protected
  • public
clear_name   string  optional    

Поле должно быть не длиннее 255 символов. Example: hgdkmfhdeiet

video_group_id   string  optional    

Example: ab

current_created_at   string  optional    

Example: officia

current_updated_at   string  optional    

Example: ad

user_id   string  optional    

Example: eveniet

Get realty by ID

requires authentication

This endpoint allows you to get realty by ID.

### Contacts
- `contacts` / `visibleContacts` — контакты самого объекта (с учётом прав текущего пользователя).
- `bindingContacts` — **только для администратора**: дедуплицированные контакты типа `owner`
  с вторичных опубликованных объявлений шахматки этого ЖК/КП.
  У не-админа поле отсутствует. В сохранение объекта не входит.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "realty": {
            "id": "9d7f406b-0058-4179-81c1-676b32b68bee",
            "name": "ЖК Седьмое небо, ул. Целинная, 16 г",
            "description": "ЖК Седьмое Небо — сданный жилой комплекс, расположенный в спальном микрорайоне Верхняя Мамайка центрального Сочи по улице Целинная. ЖК Седьмое Небо — жилой комплекс комфорт класса, состоящий их трех этажей с великолепными панорамными характеристиками на море и горы.\nСтатус недвижимости «жилое помещение». В продаже от застройщика квартиры от 19 до 45 квадратных метров с черновой отделкой. Планировки правильной формы, и даже в самых компактных студиях — два окна (плюс балкон), а значит, всегда можно выделить отдельную кухню и распланировать пространство на несколько изолированных функциональных зон. Центральные коммуникации. Шикарные виды на море и на горы.\nЗакрытая благоустроенная придомовая территория - детская площадка, видеонаблюдение, придомовой паркинг. Вся необходимая для жизни инфраструктура в шаговой доступности (магазин Магнит, автобусная остановка и др.) — до железнодорожного вокзала — 10 минут езды по дублеру Курортного проспекта, детские сады и школа в 10 минутах езды на общественном транспорте, 5 минут езды на машине до моря. Аквапарк октябрьский в 3 мин езды на машине.\nДополнительное преимущество объекта в том, что с одной стороны, это ближайшая доступность насыщенной развлекательной инфраструктуры, с другой — дом расположен в некотором отдалении от шумных туристических мест, обеспечивая приватность и тишину жизни и отдыха.",
            "additional_info": null,
            "lawyer_comment": "",
            "address": {
                "country": "Россия",
                "state": null,
                "city": "Сочи",
                "postal_code": "",
                "area": null,
                "street": "Целинная улица (Верхняя Мамайка)",
                "street_number": "16 а",
                "cadastral_number": ""
            },
            "aggregates": {
                "property_count": 0,
                "property_sale_count": 0,
                "property_public_count": 0,
                "property_public_sale_count": 0
            },
            "type": {
                "id": "9b535d77-b00e-4b5c-8064-7f7cd396dc48",
                "parent_id": null,
                "slug": "novostroiki",
                "name": {
                    "ru": "Новостройки"
                },
                "sort": 0,
                "created_at": "2024-02-13T11:25:27.000000Z",
                "updated_at": "2024-02-13T11:25:27.000000Z"
            },
            "deal_type": null,
            "images": [
                {
                    "folder_name": "",
                    "images": [
                        {
                            "id": 18432,
                            "mime_type": "image/jpeg",
                            "name": "20201026-171251-2319_20201026280563",
                            "original_url": "http://api.ette.local/storage/18432/20201026-171251-2319_20201026280563.jpg",
                            "is_main": true,
                            "just_for_me": false
                        },
                        {
                            "id": 18433,
                            "mime_type": "image/jpeg",
                            "name": "20201026-171255-2319_20201026281431",
                            "original_url": "http://api.ette.local/storage/18433/20201026-171255-2319_20201026281431.jpg",
                            "is_main": false,
                            "just_for_me": false
                        }
                    ]
                }
            ],
            "docs": [
                {
                    "folder_name": "",
                    "images": [
                        {
                            "id": 18440,
                            "mime_type": "image/jpeg",
                            "name": "Юр.описание",
                            "original_url": "http://api.ette.local/storage/18440/Юр.описание.jpg",
                            "is_main": true,
                            "just_for_me": false
                        },
                        {
                            "id": 18442,
                            "mime_type": "image/jpeg",
                            "name": "1603724159",
                            "original_url": "http://api.ette.local/storage/18442/1603724159.jpeg",
                            "is_main": false,
                            "just_for_me": false
                        },
                        {
                            "id": 18443,
                            "mime_type": "image/jpeg",
                            "name": "1603724217",
                            "original_url": "http://api.ette.local/storage/18443/1603724217.jpeg",
                            "is_main": false,
                            "just_for_me": false
                        },
                        {
                            "id": 18444,
                            "mime_type": "image/jpeg",
                            "name": "1603724256",
                            "original_url": "http://api.ette.local/storage/18444/1603724256.jpeg",
                            "is_main": false,
                            "just_for_me": false
                        }
                    ]
                }
            ],
            "plans": [
                {
                    "folder_name": "",
                    "images": [
                        {
                            "id": 18441,
                            "mime_type": "image/jpeg",
                            "name": "20201026-174535-111111",
                            "original_url": "http://api.ette.local/storage/18441/20201026-174535-111111.jpeg",
                            "is_main": true,
                            "just_for_me": false
                        }
                    ]
                }
            ],
            "features": [
                {
                    "name": "Общие характеристики",
                    "sort": 2,
                    "children": [
                        {
                            "id": "9dbf7ae5-1bcf-4b42-9ecf-c9688eb829ec",
                            "parent_id": "9b6dff1d-e102-4600-a04e-335f8ca59e81",
                            "code": "sea_distance",
                            "blocked": false,
                            "name": "Расстояние до моря",
                            "sort": 0,
                            "default_unit": null,
                            "data": {
                                "required": true,
                                "tip": null,
                                "hidden_for_create": null
                            },
                            "realty_types": [],
                            "type": "text",
                            "value": "0"
                        }
                    ]
                },
                {
                    "name": "Коммуникации",
                    "sort": 4,
                    "children": [
                        {
                            "id": "9dbf7ae4-25d7-4f2a-b20f-5abaf5a22e6b",
                            "parent_id": "9b535d77-eac9-405a-b7d7-d03ea46654e6",
                            "code": "gas_pipeline",
                            "blocked": false,
                            "name": "Газопровод",
                            "sort": 0,
                            "default_unit": "9dbf7ae4-3514-4565-aaba-9bb47298df75",
                            "data": {
                                "required": true,
                                "tip": null,
                                "hidden_for_create": null
                            },
                            "realty_types": [],
                            "type": "select",
                            "value": "Нет",
                            "options": [
                                {
                                    "id": "9dbf7ae4-3514-4565-aaba-9bb47298df75",
                                    "slug": "net",
                                    "name": "Нет",
                                    "sort": 0
                                },
                                {
                                    "id": "9dbf7ae4-3329-44c3-9a8d-9f2c7e3323fb",
                                    "slug": "da",
                                    "name": "Да",
                                    "sort": 0
                                }
                            ]
                        }
                    ]
                }
            ],
            "liked": false,
            "coordinates": {
                "latitude": 43.63573,
                "longitude": 39.71191
            },
            "owner": {
                "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "name": "System Admin",
                "phone": "+79209773366",
                "role": {
                    "name": "administrator",
                    "color": "#000",
                    "description": "Администратор"
                }
            },
            "area": {
                "id": "9b5363b7-1dc4-4807-9a09-0d43abc44ddd",
                "name": "Центральный",
                "deleted_at": null,
                "city": {
                    "id": "9b535d76-d172-404c-b05b-9d0d5d13e02d",
                    "name": "Сочи",
                    "deleted_at": null,
                    "country": {
                        "id": "9b535d76-ccde-46f9-aea0-42603da2c00b",
                        "name": "Россия",
                        "deleted_at": null
                    }
                }
            },
            "subArea": {
                "id": "cb6ba26c-c854-4874-8d79-a2811c6d41bd",
                "name": "Мамайка верх",
                "deleted_at": null
            },
            "price": {
                "price_per_sqm": 236760,
                "object_price": 7600000
            },
            "commission": "12000.000",
            "commission_type": "per-sqm",
            "tags": null,
            "square": null,
            "videoGroup": [
                {
                    "id": "9f177ce0-bb7d-4356-b540-2bff6f433106",
                    "iframe": "http://api.ette.local/storage/322/394374_WhatsApp_Video_2018-02-07_at_14.33.09.mp4"
                },
                {
                    "id": "a03956e6-f4a5-4bcd-b01d-c71acde2b228",
                    "iframe": "http://api.ette.local/storage/videos/394374_WhatsApp_Video_2018-02-07_at_14.33.09.mp4"
                }
            ],
            "status": "published",
            "visibility": "public",
            "clear_name": "ЖК Седьмое небо, ул. Целинная, 16 г",
            "crm_approve": true,
            "contacts": [
                {
                    "id": "9dbfa699-89fb-4735-a9ed-13fa032bd83d",
                    "name": "Дмитрий",
                    "phone": "+79882365522",
                    "email": "",
                    "type": null,
                    "commission": "12000",
                    "commission_type": "per-sqm",
                    "note": "Возможна рассрочка до 3-х месяцев."
                }
            ],
            "bindingContacts": [
                {
                    "id": "a26009fa-3f5e-4aa0-b399-c747beaca7f3",
                    "name": "Иван",
                    "phone": "79991234567",
                    "formatted_phone": "+79991234567",
                    "email": "owner@example.com",
                    "type": "owner",
                    "commission": null,
                    "commission_type": null,
                    "note": null,
                    "is_hidden": false,
                    "sort_order": 0
                }
            ],
            "bindings": [],
            "created_at": "15.11.2024",
            "updated_at": "17.04.2023",
            "current_created_at": null,
            "current_updated_at": null,
            "user_can_read": true,
            "user_can_update": true,
            "users": []
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/realty/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Realty Update

requires authentication

This endpoint allows you to realty update.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/realty/inventore/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"crm_approve\": true,
    \"additional_info\": \"tempora\",
    \"lawyer_comment\": \"omnis\",
    \"area_id\": \"84ae5da6-604e-3dce-9da0-da4fe946dcbf\",
    \"sub_area_id\": \"2acca5ad-dd2d-3ed6-8b64-e16ca0269f74\",
    \"deal_type\": \"ipsa\",
    \"building_id\": \"b3db23c0-5d67-3cf2-8d58-0e5bb693c204\",
    \"clear_name\": \"laudantium\",
    \"video_group_id\": \"totam\",
    \"current_created_at\": \"sed\",
    \"current_updated_at\": \"voluptatibus\",
    \"is_contacts_sorted\": true,
    \"address\": {
        \"city\": \"et\",
        \"street\": \"ut\"
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/inventore/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "crm_approve": true,
    "additional_info": "tempora",
    "lawyer_comment": "omnis",
    "area_id": "84ae5da6-604e-3dce-9da0-da4fe946dcbf",
    "sub_area_id": "2acca5ad-dd2d-3ed6-8b64-e16ca0269f74",
    "deal_type": "ipsa",
    "building_id": "b3db23c0-5d67-3cf2-8d58-0e5bb693c204",
    "clear_name": "laudantium",
    "video_group_id": "totam",
    "current_created_at": "sed",
    "current_updated_at": "voluptatibus",
    "is_contacts_sorted": true,
    "address": {
        "city": "et",
        "street": "ut"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/realty/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the realty. Example: inventore

Body Parameters

status   string  optional    
Must be one of:
  • draft
  • published
  • archived
crm_approve   boolean  optional    

Example: true

name   string  optional    
description   string  optional    
additional_info   string  optional    

Example: tempora

lawyer_comment   string  optional    

Example: omnis

area_id   string  optional    

validation.uuid Must match an existing stored value. Example: 84ae5da6-604e-3dce-9da0-da4fe946dcbf

sub_area_id   string  optional    

validation.uuid Must match an existing stored value. Example: 2acca5ad-dd2d-3ed6-8b64-e16ca0269f74

address   object  optional    
city   string  optional    

This field is required unless status is in draft. Example: et

street   string  optional    

This field is required unless status is in draft. Example: ut

images   object  optional    
docs   object  optional    
plans   object  optional    
presentations   object  optional    
deal_type   string  optional    

Example: ipsa

Must be one of:
  • sell
  • rent
  • sell_rent
features   string[]  optional    
price   object  optional    
tags   object  optional    
deleted_medias   object  optional    
location   string  optional    
contacts   string  optional    
building_id   string  optional    

validation.uuid Must match an existing stored value. Example: b3db23c0-5d67-3cf2-8d58-0e5bb693c204

visibility   string  optional    
Must be one of:
  • private
  • protected
  • public
clear_name   string  optional    

Example: laudantium

video_group_id   string  optional    

Example: totam

current_created_at   string  optional    

Example: sed

current_updated_at   string  optional    

Example: voluptatibus

is_contacts_sorted   boolean  optional    

Example: true

Restore realty by ID

requires authentication

This endpoint allows you to restore realty by ID.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/restore" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8/restore"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "success": true
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/realty/{realty_id}/restore

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

id   string     

Realty ID Example: 9d7f406b-0058-4179-81c1-676b32b68bee

Realty Delete

requires authentication

This endpoint allows you to realty delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty/9eacc7e2-1971-49fe-9996-fdbf4fbd79e8"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/realty/{realty_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realty_id   string     

The ID of the realty. Example: 9eacc7e2-1971-49fe-9996-fdbf4fbd79e8

Get complexes

requires authentication

This endpoint allows you to get realty complexes.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/complexes" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/complexes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "data": [
            {
                "id": "9d525388-ba05-4bf7-9c2b-a3685809a3bf",
                "user_id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "name": "АК Radissоn Collection Hotel (Рэдиссон отель Гранд Роял) 6 корпус) ул. Виноградная, 14",
                "address": {
                    "country": "Россия",
                    "state": null,
                    "city": "Сочи",
                    "postal_code": "",
                    "area": null,
                    "street": "Виноградная улица (Новый Сочи)",
                    "street_number": "14",
                    "cadastral_number": ""
                },
                "location": [
                    39.71774,
                    43.60103
                ],
                "is_published": null,
                "is_completed": null,
                "completion_date": null,
                "type": null
            },
            {
                "id": "9d5253a5-2a47-4845-b5b6-1447d50ae726",
                "user_id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "name": "АК Апельсин, ул. Ленина, 172 б",
                "address": {
                    "country": "Россия",
                    "state": null,
                    "city": "Сочи",
                    "postal_code": "",
                    "area": null,
                    "street": "Улица Ленина",
                    "street_number": "172 Б",
                    "cadastral_number": ""
                },
                "location": [
                    39.90914,
                    43.44284
                ],
                "is_published": null,
                "is_completed": null,
                "completion_date": null,
                "type": null
            },
            {
                "id": "9d5253aa-d067-4e85-bfc7-af126785587a",
                "user_id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "name": "АК Панорама, ул. Высокогорная, 107",
                "address": {
                    "country": "Россия",
                    "state": null,
                    "city": "Сочи",
                    "postal_code": "",
                    "area": null,
                    "street": "Высокогорная улица (Новая Заря)",
                    "street_number": "107",
                    "cadastral_number": ""
                },
                "location": [
                    39.7314,
                    43.65028
                ],
                "is_published": null,
                "is_completed": null,
                "completion_date": null,
                "type": null
            },
            {
                "id": "9d5253b4-5a80-4e1c-b85f-9dcc2ebd09a7",
                "user_id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "name": "АК Гусаровский, с. Веселое, ул. Гусаровская, 9",
                "address": {
                    "country": "Россия",
                    "state": null,
                    "city": "Сочи",
                    "postal_code": "",
                    "area": null,
                    "street": "Гусаровская улица (Весёлое)",
                    "street_number": "9",
                    "cadastral_number": "23:49:0407006:4935"
                },
                "location": [
                    40.00437,
                    43.41785
                ],
                "is_published": null,
                "is_completed": null,
                "completion_date": null,
                "type": null
            }
        ],
        "links": [
            {
                "url": null,
                "label": "pagination.previous",
                "active": false
            },
            {
                "url": "http://api.ette.local:8080/api/v1/complexes?filter%5Btype_id%5D=9b535d77-b00e-4b5c-8064-7f7cd396dc48&page%5Bnumber%5D=1",
                "label": "1",
                "active": true
            },
            {
                "url": "http://api.ette.local:8080/api/v1/complexes?filter%5Btype_id%5D=9b535d77-b00e-4b5c-8064-7f7cd396dc48&page%5Bnumber%5D=1",
                "label": "pagination.next",
                "active": false
            }
        ],
        "meta": {
            "current_page": 1,
            "first_page_url": "http://api.ette.local:8080/api/v1/complexes?filter%5Btype_id%5D=9b535d77-b00e-4b5c-8064-7f7cd396dc48&page%5Bnumber%5D=1",
            "from": 1,
            "last_page": 1,
            "last_page_url": "http://api.ette.local:8080/api/v1/complexes?filter%5Btype_id%5D=9b535d77-b00e-4b5c-8064-7f7cd396dc48&page%5Bnumber%5D=1",
            "next_page_url": "http://api.ette.local:8080/api/v1/complexes?filter%5Btype_id%5D=9b535d77-b00e-4b5c-8064-7f7cd396dc48&page%5Bnumber%5D=1",
            "path": "http://api.ette.local:8080/api/v1/complexes",
            "per_page": 15,
            "prev_page_url": null,
            "to": 15,
            "total": 3
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/complexes

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Realty Feature

Get All Realty Feature

requires authentication

This endpoint allows you to get all of Realty Feature.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty_features" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty_features"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "data": [
            {
                "id": "9a05a7fd-dd70-4c7e-b6e7-5d56bf6a0ea6",
                "type_id": "9a05a7fd-d32c-4cf1-ad82-47bd19ba0493",
                "type": "divide",
                "parent_id": null,
                "code": "general_characteristics",
                "name": "Общие характеристики",
                "sort": 0,
                "default_unit": null,
                "realty_types": [],
                "data": {
                    "required": null,
                    "tip": null
                }
            },
            {
                "id": "9a05a806-d9d1-4b0e-ba58-3977bf641eef",
                "type_id": "9a05a7fd-a4a8-4356-94c6-eab75363ba43",
                "type": "select",
                "parent_id": "9a05a7fd-f408-4cfd-a8d0-35f8a2e060d4",
                "code": "rent_time",
                "name": "Время аренды",
                "sort": 0,
                "default_unit": null,
                "realty_types": [
                    "9a05a7fd-344c-4add-abea-2ad8cd1dde0a"
                ],
                "data": {
                    "required": false,
                    "tip": null
                },
                "options": [
                    {
                        "sort": 0,
                        "slug": "net",
                        "name": "Нет",
                        "realty_type_id": null
                    }
                ]
            }
        ],
        "links": [],
        "meta": {
            "path": "http://localhost/api/v1/realty_features",
            "per_page": 15,
            "next_cursor": "eyJzb3J0IjoyLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9",
            "next_page_url": "http://localhost/api/v1/realty_features?page%5Bcursor%5D=eyJzb3J0IjoyLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9",
            "prev_cursor": null,
            "prev_page_url": null
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/realty_features

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Create Realty Feature

requires authentication

This endpoint allows you to create Realty Feature object.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/realty_features" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"type_id\": \"fe812b16-05bc-364f-9c1d-4ad580e53a48\",
    \"name\": \"illum\",
    \"sort\": 2781.9299,
    \"realty_types\": []
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty_features"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type_id": "fe812b16-05bc-364f-9c1d-4ad580e53a48",
    "name": "illum",
    "sort": 2781.9299,
    "realty_types": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "feature": {
            "id": "9a05f6f0-1359-4219-87c9-3feadfe33227",
            "type_id": "9a05a7fd-aa48-417f-a6a5-734612ece4a6",
            "type": "multiple",
            "parent_id": null,
            "code": "pavpavvfsdfdsa",
            "name": "павпаввfsdfdsа",
            "sort": 0,
            "default_unit": null,
            "realty_types": [
                "9a05a7fd-461f-4ef9-abb0-341995c14a75"
            ],
            "data": {
                "required": "false",
                "tip": null
            },
            "options": [
                {
                    "sort": 0,
                    "slug": "pavpavvfsdfdsa",
                    "name": "павпаввfsdfdsа",
                    "realty_type_id": null
                }
            ]
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/realty_features

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

id   string  optional    

validation.uuid.

type_id   string     

validation.uuid Must match an existing stored value. Example: fe812b16-05bc-364f-9c1d-4ad580e53a48

type   string  optional    
status   string  optional    
Must be one of:
  • public
  • hidden
  • private
parent_id   string  optional    

validation.uuid Must match an existing stored value.

code   string  optional    
name   string     

Example: illum

sort   number     

Example: 2781.9299

blocked   boolean  optional    
default_unit   string  optional    
realty_types   object     

Must match an existing stored value.

value   string  optional    
data   object  optional    
options   string  optional    

This field is required when type is select or multiple.

filterable   boolean  optional    
realty_types_collection   object  optional    

Show Realty Feature

requires authentication

This endpoint allows you to get Realty Feature by UUID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty_features/014538e3-1720-46db-abf1-496674f23678/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty_features/014538e3-1720-46db-abf1-496674f23678/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "feature": {
            "id": "9a05f6f0-1359-4219-87c9-3feadfe33227",
            "type_id": "9a05a7fd-aa48-417f-a6a5-734612ece4a6",
            "type": "multiple",
            "parent_id": null,
            "code": "pavpavvfsdfdsa",
            "name": "павпаввfsdfdsа",
            "sort": 0,
            "blocked": false,
            "default_unit": null,
            "realty_types": [
                "9a05a7fd-461f-4ef9-abb0-341995c14a75"
            ],
            "data": {
                "required": "false",
                "tip": null
            },
            "options": [
                {
                    "sort": 0,
                    "slug": "pavpavvfsdfdsa",
                    "name": "павпаввfsdfdsа",
                    "realty_type_id": null
                }
            ]
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/realty_features/{realtyFeature_id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realtyFeature_id   string     

The ID of the realtyFeature. Example: 014538e3-1720-46db-abf1-496674f23678

id   string     

The ID of the realty feature Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Update Realty Feature

requires authentication

This endpoint allows you to update Realty Feature Object.
Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/realty_features/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"type_id\": \"f8b76214-51aa-3444-8468-6aec2e607ad6\",
    \"name\": \"architecto\",
    \"sort\": 1137.063497,
    \"realty_types\": []
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty_features/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type_id": "f8b76214-51aa-3444-8468-6aec2e607ad6",
    "name": "architecto",
    "sort": 1137.063497,
    "realty_types": []
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "feature": {
            "id": "9a05f6f0-1359-4219-87c9-3feadfe33227",
            "type_id": "9a05a7fd-aa48-417f-a6a5-734612ece4a6",
            "type": "multiple",
            "parent_id": null,
            "code": "pavpavvfsdfdsa",
            "name": "павпаввfsdfdsа",
            "sort": 0,
            "default_unit": null,
            "realty_types": [
                "9a05a7fd-461f-4ef9-abb0-341995c14a75"
            ],
            "data": {
                "required": "false",
                "tip": null
            },
            "options": [
                {
                    "sort": 0,
                    "slug": "pavpavvfsdfdsa",
                    "name": "павпаввfsdfdsа",
                    "realty_type_id": null
                }
            ]
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/realty_features/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the realty feature Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Body Parameters

id   string  optional    

validation.uuid.

type_id   string     

validation.uuid Must match an existing stored value. Example: f8b76214-51aa-3444-8468-6aec2e607ad6

type   string  optional    
status   string  optional    
Must be one of:
  • public
  • hidden
  • private
parent_id   string  optional    

validation.uuid Must match an existing stored value.

code   string  optional    
name   string     

Example: architecto

sort   number     

Example: 1137.063497

blocked   boolean  optional    
default_unit   string  optional    
realty_types   object     

Must match an existing stored value.

value   string  optional    
data   object  optional    
options   string  optional    

This field is required when type is select or multiple.

filterable   boolean  optional    
realty_types_collection   object  optional    

Delete Realty Feature

requires authentication

This endpoint allows you to delete Realty Feature object.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/realty_features/014538e3-1720-46db-abf1-496674f23678" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty_features/014538e3-1720-46db-abf1-496674f23678"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/realty_features/{realtyFeature_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realtyFeature_id   string     

The ID of the realtyFeature. Example: 014538e3-1720-46db-abf1-496674f23678

id   string     

The ID of the realty feature Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Sort Realty Feature

requires authentication

This endpoint allows you to set sort param for Realty Feature by UUID.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/realty_features/sort" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"features\": {
        \"feature_id\": \"9eacc7df-8330-40c7-8d38-10c72715def7\",
        \"sort\": 1395
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty_features/sort"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "features": {
        "feature_id": "9eacc7df-8330-40c7-8d38-10c72715def7",
        "sort": 1395
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/v1/realty_features/sort

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

features   object  optional    
feature_id   string     

Must match an existing stored value. Example: 9eacc7df-8330-40c7-8d38-10c72715def7

sort   number     

Example: 1395

Realty Feature Option

Realty Feature Options set sort

requires authentication

This endpoint allows you to set sort for many realty feature options.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/realty_feature_options/sort" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"options\": {
        \"option_id\": \"f2277b69-1bd2-4178-b2d5-25cdaacc7c43\",
        \"sort\": 1640556.316412
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty_feature_options/sort"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "options": {
        "option_id": "f2277b69-1bd2-4178-b2d5-25cdaacc7c43",
        "sort": 1640556.316412
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

POST api/v1/realty_feature_options/sort

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

options   object  optional    
option_id   string     

validation.uuid Must match an existing stored value. Example: f2277b69-1bd2-4178-b2d5-25cdaacc7c43

sort   number     

Example: 1640556.316412

Realty Feature Type

Get Realty Feature Types

requires authentication

This endpoint allows you to set sort for many realty feature options.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty_features_types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty_features_types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "9a05a7fd-9a9e-4484-9f6c-341026802f24",
            "slug": "text",
            "name": "Текстовое поле"
        }
    ],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/realty_features_types

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

RealtyType

Realty Type Update

requires authentication

This endpoint allows you to realty type update.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/realty-type/03c7628a-417c-4620-b531-b233449cab95" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty-type/03c7628a-417c-4620-b531-b233449cab95"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/realty-type/{realtyType_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realtyType_id   string     

The ID of the realtyType. Example: 03c7628a-417c-4620-b531-b233449cab95

Realty Type Delete

requires authentication

This endpoint allows you to realty type delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/realty-type/03c7628a-417c-4620-b531-b233449cab95" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty-type/03c7628a-417c-4620-b531-b233449cab95"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/realty-type/{realtyType_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realtyType_id   string     

The ID of the realtyType. Example: 03c7628a-417c-4620-b531-b233449cab95

Realty Type

Get all realty types

requires authentication

This endpoint allows you to get all realty types.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [
        {
            "types": [
                {
                    "id": "9b535d77-b00e-4b5c-8064-7f7cd396dc48",
                    "name": "Новостройки",
                    "slug": "novostroiki",
                    "sort": 0,
                    "children": []
                },
                {
                    "id": "398fae4e-3af2-46d1-a703-55a8ad44fd94",
                    "name": "Коттеджный посёлок",
                    "slug": "poselok",
                    "sort": 1,
                    "children": []
                },
                {
                    "id": "9b535d77-b154-4589-b9e9-84f0e19d4bc2",
                    "name": "Квартира",
                    "slug": "kvartiry",
                    "sort": 2,
                    "children": [
                        {
                            "id": "9b535d77-b6b5-4682-94b1-8384913a2c37",
                            "name": "Квартира",
                            "slug": "kvartira",
                            "sort": 0
                        },
                        {
                            "id": "9b535d77-b86c-4aba-be0a-47fa2cebb617",
                            "name": "Жилое помещение",
                            "slug": "ziloe-pomeshhenie",
                            "sort": 0
                        },
                        {
                            "id": "9b535d77-b78a-4344-be94-9266905cf453",
                            "name": "Апартаменты",
                            "slug": "apartamenty",
                            "sort": 0
                        }
                    ]
                },
                {
                    "id": "9b535d77-b260-471c-b0fc-eaf1e24bc1f0",
                    "name": "Дома",
                    "slug": "doma",
                    "sort": 3,
                    "children": [
                        {
                            "id": "6ee248e5-6293-487b-a222-1311befe1b10",
                            "name": "Частный дом",
                            "slug": "chastniy-dom",
                            "sort": 0
                        },
                        {
                            "id": "354b3708-30cf-4e65-b9b2-b911907afd3c",
                            "name": "Дача",
                            "slug": "dacha",
                            "sort": 1
                        },
                        {
                            "id": "44225c1e-eafb-4072-bf2b-c495bd7a3cf8",
                            "name": "Таунхаус",
                            "slug": "townhouse",
                            "sort": 2
                        },
                        {
                            "id": "18af39ac-d5c5-4a65-9672-df0f9214c65e",
                            "name": "Дуплекс",
                            "slug": "duplex",
                            "sort": 3
                        },
                        {
                            "id": "b0f3fcd4-7581-4071-86e1-d4a3274adcfd",
                            "name": "Часть дома",
                            "slug": "chast-doma",
                            "sort": 5
                        }
                    ]
                },
                {
                    "id": "9b535d77-b317-42c6-ae65-398296f41b6b",
                    "name": "Земельный участок",
                    "slug": "zemelnye-ucastki",
                    "sort": 4,
                    "children": []
                },
                {
                    "id": "9b535d77-b46d-4cdd-8025-7b188edc5630",
                    "name": "Коммерческая недвижимость",
                    "slug": "kommerceskaia-nedvizimost",
                    "sort": 5,
                    "children": [
                        {
                            "id": "9b535d77-be01-489f-acf1-fffe3d0528d6",
                            "name": "Гостиница",
                            "slug": "gostinica",
                            "sort": 0
                        },
                        {
                            "id": "bbc3161f-f04a-44cc-9d23-d994cf2d78aa",
                            "name": "Офисное помещение",
                            "slug": "ofisnoe-pomeshchenie",
                            "sort": 1
                        },
                        {
                            "id": "2f73922b-fa2b-450e-a737-849ee15b6685",
                            "name": "Помещение общественного питания",
                            "slug": "pomeshchenie-obshchestvennogo-pitaniya",
                            "sort": 2
                        },
                        {
                            "id": "3e534ad0-bdaf-43be-9468-78fc3023a446",
                            "name": "Помещение свободного назначения",
                            "slug": "pomeshchenie-svobodnogo-naznacheniya",
                            "sort": 3
                        },
                        {
                            "id": "da91dd8c-c981-4881-bca1-0f9393982617",
                            "name": "Производственное помещение",
                            "slug": "proizvodstvennoe-pomeshchenie",
                            "sort": 4
                        },
                        {
                            "id": "a4a8e88c-327e-4b5a-8474-cb179fa63df6",
                            "name": "Складское помещение",
                            "slug": "skladskoe-pomeshchenie",
                            "sort": 5
                        },
                        {
                            "id": "2ebbbd7b-0ebb-4794-aae7-1f44cb325fe9",
                            "name": "Торговое помещение",
                            "slug": "torgovoe-pomeshchenie",
                            "sort": 6
                        },
                        {
                            "id": "86e02d3b-6903-4450-acdb-6fff4c9dbb43",
                            "name": "Автосервис",
                            "slug": "avtoservis",
                            "sort": 7
                        },
                        {
                            "id": "2bf29c18-e9fb-4af0-a2b4-540160e8c921",
                            "name": "Здание",
                            "slug": "zdanie",
                            "sort": 8
                        }
                    ]
                },
                {
                    "id": "ce01079c-a8c0-454a-8d98-440d41177890",
                    "name": "Гараж или машиноместо",
                    "slug": "garaz-mashinomesto",
                    "sort": 5,
                    "children": [
                        {
                            "id": "e8b011a4-799c-49dd-9886-e1874f589491",
                            "name": "Машиноместа",
                            "slug": "mashinomesto",
                            "sort": 0
                        },
                        {
                            "id": "a7f139e7-21c5-4cfc-b74d-b8fa40761a11",
                            "name": "Гаражи",
                            "slug": "garaz",
                            "sort": 0
                        },
                        {
                            "id": "51c56cdd-3b62-485d-b4cb-cb6cd557da6e",
                            "name": "Боксы",
                            "slug": "boks",
                            "sort": 0
                        }
                    ]
                }
            ],
            "typesCount": 7
        }
    ]
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/realty-types

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Get realty type by ID

requires authentication

This endpoint allows you to get realty type by ID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty-types/03c7628a-417c-4620-b531-b233449cab95/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty-types/03c7628a-417c-4620-b531-b233449cab95/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "id": "9b535d77-b00e-4b5c-8064-7f7cd396dc48",
        "name": "Новостройки",
        "slug": "novostroiki",
        "sort": 0,
        "features": [
            {
                "name": "Общие характеристики",
                "sort": 2,
                "children": [
                    {
                        "id": "9dbf7ae8-0bba-4748-b2ac-2a9c2872da7b",
                        "parent_id": "9b6dff1d-e102-4600-a04e-335f8ca59e81",
                        "code": "total_area",
                        "blocked": false,
                        "name": "Общая площадь",
                        "sort": 0,
                        "default_unit": null,
                        "data": {
                            "required": true,
                            "tip": null,
                            "hidden_for_create": null
                        },
                        "type": "text",
                        "value": ""
                    },
                    {
                        "id": "9dbf7ae7-7650-4f9f-8028-ed8d5d73d9af",
                        "parent_id": "9b6dff1d-e102-4600-a04e-335f8ca59e81",
                        "code": "pool",
                        "blocked": false,
                        "name": "Бассейн",
                        "sort": 0,
                        "default_unit": "9dbf7ae4-3329-44c3-9a8d-9f2c7e3323fb",
                        "data": {
                            "required": true,
                            "tip": null,
                            "hidden_for_create": null
                        },
                        "type": "select",
                        "value": "",
                        "options": [
                            {
                                "id": "9dbf7ae4-3329-44c3-9a8d-9f2c7e3323fb",
                                "slug": "da",
                                "name": "Да",
                                "sort": 0
                            }
                        ]
                    },
                    {
                        "id": "9dbf7ae7-4740-44d8-88e3-dba56780a329",
                        "parent_id": "9b6dff1d-e102-4600-a04e-335f8ca59e81",
                        "code": "agreement_with_builder",
                        "blocked": false,
                        "name": "Договор с застройщиком (юрист)",
                        "sort": 0,
                        "default_unit": "9dbf7b39-b35c-4a7c-87c0-7049ffc1e7ae",
                        "data": {
                            "required": true,
                            "tip": null,
                            "hidden_for_create": null
                        },
                        "type": "select",
                        "value": "",
                        "options": [
                            {
                                "id": "9dbf7b39-b35c-4a7c-87c0-7049ffc1e7ae",
                                "slug": "ne-podpisan",
                                "name": "Не подписан",
                                "sort": 0
                            },
                            {
                                "id": "9dbf7bde-0835-4690-945a-63ef8711fd61",
                                "slug": "podpisan",
                                "name": "Подписан",
                                "sort": 0
                            }
                        ]
                    }
                ]
            },
            {
                "name": "Коммуникации",
                "sort": 4,
                "children": [
                    {
                        "id": "9dbf7ae4-e370-4f70-b046-f9b0ff80091a",
                        "parent_id": "9b535d77-eac9-405a-b7d7-d03ea46654e6",
                        "code": "water_supply",
                        "blocked": false,
                        "name": "Водоснабжение",
                        "sort": 0,
                        "default_unit": "9dbf7ae4-3514-4565-aaba-9bb47298df75",
                        "data": {
                            "required": true,
                            "tip": null,
                            "hidden_for_create": null
                        },
                        "type": "select",
                        "value": "",
                        "options": [
                            {
                                "id": "9dbf7ae4-3329-44c3-9a8d-9f2c7e3323fb",
                                "slug": "da",
                                "name": "Да",
                                "sort": 0
                            },
                            {
                                "id": "9dbf7ae4-3514-4565-aaba-9bb47298df75",
                                "slug": "net",
                                "name": "Нет",
                                "sort": 0
                            }
                        ]
                    },
                    {
                        "id": "9dbf7ae4-a890-46af-8e03-6890201bfc9d",
                        "parent_id": "9b535d77-eac9-405a-b7d7-d03ea46654e6",
                        "code": "sewerage",
                        "blocked": false,
                        "name": "Канализация",
                        "sort": 0,
                        "default_unit": "9dbf7ae4-3514-4565-aaba-9bb47298df75",
                        "data": {
                            "required": true,
                            "tip": null,
                            "hidden_for_create": null
                        },
                        "type": "select",
                        "value": "",
                        "options": [
                            {
                                "id": "9dbf7ae4-3329-44c3-9a8d-9f2c7e3323fb",
                                "slug": "da",
                                "name": "Да",
                                "sort": 0
                            },
                            {
                                "id": "9dbf7ae4-3514-4565-aaba-9bb47298df75",
                                "slug": "net",
                                "name": "Нет",
                                "sort": 0
                            }
                        ]
                    }
                ]
            }
        ],
        "children": []
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/realty-types/{realtyType_id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

realtyType_id   string     

The ID of the realtyType. Example: 03c7628a-417c-4620-b531-b233449cab95

Get realty by realty type

requires authentication

This endpoint allows you to get realty that belongs to the realty type (and its children) resolved by slug.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/realty-types/kvartiry/realty" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/realty-types/kvartiry/realty"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/realty-types/{slug}/realty

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

slug   string     

The slug of the realty type. Example: kvartiry

Role

Get public role list

requires authentication

This endpoint allows you to get public role list.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/public/roles" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/public/roles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "user": [
        {
            "id": "018e0fdb-b598-72d7-85c6-085d673912e1",
            "name": "estate-representative",
            "description": "Агентство недвижимости"
        },
        {
            "id": "9b535d76-dc8e-408c-a710-11602c273c25",
            "name": "private-person",
            "description": "Продавец"
        },
        {
            "id": "9b535d76-e9bd-4a39-965d-d7d2705b9a7c",
            "name": "private-broker",
            "description": "Частный риелтор"
        },
        {
            "id": "9b535d76-eb61-4aed-82ee-917157636bac",
            "name": "estate-agent",
            "description": "Сотрудник организации"
        },
        {
            "id": "9b535d76-ecc6-4b2f-aa77-b39e705aa498",
            "name": "builder",
            "description": "Застройщик"
        }
    ]
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/public/roles

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Create role

requires authentication

This endpoint allows you to create role.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/roles" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"aperiam\",
    \"description\": \"Ut saepe corporis inventore qui quo amet excepturi voluptatem.\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/roles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "aperiam",
    "description": "Ut saepe corporis inventore qui quo amet excepturi voluptatem."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "role": {
            "name": "director",
            "color": "#fff",
            "description": {
                "ru": "Директор"
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/roles

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Example: aperiam

description   string     

Example: Ut saepe corporis inventore qui quo amet excepturi voluptatem.

color   string  optional    

Show role

requires authentication

This endpoint allows you to get role by UUID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/roles/894fe12e-0304-35a2-bb49-e5f3b664e51e/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/roles/894fe12e-0304-35a2-bb49-e5f3b664e51e/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "role": {
            "name": "director",
            "color": "#fff",
            "description": {
                "ru": "Директор"
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/roles/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the role Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Update role

requires authentication

This endpoint allows you to update role.
Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/roles/0603163e-1cd1-4902-830b-dea1beffffbe/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"9e235a20-832f-34bc-a116-f8de100620a5\",
    \"name\": \"est\",
    \"description\": \"Iusto quis qui porro ea ducimus suscipit voluptates.\",
    \"is_private_person\": true
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/roles/0603163e-1cd1-4902-830b-dea1beffffbe/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "9e235a20-832f-34bc-a116-f8de100620a5",
    "name": "est",
    "description": "Iusto quis qui porro ea ducimus suscipit voluptates.",
    "is_private_person": true
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "role": {
            "name": "director",
            "color": "#fff",
            "description": {
                "ru": "Директор"
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/roles/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the role Example: 0603163e-1cd1-4902-830b-dea1beffffbe

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: 9e235a20-832f-34bc-a116-f8de100620a5

name   string     

Example: est

description   string     

Example: Iusto quis qui porro ea ducimus suscipit voluptates.

color   string  optional    
is_private_person   boolean  optional    

Example: true

Assign Permissions to role

requires authentication

This endpoint allows you to assign Permissions to role.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/roles/018e0fdb-b598-72d7-85c6-085d673912e1/assign_permissions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"5246994d-f440-3fc5-a348-36bdf50da884\",
    \"permissions\": [
        \"atque\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/roles/018e0fdb-b598-72d7-85c6-085d673912e1/assign_permissions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "5246994d-f440-3fc5-a348-36bdf50da884",
    "permissions": [
        "atque"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/roles/{id}/assign_permissions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the role. Example: 018e0fdb-b598-72d7-85c6-085d673912e1

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: 5246994d-f440-3fc5-a348-36bdf50da884

permissions   string[]     

Must match an existing stored value.

Roles

Разрешённые переходы с роли

requires authentication

Задаёт роли, которые обладатель указанной роли вправе назначить себе сам через POST /users/{user}/assign_roles. Список заменяется целиком.

Правило действует на всех пользователей с этой ролью — заполнять по каждому пользователю не нужно. Свои доступные роли пользователь видит в GET /auth/user в поле available_roles (объединение по всем его ролям).

Доступно только администратору.

Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/roles/018e0fdb-b598-72d7-85c6-085d673912e1/allowed_roles" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"41b06adc-5499-3d65-967b-36810e847dce\",
    \"roles\": [
        \"enim\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/roles/018e0fdb-b598-72d7-85c6-085d673912e1/allowed_roles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "41b06adc-5499-3d65-967b-36810e847dce",
    "roles": [
        "enim"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "allowed_roles": [
            {
                "name": "private-broker",
                "color": "#8CB2F0",
                "description": "Частный риелтор"
            }
        ]
    },
    "error": null,
    "message": "Success"
}
 

Example response (422):


{
    "message": "Указанная роль `unknown` недействительна.",
    "errors": {
        "roles.0": [
            "Указанная роль `unknown` недействительна."
        ]
    }
}
 

Request      

POST api/v1/roles/{id}/allowed_roles

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the role. Example: 018e0fdb-b598-72d7-85c6-085d673912e1

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: 41b06adc-5499-3d65-967b-36810e847dce

roles   string[]     

Selection

Selection Index

requires authentication

This endpoint allows you to selection index.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/selections" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/selections"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/selections

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Selection Show

requires authentication

This endpoint allows you to selection show.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/selections/et/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/selections/et/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/selections/{selection_id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

selection_id   string     

The ID of the selection. Example: et

Selection Create

requires authentication

This endpoint allows you to selection create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/selections" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"totam\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/selections"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

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

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/selections

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Example: totam

Selection Update

requires authentication

This endpoint allows you to selection update.
Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/selections/eos/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"c80a099d-432a-3f93-8cf0-36a45c862cce\",
    \"name\": \"fuga\",
    \"realty_id\": \"b07f8709-3ee0-30b8-a103-27bbdf7260ea\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/selections/eos/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "c80a099d-432a-3f93-8cf0-36a45c862cce",
    "name": "fuga",
    "realty_id": "b07f8709-3ee0-30b8-a103-27bbdf7260ea"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/selections/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the selection. Example: eos

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: c80a099d-432a-3f93-8cf0-36a45c862cce

name   string  optional    

Example: fuga

realty_id   string  optional    

validation.uuid Must match an existing stored value. Example: b07f8709-3ee0-30b8-a103-27bbdf7260ea

Selection Delete

requires authentication

This endpoint allows you to selection delete.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/selections/iusto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/selections/iusto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/selections/{selection_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

selection_id   string     

The ID of the selection. Example: iusto

Selection Realty Detach

requires authentication

This endpoint allows you to selection realty detach.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/selections/ut/realty/detach" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"3233adee-d098-3baa-8a2e-2cb6ef65405c\",
    \"realty_id\": \"4d94a0e2-bc05-3f18-8ba4-d2fc5f67eb85\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/selections/ut/realty/detach"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "3233adee-d098-3baa-8a2e-2cb6ef65405c",
    "realty_id": "4d94a0e2-bc05-3f18-8ba4-d2fc5f67eb85"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/selections/{id}/realty/detach

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the selection. Example: ut

Body Parameters

id   string     

validation.uuid Must match an existing stored value. Example: 3233adee-d098-3baa-8a2e-2cb6ef65405c

realty_id   string     

validation.uuid Must match an existing stored value. Example: 4d94a0e2-bc05-3f18-8ba4-d2fc5f67eb85

Tag

Tag Index

requires authentication

This endpoint allows you to tag index.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/tags" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/tags"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/tags

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Tag Create

requires authentication

This endpoint allows you to tag create.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/tags" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"jr\",
    \"settings\": {
        \"color\": \"bqsqkpdipebtlkzboqw\"
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/tags"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "jr",
    "settings": {
        "color": "bqsqkpdipebtlkzboqw"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/tags

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Поле должно быть не длиннее 255 символов. Example: jr

settings   object     
color   string     

Поле должно быть не длиннее 255 символов. Example: bqsqkpdipebtlkzboqw

Tag Show

requires authentication

This endpoint allows you to tag show.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/tags/9b535d77-c996-41bb-8627-051dfdca9309/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/tags/9b535d77-c996-41bb-8627-051dfdca9309/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/tags/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the tag. Example: 9b535d77-c996-41bb-8627-051dfdca9309

Tag Update

requires authentication

This endpoint allows you to tag update.
Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/tags/9b535d77-c996-41bb-8627-051dfdca9309/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"est\",
    \"name\": \"pxfajviu\",
    \"settings\": {
        \"color\": \"eqmjkkuavriudrnrjgjppfimk\"
    }
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/tags/9b535d77-c996-41bb-8627-051dfdca9309/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "est",
    "name": "pxfajviu",
    "settings": {
        "color": "eqmjkkuavriudrnrjgjppfimk"
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/tags/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the tag. Example: 9b535d77-c996-41bb-8627-051dfdca9309

Body Parameters

id   string     

Example: est

name   string     

Поле должно быть не длиннее 255 символов. Example: pxfajviu

settings   object     
color   string     

Поле должно быть не длиннее 255 символов. Example: eqmjkkuavriudrnrjgjppfimk

User

User Get Email

requires authentication

This endpoint allows you to user get email.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/auth/email_by_query" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"q\": \"omnis\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/auth/email_by_query"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "q": "omnis"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/auth/email_by_query

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

q   string     

Example: omnis

Show User Department

requires authentication

This endpoint allows you to get user department by UUID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/users/departments/9fb00cb0-3a4d-4f73-a91d-210fc909fc41/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/departments/9fb00cb0-3a4d-4f73-a91d-210fc909fc41/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "user_department": {
            "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
            "name": "Test Department 1",
            "created_at": "2024-04-09 16:07:56",
            "updated_at": "2024-04-09 16:07:56"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/users/departments/{userDepartment_id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

userDepartment_id   string     

The ID of the userDepartment. Example: 9fb00cb0-3a4d-4f73-a91d-210fc909fc41

id   string     

The ID of the User Department Example: 99ef4f19-6d18-4576-81a3-71282a90f645

Get All Users

requires authentication

This endpoint allows you to get All Users.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "users": [
            {
                "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "name": "System Admin",
                "profile_photo_path": null,
                "roles": [
                    "administrator"
                ],
                "realty_count": 0
            },
            {
                "id": "9a437110-e093-410a-8511-4b980e134f43",
                "name": "si322t",
                "profile_photo_path": null,
                "roles": [
                    "administrator"
                ],
                "realty_count": 0
            }
        ],
        "links": {
            "first": "http://localhost/api/v1/articles?page=1",
            "last": "http://localhost/api/v1/articles?page=1",
            "prev": null,
            "next": null
        },
        "meta": {
            "current_page": 1,
            "from": 1,
            "last_page": 1,
            "links": [
                {
                    "url": null,
                    "label": "pagination.previous",
                    "active": false
                },
                {
                    "url": "http://localhost/api/v1/articles?page=1",
                    "label": "1",
                    "active": true
                },
                {
                    "url": null,
                    "label": "pagination.next",
                    "active": false
                }
            ],
            "path": "http://localhost/api/v1/articles",
            "per_page": 15,
            "to": 1,
            "total": 1
        }
    }
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Create User

requires authentication

This endpoint allows you to create user.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"voluptate\",
    \"email\": \"keshawn20@example.net\",
    \"phone\": null,
    \"password\": \"voluptas\",
    \"roles\": [
        \"private-broker\"
    ],
    \"confirmed\": false
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "voluptate",
    "email": "keshawn20@example.net",
    "phone": null,
    "password": "voluptas",
    "roles": [
        "private-broker"
    ],
    "confirmed": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "user": {
            "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
            "name": "Test User 1",
            "phones": [
                {
                    "value": "79322346789",
                    "verified_at": null,
                    "for_code_send": false
                }
            ],
            "profile_photo_path": null,
            "confirmed": true,
            "phone_confirmed": false
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Example: voluptate

email   string     

Поле должно быть действительным электронным адресом. Example: keshawn20@example.net

phone   string     
inn   string  optional    

Must match an existing stored value.

address   object  optional    
password   string     

Example: voluptas

profile_photo_path   string  optional    
birthday   string  optional    
roles   string[]  optional    
Must be one of:
  • administrator
  • private-person
  • private-broker
  • estate-agent
  • estate-representative
  • builder
  • director
  • supervisor
  • mentor
  • realtor
  • lawyer
realtyExportUrl   string  optional    

Поле должно быть не длиннее 1024 символов.

realtyExportAuthToken   string  optional    

Поле должно быть не длиннее 50 символов.

confirmed   boolean     

Example: false

User Set Confirmed

requires authentication

This endpoint allows you to user set confirmed.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/users/a00e73ba-d70a-43dd-bacf-4464fffedaa2/set_confirmed" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"confirmed\": false,
    \"ban_reason\": \"nccevpa\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/a00e73ba-d70a-43dd-bacf-4464fffedaa2/set_confirmed"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "confirmed": false,
    "ban_reason": "nccevpa"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/users/{id}/set_confirmed

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the user. Example: a00e73ba-d70a-43dd-bacf-4464fffedaa2

Body Parameters

confirmed   boolean     

Example: false

ban_reason   string  optional    

Поле должно быть не длиннее 1000 символов. Example: nccevpa

Назначение ролей пользователю

requires authentication

Заменяет все роли указанного пользователя на переданный список. Используется в админке (редактирование пользователя) и при смене роли сотрудника агентства.

Маршрут: POST /api/v1/users/{user}/assign_roles

Поведение:

Кто может вызывать:

Полномочия считаются по роли, к которой привязан access token, а не по всем ролям пользователя: администратор, вошедший под другой ролью, ограничен наравне с остальными.

Аутентификация: Bearer-токен Sanctum (auth:sanctum).

Валидация тела (UserAttachRoleData):

Примеры запросов:

POST /api/v1/users/a00e74b1-cbb7-49e0-9d4f-fd372cb948b0/assign_roles
Content-Type: application/json
Authorization: Bearer {token}

{ "roles": ["manager"] }
POST /api/v1/users/a00e74b1-cbb7-49e0-9d4f-fd372cb948b0/assign_roles

{ "roles": ["realtor"] }

Коды ответов:

Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/users/a00e73ba-d70a-43dd-bacf-4464fffedaa2/assign_roles" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"roles\": [
        \"sed\"
    ]
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/a00e73ba-d70a-43dd-bacf-4464fffedaa2/assign_roles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "roles": [
        "sed"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Роли успешно синхронизированы):


{
    "user": {
        "id": "a00e74b1-cbb7-49e0-9d4f-fd372cb948b0",
        "name": "Иван Иванов",
        "phones": [
            {
                "value": "79001234567",
                "verified_at": null,
                "for_code_send": true
            }
        ],
        "profile_photo_path": null,
        "confirmed": true,
        "phone_confirmed": true,
        "roles": [
            {
                "name": "manager",
                "color": "#000000",
                "description": {
                    "ru": "Управляющий"
                }
            }
        ]
    }
}
 

Example response (401, Токен отсутствует или недействителен):


{
    "message": "Unauthenticated."
}
 

Example response (403, Недостаточно прав у вызывающего пользователя):


{
    "message": "User does not have the right roles."
}
 

Example response (404, Пользователь не найден):


{
    "message": "No query results for model [App\\Models\\User] {uuid}"
}
 

Example response (422, Неизвестное имя роли или невалидное тело запроса):


{
    "message": "Указанная роль `unknown-role` недействительна. Допустимые роли: `administrator`, `builder`, `director`, `estate-agent`, `estate-representative`, `manager`, `mentor`, `private-broker`, `private-person`, `realtor`, `supervisor`.",
    "errors": {
        "roles.0": [
            "Указанная роль `unknown-role` недействительна. Допустимые роли: `administrator`, `builder`, `director`, `estate-agent`, `estate-representative`, `manager`, `mentor`, `private-broker`, `private-person`, `realtor`, `supervisor`."
        ]
    }
}
 

Example response (422, Массив roles не передан):


{
    "message": "Поле roles обязательно для заполнения.",
    "errors": {
        "roles": [
            "Поле roles обязательно для заполнения."
        ]
    }
}
 

Request      

POST api/v1/users/{user_id}/assign_roles

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

user_id   string     

The ID of the user. Example: a00e73ba-d70a-43dd-bacf-4464fffedaa2

user   string     

UUID пользователя, которому назначаются роли Example: a00e74b1-cbb7-49e0-9d4f-fd372cb948b0

Body Parameters

roles   string[]     

Show User

requires authentication

This endpoint allows you to get User by UUID.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/users/894fe12e-0304-35a2-bb49-e5f3b664e51e/show" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"include\": \"incidunt\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/894fe12e-0304-35a2-bb49-e5f3b664e51e/show"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "include": "incidunt"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "user": {
            "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
            "name": "System Admin",
            "profile_photo_path": null,
            "roles": [
                "administrator"
            ],
            "realty": {
                "Торгово-офисная недвижимость": [
                    {
                        "id": "9a437121-572c-49f3-ba7d-0fcfb26ba57d",
                        "name": "Торгово-офисная недвижимость_113 м²_20_эт.",
                        "description": "Уж это, точно, правда. Уж совсем ни на что половой, по обыкновению, сейчас вступил с нею в разговор и расспросил, сама ли она держит трактир, или есть хозяин, а сколько дает доходу трактир, и с.",
                        "address": {
                            "country": "Россия",
                            "state": "Краснодарский край",
                            "city": "Сочи",
                            "postal_code": "483451",
                            "area": "Лазаревский",
                            "street": "въезд Космонавтов, 62"
                        },
                        "type_id": "9a43711b-a826-4bb6-8a7b-b7f13cf5cf83",
                        "user_id": "9a437111-5c2a-489f-bb17-fbe089a1fffa",
                        "location": {
                            "type": "Point",
                            "coordinates": [
                                39.734841410291,
                                43.60340917863
                            ]
                        },
                        "created_at": "2023-10-01",
                        "updated_at": "2023-10-01",
                        "deleted_at": null,
                        "type": {
                            "id": "9a43711b-a826-4bb6-8a7b-b7f13cf5cf83",
                            "parent_id": "9a43711b-9b72-4eae-8916-df5d9716f6ab",
                            "slug": "torgovo-ofisnaia-nedvizimost",
                            "name": {
                                "ru": "Торгово-офисная недвижимость"
                            },
                            "sort": 0,
                            "created_at": "2023-10-01T07 =>15 =>11.000000Z",
                            "updated_at": "2023-10-01T07 =>15 =>11.000000Z"
                        }
                    },
                    {
                        "id": "9a437121-5975-4807-934f-aaf0279fa93e",
                        "name": "Аренда гостиниц__196_эт.",
                        "description": "Так как подобное зрелище для мужика сущая благодать, все равно что писанное, не вырубливается топором. А уж куды бывает метко все то, что к ней скорее! — Да, был бы ты сильно пощелкивал, смекнувши.",
                        "address": {
                            "country": "Россия",
                            "state": "Краснодарский край",
                            "city": "Сочи",
                            "postal_code": "827181",
                            "area": "Адлерский",
                            "street": "пер. Сталина, 33"
                        },
                        "type_id": "9a43711b-a826-4bb6-8a7b-b7f13cf5cf83",
                        "user_id": "9a437111-5c2a-489f-bb17-fbe089a1fffa",
                        "location": {
                            "type": "Point",
                            "coordinates": [
                                39.722528554929,
                                43.58865328136
                            ]
                        },
                        "created_at": "2023-10-01",
                        "updated_at": "2023-10-01",
                        "deleted_at": null,
                        "type": {
                            "id": "9a43711b-a826-4bb6-8a7b-b7f13cf5cf83",
                            "parent_id": "9a43711b-9b72-4eae-8916-df5d9716f6ab",
                            "slug": "torgovo-ofisnaia-nedvizimost",
                            "name": {
                                "ru": "Торгово-офисная недвижимость"
                            },
                            "sort": 0,
                            "created_at": "2023-10-01T07 =>15 =>11.000000Z",
                            "updated_at": "2023-10-01T07 =>15 =>11.000000Z"
                        }
                    }
                ]
            }
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Request      

GET api/v1/users/{id}/show

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the User Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Body Parameters

include   string  optional    

Example: incidunt

Update User

requires authentication

This endpoint allows you to Update User.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/users/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"sit\",
    \"name\": \"lxxhvtejlyipnzzyb\",
    \"email\": \"newton10@example.org\",
    \"phone\": \"aut\",
    \"remember_token\": \"et\",
    \"roles\": [
        \"private-person\"
    ],
    \"organization_id\": \"consequatur\",
    \"realty_export_url\": \"https:\\/\\/auer.com\\/dolorem-quibusdam-reprehenderit-tempore-velit-doloribus.html\",
    \"realty_export_auth_token\": \"egpkrolpyxgujdim\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/894fe12e-0304-35a2-bb49-e5f3b664e51e/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "sit",
    "name": "lxxhvtejlyipnzzyb",
    "email": "newton10@example.org",
    "phone": "aut",
    "remember_token": "et",
    "roles": [
        "private-person"
    ],
    "organization_id": "consequatur",
    "realty_export_url": "https:\/\/auer.com\/dolorem-quibusdam-reprehenderit-tempore-velit-doloribus.html",
    "realty_export_auth_token": "egpkrolpyxgujdim"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "user": {
            "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
            "name": "System Admin",
            "profile_photo_path": null,
            "email": "qwe@mail.ru",
            "phone": "+2915311478",
            "birthday": null
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/users/{id}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

id   string     

The ID of the User Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Body Parameters

id   string     

Example: sit

name   string  optional    

Поле должно быть не длиннее 255 символов. Example: lxxhvtejlyipnzzyb

email   string  optional    

Поле должно быть действительным электронным адресом. Example: newton10@example.org

phone   string  optional    

Example: aut

password   string  optional    
remember_token   string  optional    

Example: et

profile_photo_path   string  optional    
roles   string[]     
Must be one of:
  • administrator
  • private-person
  • private-broker
  • estate-agent
  • estate-representative
  • builder
  • director
  • supervisor
  • mentor
  • realtor
  • lawyer
organization_id   string  optional    

Must match an existing stored value. Example: consequatur

birthday   string  optional    

Поле не является датой. Must be a valid date in the format Y-m-d.

photo   string  optional    
country_id   string  optional    

Must match an existing stored value.

city_id   string  optional    

Must match an existing stored value.

realty_export_url   string  optional    

Поле должно быть не длиннее 1024 символов. Example: https://auer.com/dolorem-quibusdam-reprehenderit-tempore-velit-doloribus.html

realty_export_auth_token   string  optional    

Поле должно быть не длиннее 50 символов. Example: egpkrolpyxgujdim

Update User

requires authentication

This endpoint allows you to Update User.
Example request:
curl --request PATCH \
    "https://staging-api.ette.ru/api/v1/users/894fe12e-0304-35a2-bb49-e5f3b664e51e/restore" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/894fe12e-0304-35a2-bb49-e5f3b664e51e/restore"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "status": "restore"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PATCH api/v1/users/{id}/restore

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

id   string     

The ID of the User Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Force Delete User

requires authentication

This endpoint allows you to force delete User.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/users/a00e73ba-d70a-43dd-bacf-4464fffedaa2/force-delete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/a00e73ba-d70a-43dd-bacf-4464fffedaa2/force-delete"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/users/{user}/force-delete

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

user   string     

The user. Example: a00e73ba-d70a-43dd-bacf-4464fffedaa2

id   string     

The ID of the user Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

Delete User

requires authentication

This endpoint allows you to delete User.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/users/a00e73ba-d70a-43dd-bacf-4464fffedaa2" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/a00e73ba-d70a-43dd-bacf-4464fffedaa2"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/users/{user_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

user_id   string     

The ID of the user. Example: a00e73ba-d70a-43dd-bacf-4464fffedaa2

id   string     

The ID of the user Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

UserDepartment

Get All User Departments

requires authentication

This endpoint allows you to get all users departments.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/users/departments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/departments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "user_departments": [
            {
                "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
                "name": "Test Department 1",
                "created_at": "2024-04-09 16:07:56",
                "updated_at": "2024-04-09 16:07:56"
            },
            {
                "id": "9a437110-e093-410a-8511-4b980e134f43",
                "name": "Test Department 2",
                "created_at": "2024-04-09 20:46:08",
                "updated_at": "2024-04-09 20:46:08"
            }
        ],
        "links": [
            {
                "url": null,
                "label": "pagination.previous",
                "active": false
            },
            {
                "url": "http://localhost/api/v1/users/departments?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "pagination.next",
                "active": false
            }
        ],
        "meta": {
            "current_page": 1,
            "first_page_url": "http://localhost/api/v1/users/departments?page=1",
            "from": 1,
            "last_page": 1,
            "last_page_url": "http://localhost/api/v1/users/departments?page=1",
            "next_page_url": null,
            "path": "http://localhost/api/v1/users/departments",
            "per_page": 15,
            "prev_page_url": null,
            "to": 2,
            "total": 2
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/users/departments

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Create User Department

requires authentication

This endpoint allows you to create user department.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/users/departments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"kqrqyz\",
    \"user_id\": \"non\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/departments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "kqrqyz",
    "user_id": "non"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "user": {
            "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
            "name": "Test Department 1",
            "created_at": "2024-04-09 16:07:56",
            "updated_at": "2024-04-09 16:07:56"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/users/departments

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Body Parameters

name   string     

Поле должно быть не длиннее 255 символов. Example: kqrqyz

user_id   string     

Must match an existing stored value. Example: non

Update User Department

requires authentication

This endpoint allows you to update user department.
Example request:
curl --request PUT \
    "https://staging-api.ette.ru/api/v1/users/departments/magnam/edit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"veritatis\",
    \"name\": \"mycgu\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/departments/magnam/edit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "veritatis",
    "name": "mycgu"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "user": {
            "id": "99ef4f19-6d18-4576-81a3-71282a90f645",
            "name": "Test Department 1",
            "created_at": "2024-04-09 16:07:56",
            "updated_at": "2024-04-09 16:07:56"
        }
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

PUT api/v1/users/departments/{userDepartment}/edit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

userDepartment   string     

Example: magnam

id   string     

The ID of the User Department Example: 99ef4f19-6d18-4576-81a3-71282a90f645

Body Parameters

id   string     

Example: veritatis

name   string  optional    

Поле должно быть не длиннее 255 символов. Example: mycgu

Delete User Department

requires authentication

This endpoint allows you to delete user department.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/users/departments/9fb00cb0-3a4d-4f73-a91d-210fc909fc41" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/departments/9fb00cb0-3a4d-4f73-a91d-210fc909fc41"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/users/departments/{userDepartment_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

URL Parameters

userDepartment_id   string     

The ID of the userDepartment. Example: 9fb00cb0-3a4d-4f73-a91d-210fc909fc41

id   string     

The ID of the user department Example: 894fe12e-0304-35a2-bb49-e5f3b664e51e

User Department Assign Users

requires authentication

This endpoint allows you to user department assign users.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/users/departments/9fb00cb0-3a4d-4f73-a91d-210fc909fc41/assign_users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"users\": [
        \"perspiciatis\"
    ],
    \"department_id\": \"sint\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/users/departments/9fb00cb0-3a4d-4f73-a91d-210fc909fc41/assign_users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "users": [
        "perspiciatis"
    ],
    "department_id": "sint"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/users/departments/{userDepartment_id}/assign_users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

userDepartment_id   string     

The ID of the userDepartment. Example: 9fb00cb0-3a4d-4f73-a91d-210fc909fc41

Body Parameters

users   string[]  optional    

Must match an existing stored value.

department_id   string  optional    

Must match an existing stored value. Example: sint

Video

Upload video

requires authentication

This endpoint allows you to upload video.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/video/upload" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --form "video=@/tmp/phpin4d3s96lt6hfyCx7ov" 
const url = new URL(
    "https://staging-api.ette.ru/api/v1/video/upload"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

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

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "path": "videos/0190928a-5d4f-731c-8354-87ac180d72d4.mp4",
        "url": "http://api.ette/storage/videos/0190928a-5d4f-731c-8354-87ac180d72d4.mp4"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/video/upload

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: multipart/form-data

Body Parameters

video   file     

Must be a file. Example: /tmp/phpin4d3s96lt6hfyCx7ov

Upload video to video hosting

requires authentication

This endpoint allows you to upload video to video hosting.
Example request:
curl --request POST \
    "https://staging-api.ette.ru/api/v1/video/upload/rutube" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"path\": \"et\",
    \"title\": \"voluptas\",
    \"tags\": [
        \"repellendus\"
    ],
    \"group_hash\": \"dignissimos\",
    \"hosting\": \"youtube\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/video/upload/rutube"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "path": "et",
    "title": "voluptas",
    "tags": [
        "repellendus"
    ],
    "group_hash": "dignissimos",
    "hosting": "youtube"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "status": "processing",
        "video_group_id": "968132c8-d750-49c7-a3a3-59ee230d49ca",
        "video_id": "6a394678-5564-4084-be22-2cb0924181a8"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

POST api/v1/video/upload/{hosting}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

hosting   string     

Hosting (rutube/youtube) Example: rutube

Must be one of:
  • rutube
  • youtube
  • none

Body Parameters

path   string     

Example: et

title   string     

Example: voluptas

description   string  optional    
tags   string[]  optional    

Массив строк-тэгов

group_hash   string     

Example: dignissimos

hosting   string     

Example: youtube

Must be one of:
  • rutube
  • youtube
  • none

Video model delete

requires authentication

This endpoint allows you to delete video model.
Example request:
curl --request DELETE \
    "https://staging-api.ette.ru/api/v1/video/9f177ce0-bb7d-4356-b540-2bff6f433106" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"38853886-4b5a-480f-b3b6-6d2f9bb243ba\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/video/9f177ce0-bb7d-4356-b540-2bff6f433106"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "38853886-4b5a-480f-b3b6-6d2f9bb243ba"
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": [],
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Not Found."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

DELETE api/v1/video/{video_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

video_id   string     

The ID of the video. Example: 9f177ce0-bb7d-4356-b540-2bff6f433106

Body Parameters

id   string     

ID видео Example: 38853886-4b5a-480f-b3b6-6d2f9bb243ba

YouTube video upload status

requires authentication

This endpoint allows you to check YouTube video upload status.
Example request:
curl --request GET \
    --get "https://staging-api.ette.ru/api/v1/youtube/video/9f177ce0-bb7d-4356-b540-2bff6f433106/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"id\": \"38853886-4b5a-480f-b3b6-6d2f9bb243ba\"
}"
const url = new URL(
    "https://staging-api.ette.ru/api/v1/youtube/video/9f177ce0-bb7d-4356-b540-2bff6f433106/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "38853886-4b5a-480f-b3b6-6d2f9bb243ba"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "success": true,
    "data": {
        "status": "success",
        "youtube_id": "ERHFYpsgiH4"
    },
    "error": null,
    "message": "Success"
}
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "Validation error."
        ]
    }
}
 

Request      

GET api/v1/youtube/video/{video_id}/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

URL Parameters

video_id   string     

The ID of the video. Example: 9f177ce0-bb7d-4356-b540-2bff6f433106

Body Parameters

id   string     

ID видео Example: 38853886-4b5a-480f-b3b6-6d2f9bb243ba