Skip to content

rumantic/sitebill_api_php_sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ДокумСнтация Sitebill API PHP SDK

ОглавлСниС

  1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
  2. Установка
  3. Быстрый старт
  4. АутСнтификация
  5. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ SDK
  6. Π Π°Π±ΠΎΡ‚Π° с модСлями (Model API)
  7. Π Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ (User API)
  8. Π Π°Π±ΠΎΡ‚Π° с профилями (Profile API)
  9. Π Π°Π±ΠΎΡ‚Π° с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² (Uploads API)
  10. Π Π°Π±ΠΎΡ‚Π° с коммСнтариями (Comment API)
  11. Π Π°Π±ΠΎΡ‚Π° с Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (Reservation API)
  12. Π Π°Π±ΠΎΡ‚Π° с поиском (MySearch API)
  13. Π Π°Π±ΠΎΡ‚Π° со списками памяти (MemoryList API)
  14. Π Π°Π±ΠΎΡ‚Π° со слоями (Layers API)
  15. Π Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ (Config API)
  16. Π Π°Π±ΠΎΡ‚Π° со статистикой (Stat API)
  17. РСгистрация (Register API)
  18. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок
  19. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Sitebill API PHP SDK β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для взаимодСйствия с REST API систСмы управлСния ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ Sitebill. SDK прСдоставляСт простой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ CRUD (Create, Read, Update, Delete) Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, управлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сущностями систСмы.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности:

  • АутСнтификация Ρ‡Π΅Ρ€Π΅Π· OAuth
  • Π Π°Π±ΠΎΡ‚Π° с модСлями Π΄Π°Π½Π½Ρ‹Ρ… (CRUD ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ)
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈ профилями
  • Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²
  • Π Π°Π±ΠΎΡ‚Π° с коммСнтариями
  • БистСма бронирования
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ поиск
  • Π Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ
  • Бтатистика

Установка

ВрСбования

  • PHP 5.6 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ cURL
  • Доступ ΠΊ сСрвСру Sitebill с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ API

Бпособ 1: Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· рСпозитория

git clone https://github.com/rumantic/sitebill_api_php_sdk.git
cd sitebill_api_php_sdk

Бпособ 2: ΠŸΡ€ΡΠΌΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» sitebill_sdk.php ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅:

require_once 'path/to/sitebill_sdk.php';

Быстрый старт

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

<?php
require_once 'sitebill_sdk.php';

// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ SDK
$api = new Sitebill_SDK(
    'http://your-domain.com/apps/api/rest.php',  // URL API endpoint
    'admin',                                       // Π›ΠΎΠ³ΠΈΠ½
    'password'                                     // ΠŸΠ°Ρ€ΠΎΠ»ΡŒ
);

// ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ API
if ($api->connect()) {
    echo "УспСшноС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅!\n";
} else {
    echo "Ошибка ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ\n";
}

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹

// БозданиС новой записи
$data = [
    'topic_id' => 1,
    'city_id' => 1,
    'text' => 'НовоС объявлСниС',
    'price' => 5000000
];

$result = $api->native_insert('data', $data);
$new_id = $result['data']['new_record_id'];
echo "Боздана запись с ID: $new_id\n";

// Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° записи
$record = $api->load_data('data', 'id', $new_id);
print_r($record);

// УдалСниС записи
$api->delete('data', 'id', $new_id);

АутСнтификация

ΠœΠ΅Ρ‚ΠΎΠ΄ connect()

УстанавливаСт соСдинСниС с API ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ session_key для Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… запросов.

$api = new Sitebill_SDK($url, $login, $password);
$connected = $api->connect();

if (!$connected) {
    die('НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ API');
}

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: bool - true ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, false ΠΏΡ€ΠΈ ошибкС

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ get_auth($login, $password)

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ session_key ΠΏΠΎ Π»ΠΎΠ³ΠΈΠ½Ρƒ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŽ. ВызываСтся автоматичСски ΠΏΡ€ΠΈ connect().

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • $login (string) - Π›ΠΎΠ³ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • $password (string) - ΠŸΠ°Ρ€ΠΎΠ»ΡŒ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚:

[
    'success' => true,
    'session_key' => 'abc123...'
]

Endpoint: POST /apps/api/rest.php ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса:

[
    'action' => 'oauth',
    'do' => 'login',
    'login' => 'admin',
    'password' => 'password'
]

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ SDK

1. load_grid_columns($model_name)

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ список ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • $model_name (string) - НазваниС ΠΌΠΎΠ΄Π΅Π»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 'data', 'user', 'page')

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: array - Массив с описаниСм ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$columns = $api->load_grid_columns('data');
print_r($columns);

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'columns' => [
        [
            'name' => 'id',
            'type' => 'primary_key',
            'title' => 'ID',
            ...
        ],
        [
            'name' => 'text',
            'type' => 'textarea',
            'title' => 'ОписаниС',
            ...
        ]
    ]
]

2. native_insert($model_name, $ql_items)

ДобавляСт Π½ΠΎΠ²ΡƒΡŽ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • $model_name (string) - НазваниС ΠΌΠΎΠ΄Π΅Π»ΠΈ
  • $ql_items (array) - Ассоциативный массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: array - Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ID Π½ΠΎΠ²ΠΎΠΉ записи

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$data = [
    'topic_id' => 6162,      // Π’ΠΈΠΏ нСдвиТимости
    'city_id' => 1,          // Π“ΠΎΡ€ΠΎΠ΄
    'street_id' => 100,      // Π£Π»ΠΈΡ†Π°
    'text' => 'ΠŸΡ€ΠΎΠ΄Π°Π΅Ρ‚ΡΡ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π°',
    'price' => 10000000,
    'square_all' => 75.5,
    'floor' => 5,
    'room_count' => 3
];

$result = $api->native_insert('data', $data);

if ($result['state'] == 'success') {
    $new_id = $result['data']['new_record_id'];
    echo "Боздана запись ID: $new_id\n";
}

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'data' => [
        'new_record_id' => 12345
    ]
]

3. load_data($model_name, $primary_key, $key_value)

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠΉ записи ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • $model_name (string) - НазваниС ΠΌΠΎΠ΄Π΅Π»ΠΈ
  • $primary_key (string) - Имя ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 'id')
  • $key_value (int) - Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: array - ΠŸΠΎΠ»Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ записи со всСми полями

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$record = $api->load_data('data', 'id', 12345);

if ($record['state'] == 'success') {
    echo "Π¦Π΅Π½Π°: " . $record['data']['price']['value'] . "\n";
    echo "ОписаниС: " . $record['data']['text']['value'] . "\n";
}

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΎΡ‚Π²Π΅Ρ‚Π°:

[
    'state' => 'success',
    'id' => 12345,
    'primary_key' => 'id',
    'table_name' => 'data',
    'data' => [
        'id' => [
            'name' => 'id',
            'value' => 12345,
            'title' => 'ID',
            'type' => 'primary_key'
        ],
        'text' => [
            'name' => 'text',
            'value' => 'ΠŸΡ€ΠΎΠ΄Π°Π΅Ρ‚ΡΡ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π°...',
            'title' => 'ОписаниС',
            'type' => 'textarea'
        ],
        'price' => [
            'name' => 'price',
            'value' => 10000000,
            'title' => 'Π¦Π΅Π½Π°',
            'type' => 'text'
        ]
    ]
]

4. delete($model_name, $primary_key, $key_value)

УдаляСт запись ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • $model_name (string) - НазваниС ΠΌΠΎΠ΄Π΅Π»ΠΈ
  • $primary_key (string) - Имя ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°
  • $key_value (int) - Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: array - Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$result = $api->delete('data', 'id', 12345);

if ($result['state'] == 'success') {
    echo "Π—Π°ΠΏΠΈΡΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π°\n";
}

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'message' => 'Record deleted'
]

Π Π°Π±ΠΎΡ‚Π° с модСлями (Model API)

API для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с модСлями прСдоставляСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Endpoint: action=model

ДоступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ do):

1. get_models

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ список всСх ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² систСмС.

Запрос:

POST /apps/api/rest.php
action=model
do=get_models
session_key=xxx

ΠžΡ‚Π²Π΅Ρ‚:

[
    ['id' => 1, 'name' => 'data'],
    ['id' => 2, 'name' => 'user'],
    ['id' => 3, 'name' => 'page']
]

2. get_models_list

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ список ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ с описаниями.

ΠžΡ‚Π²Π΅Ρ‚:

[
    'status' => 'success',
    'message' => 'models loaded',
    'data' => [
        [
            'id' => 1,
            'name' => 'data',
            'description' => 'ОбъявлСния'
        ],
        [
            'id' => 2,
            'name' => 'user',
            'description' => 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ'
        ]
    ]
]

3. load_config

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ систСмы.

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'data' => [
        'site_title' => 'Мой сайт',
        'site_url' => 'http://example.com',
        'languages' => ['ru', 'en', 'tj'],
        'apps.mailbox.complaint_mode_variants' => [
            'spam' => 'Π‘ΠΏΠ°ΠΌ',
            'fraud' => 'ΠœΠΎΡˆΠ΅Π½Π½ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ'
        ]
    ]
]

4. load_only_model

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ структуру ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±Π΅Π· Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • model_name - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'columns' => [...],
    'columns_index' => [...],
    'data' => [...],
    'tabs' => [...]
]

5. load_data

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ записи с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ΠΏΡ€Π°Π² доступа.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • model_name - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
  • primary_key - имя ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°
  • key_value - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π°
  • entity_uri (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) - URI сущности
  • ql_items (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) - массив для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»Π΅ΠΉ:

POST /apps/api/rest.php
action=model
do=load_data
model_name=data
primary_key=id
key_value=100
ql_items[text]=1
ql_items[price]=1

Π’Π΅Ρ€Π½Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ поля text ΠΈ price.


6. graphql_update

ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ поля записи (GraphQL-ΡΡ‚ΠΈΠ»ΡŒ).

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • model_name - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
  • key_value - ID записи
  • ql_items - массив ΠΏΠΎΠ»Π΅ΠΉ для обновлСния
  • only_ql (optional) - Ссли true, обновляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ поля

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$params = [
    'action' => 'model',
    'do' => 'graphql_update',
    'model_name' => 'data',
    'key_value' => 100,
    'ql_items' => [
        'price' => 15000000,
        'active' => 1
    ],
    'only_ql' => true
];

JavaScript ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

$.ajax({
    url: '/apps/api/rest.php',
    data: {
        action: 'model',
        do: 'graphql_update',
        model_name: 'data',
        only_ql: true,
        key_value: 100,
        ql_items: {
            active: 0
        }
    },
    type: 'post',
    success: function(response) {
        console.log(response);
    }
});

7. native_insert

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ запись с Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ зависимых ΠΏΠΎΠ»Π΅ΠΉ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности:

  • АвтоматичСскоС созданиС URI ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° geodata (ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚)
  • Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° связанных Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

POST /apps/api/rest.php
action=model
do=native_insert
model_name=data
ql_items[topic_id]=6162
ql_items[city_id]=1
ql_items[text]=НовоС объявлСниС
ql_items[price]=5000000
ql_items[geo][lat]=38.5598
ql_items[geo][lng]=68.7738

8. load_grid_columns

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ описаниС ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ для отобраТСния Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'columns' => [
        [
            'name' => 'id',
            'title' => 'ID',
            'type' => 'primary_key',
            'show_in_grid' => true,
            'sortable' => true
        ]
    ]
]

9. get_list

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ список записСй с ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • model_name - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
  • page - Π½ΠΎΠΌΠ΅Ρ€ страницы (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1)
  • per_page - записСй Π½Π° страницу (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 20)
  • filter - массив Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²
  • sort_by - ΠΏΠΎΠ»Π΅ сортировки
  • sort_order - порядок (ASC/DESC)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

POST /apps/api/rest.php
action=model
do=get_list
model_name=data
page=1
per_page=10
filter[city_id]=1
filter[price_from]=1000000
sort_by=date_added
sort_order=DESC

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'data' => [
        ['id' => 100, 'text' => '...', 'price' => 5000000],
        ['id' => 101, 'text' => '...', 'price' => 6000000]
    ],
    'pagination' => [
        'total' => 150,
        'per_page' => 10,
        'current_page' => 1,
        'total_pages' => 15
    ]
]

Π Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ (User API)

Endpoint: action=user

1. register

РСгистрация Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • login - Π»ΠΎΠ³ΠΈΠ½
  • password - ΠΏΠ°Ρ€ΠΎΠ»ΡŒ
  • email - email
  • fio - ЀИО
  • phone - Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

POST /apps/api/rest.php
action=user
do=register
login=newuser
password=secret123
email=user@example.com
fio=Иван Иванов
phone=+992000000000

2. get_user_info

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅.

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'user_id' => 5,
    'login' => 'admin',
    'email' => 'admin@example.com',
    'fio' => 'Администратор',
    'user_group_id' => 1
]

3. update_profile

ОбновлСниС профиля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • user_id - ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • массив ΠΏΠΎΠ»Π΅ΠΉ для обновлСния

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

POST /apps/api/rest.php
action=user
do=update_profile
user_id=5
fio=НовоС имя
phone=+992111111111

Π Π°Π±ΠΎΡ‚Π° с профилями (Profile API)

Endpoint: action=profile

1. load_profile

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… профиля.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • user_id - ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'data' => [
        'user_id' => 5,
        'fio' => 'Иван Иванов',
        'phone' => '+992000000000',
        'company' => 'ООО "Компания"',
        'address' => 'Π³. Π”ΡƒΡˆΠ°Π½Π±Π΅'
    ]
]

Π Π°Π±ΠΎΡ‚Π° с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² (Uploads API)

Endpoint: action=uploads

1. upload_file

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π° Π½Π° сСрвСр.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • file - Ρ„Π°ΠΉΠ» (POST multipart/form-data)
  • model_name - модСль для привязки
  • record_id - ID записи

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с cURL:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com/apps/api/rest.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
    'action' => 'uploads',
    'do' => 'upload_file',
    'session_key' => $session_key,
    'model_name' => 'data',
    'record_id' => 100,
    'file' => new CURLFile('/path/to/image.jpg')
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'file_id' => 456,
    'file_name' => 'image.jpg',
    'file_url' => '/img/data/image.jpg'
]

2. delete_file

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • file_id - ID Ρ„Π°ΠΉΠ»Π°

3. get_files

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ„Π°ΠΉΠ»ΠΎΠ² записи.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • model_name - модСль
  • record_id - ID записи

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'files' => [
        [
            'id' => 456,
            'name' => 'image.jpg',
            'url' => '/img/data/image.jpg',
            'size' => 102400
        ]
    ]
]

Π Π°Π±ΠΎΡ‚Π° с коммСнтариями (Comment API)

Endpoint: action=comment

1. add_comment

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • model_name - модСль
  • record_id - ID записи
  • text - тСкст коммСнтария
  • parent_id (optional) - ID Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ коммСнтария

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

POST /apps/api/rest.php
action=comment
do=add_comment
model_name=data
record_id=100
text=ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅!

2. get_comments

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • model_name - модСль
  • record_id - ID записи

ΠžΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'comments' => [
        [
            'id' => 1,
            'user_id' => 5,
            'user_name' => 'Иван',
            'text' => 'ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅!',
            'date_added' => '2024-01-15 10:30:00',
            'replies' => []
        ]
    ]
]

Π Π°Π±ΠΎΡ‚Π° с Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (Reservation API)

Endpoint: action=reservation

1. create_reservation

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • record_id - ID ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
  • date_from - Π΄Π°Ρ‚Π° Π½Π°Ρ‡Π°Π»Π°
  • date_to - Π΄Π°Ρ‚Π° окончания
  • client_name - имя ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
  • client_phone - Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½

2. get_reservations

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΉ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • record_id - ID ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Π Π°Π±ΠΎΡ‚Π° с поиском (MySearch API)

Endpoint: action=mysearch

1. search

Поиск по записям.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • model_name - модСль для поиска
  • query - поисковый запрос
  • filters - массив Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

POST /apps/api/rest.php
action=mysearch
do=search
model_name=data
query=ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π°
filters[city_id]=1
filters[price_from]=1000000
filters[price_to]=10000000

Π Π°Π±ΠΎΡ‚Π° со списками памяти (MemoryList API)

Endpoint: action=memorylist

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… списков (ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ΅, сравнСниС ΠΈ Ρ‚.Π΄.).

1. add_to_list

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² список.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • list_name - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ списка
  • record_id - ID записи

2. get_list

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • list_name - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ списка

Π Π°Π±ΠΎΡ‚Π° со слоями (Layers API)

Endpoint: action=layers

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ слоями ΠΊΠ°Ρ€Ρ‚ (для нСдвиТимости).


Π Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ (Config API)

Endpoint: action=config

1. get_config

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ.

2. update_config

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ (Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²Π° администратора).


Π Π°Π±ΠΎΡ‚Π° со статистикой (Stat API)

Endpoint: action=stat

1. get_stats

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ статистику.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • model_name - модСль
  • date_from - Π΄Π°Ρ‚Π° Π½Π°Ρ‡Π°Π»Π°
  • date_to - Π΄Π°Ρ‚Π° окончания

РСгистрация (Register API)

Endpoint: action=register

1. register_user

РСгистрация Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠ΅ΠΉ.


ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок

ВсС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ API содСрТат ΠΏΠΎΠ»Π΅ state ΠΈΠ»ΠΈ status:

Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚:

[
    'state' => 'success',
    'data' => [...]
]

ΠžΡ‚Π²Π΅Ρ‚ с ошибкой:

[
    'state' => 'error',
    'message' => 'ОписаниС ошибки',
    'error_code' => 'ERROR_CODE'
]

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки:

Код ОписаниС
check_session_key_failed НСвСрный ΠΈΠ»ΠΈ ΠΈΡΡ‚Π΅ΠΊΡˆΠΈΠΉ session_key
access_denied Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½
model_not_defined МодСль нС найдСна
record_not_found Π—Π°ΠΏΠΈΡΡŒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°
validation_error Ошибка Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: CRUD ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с объявлСниями

<?php
require_once 'sitebill_sdk.php';

$api = new Sitebill_SDK(
    'http://estate.sitebill.ru/apps/api/rest.php',
    'admin',
    'admin'
);

if (!$api->connect()) {
    die('Ошибка ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ');
}

// CREATE - БозданиС объявлСния
$newAd = [
    'topic_id' => 6162,  // ΠšΠ²Π°Ρ€Ρ‚ΠΈΡ€Π°
    'city_id' => 1,       // Π”ΡƒΡˆΠ°Π½Π±Π΅
    'street_id' => 50,
    'number' => '10',
    'text' => 'ΠŸΡ€ΠΎΠ΄Π°Π΅Ρ‚ΡΡ 3-комнатная ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π°',
    'price' => 15000000,
    'currency_id' => 1,   // Π‘ΠΎΠΌΠΎΠ½ΠΈ
    'square_all' => 85.5,
    'square_live' => 60,
    'square_kitchen' => 12,
    'floor' => 5,
    'floor_count' => 9,
    'room_count' => 3,
    'active' => 1
];

$result = $api->native_insert('data', $newAd);
$adId = $result['data']['new_record_id'];
echo "Боздано объявлСниС ID: $adId\n";

// READ - Π§Ρ‚Π΅Π½ΠΈΠ΅ объявлСния
$ad = $api->load_data('data', 'id', $adId);
echo "Π¦Π΅Π½Π°: " . $ad['data']['price']['value'] . "\n";
echo "ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ: " . $ad['data']['square_all']['value'] . " ΠΌΒ²\n";

// UPDATE - ОбновлСниС Ρ‡Π΅Ρ€Π΅Π· GraphQL
// (трСбуСтся прямой HTTP запрос, Ρ‚.ΠΊ. Π² SDK Π½Π΅Ρ‚ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°)

// DELETE - Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅
$api->delete('data', 'id', $adId);
echo "ОбъявлСниС ΡƒΠ΄Π°Π»Π΅Π½ΠΎ\n";

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ

<?php
// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
$columns = $api->load_grid_columns('user');
print_r($columns);

// Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
$user = $api->load_data('user', 'user_id', 5);
echo "ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ: " . $user['data']['login']['value'] . "\n";
echo "Email: " . $user['data']['email']['value'] . "\n";

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: Массовая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° объявлСний

<?php
require_once 'sitebill_sdk.php';

$api = new Sitebill_SDK($url, $login, $password);
$api->connect();

// Массив объявлСний для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ
$ads = [
    ['text' => 'ΠšΠ²Π°Ρ€Ρ‚ΠΈΡ€Π° 1', 'price' => 5000000],
    ['text' => 'ΠšΠ²Π°Ρ€Ρ‚ΠΈΡ€Π° 2', 'price' => 6000000],
    ['text' => 'ΠšΠ²Π°Ρ€Ρ‚ΠΈΡ€Π° 3', 'price' => 7000000],
];

$createdIds = [];

foreach ($ads as $adData) {
    $adData['topic_id'] = 6162;
    $adData['city_id'] = 1;
    $adData['active'] = 1;
    
    $result = $api->native_insert('data', $adData);
    
    if ($result['state'] == 'success') {
        $createdIds[] = $result['data']['new_record_id'];
        echo "Π‘ΠΎΠ·Π΄Π°Π½ΠΎ: ID {$result['data']['new_record_id']}\n";
    } else {
        echo "Ошибка: " . $result['message'] . "\n";
    }
}

echo "\nВсСго создано: " . count($createdIds) . " объявлСний\n";

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4: Поиск ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ (прямой HTTP запрос)

<?php
function apiRequest($url, $params) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $result = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($result, true);
}

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ session_key
$authResult = apiRequest($apiUrl, [
    'action' => 'oauth',
    'do' => 'login',
    'login' => 'admin',
    'password' => 'admin'
]);

$sessionKey = $authResult['session_key'];

// Поиск объявлСний
$searchResult = apiRequest($apiUrl, [
    'action' => 'model',
    'do' => 'get_list',
    'session_key' => $sessionKey,
    'model_name' => 'data',
    'filter' => [
        'city_id' => 1,
        'price_from' => 1000000,
        'price_to' => 10000000,
        'room_count' => 3
    ],
    'sort_by' => 'date_added',
    'sort_order' => 'DESC',
    'page' => 1,
    'per_page' => 10
]);

foreach ($searchResult['data'] as $ad) {
    echo "ID: {$ad['id']}, Π¦Π΅Π½Π°: {$ad['price']}\n";
}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5: Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

<?php
$apiUrl = 'http://your-domain.com/apps/api/rest.php';
$sessionKey = '...'; // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Ρ‡Π΅Ρ€Π΅Π· connect()

// Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π°
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
    'action' => 'uploads',
    'do' => 'upload_file',
    'session_key' => $sessionKey,
    'model_name' => 'data',
    'record_id' => 100,
    'file' => new CURLFile('/path/to/photo.jpg', 'image/jpeg', 'photo.jpg')
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = json_decode(curl_exec($ch), true);
curl_close($ch);

if ($result['state'] == 'success') {
    echo "Π€Π°ΠΉΠ» Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½: {$result['file_url']}\n";
}

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности

Π Π°Π±ΠΎΡ‚Π° с Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ (Tabs)

МодСли ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»Π΅ΠΉ:

$data = $api->load_data('data', 'id', 100);
$tabs = $data['tabs'];

foreach ($tabs as $tabName => $tabFields) {
    echo "Π’ΠΊΠ»Π°Π΄ΠΊΠ°: $tabName\n";
    foreach ($tabFields as $field) {
        echo "  - {$field['title']}: {$field['value']}\n";
    }
}

Π Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (Geodata)

$adData = [
    'text' => 'ΠšΠ²Π°Ρ€Ρ‚ΠΈΡ€Π° Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅',
    'price' => 10000000,
    'geo' => [
        'lat' => 38.5598,
        'lng' => 68.7738
    ]
];

$result = $api->native_insert('data', $adData);

ΠœΡƒΠ»ΡŒΡ‚ΠΈΡΠ·Ρ‹Ρ‡Π½ΠΎΡΡ‚ΡŒ

// Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с языками
$config = apiRequest($apiUrl, [
    'action' => 'model',
    'do' => 'load_config',
    'session_key' => $sessionKey
]);

$languages = $config['data']['languages']; // ['ru', 'en', 'tj']

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ использованию

  1. Π₯Ρ€Π°Π½ΠΈΡ‚Π΅ session_key Π² сСссии: ПослС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сохранитС session_key, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС.

  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹: ВсСгда провСряйтС state Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

  3. ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ошибки: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ try-catch для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ сСти.

  4. ΠšΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ структуру ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ: Π—Π°Π³Ρ€ΡƒΠΆΠ°ΠΉΡ‚Π΅ load_grid_columns ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΠΊΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

  5. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΡŽ: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими списками ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ page ΠΈ per_page.

  6. Валидация Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π½Π° сСрвСр.


Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Sitebill API PHP SDK прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнт для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с систСмой Sitebill. ДокумСнтация ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ основныС возмоТности, Π½ΠΎ систСма ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Для получСния ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ доступных ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ исходный ΠΊΠΎΠ΄ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /apps/api/classes/.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки:

  • GitHub Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ SDK: https://github.com/rumantic/sitebill_api_php_sdk
  • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ API: /apps/api/classes/
  • ДокумСнтация ΠΏΠΎ модСлям: /apps/api/classes/class.model.php

ВСрсия Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ: 1.0
Π”Π°Ρ‚Π°: ΠΠΎΡΠ±Ρ€ΡŒ 2025
Автор: Generated for Sitebill CMS

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages