Внимание! Дистрибутив RK-CMS распространяется исключительно через сайт rk-cms.ru. Загрузка копий со сторонних ресурсов может привести к потере данных или установке вредоносного ПО.

Меню

    Базовый URL

    Все запросы отправляются по протоколу HTTPS методом POST. Параметры передаются в теле запроса в формате JSON.

    {SITEURL}/api/v2/{ENDPOINT}/

    Где:

    {SITEURL} - домен сервиса (например, https://example.com)
    {ENDPOINT} - название вызываемого метода.

    Указание языка ответа (необязательно)

    Если нужно принудительно задать язык ответов, добавьте код языка после домена:

    {SITEURL}/{LANGUAGE}/api/v2/{ENDPOINT}/

    {LANGUAGE} — двухбуквенный код языка (en, ru, de и т.д.). Если не указан, используется язык по умолчанию.

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

    Для каждого запроса необходимо передавать два заголовка:

    Api-ID - Ваш идентификатор API (API-ID), выдаётся на сайте.
    Api-Sign - Сигнатура запроса, вычисленная по алгоритму HMAC-SHA256

    Также обязателен заголовок Content-Type: application/json.

    Генерация сигнатуры (Api-Sign)

    Сигнатура вычисляется по алгоритму HMAC-SHA256. Ключ - ваш API-KEY. Подписывается каноническая JSON-строка тела запроса.

    Каноническая форма JSON

    Параметры запроса передаются в виде ассоциативного массива. Этот массив сериализуется в JSON-объект с фигурными скобками {}. Для корректной подписи необходимо:

    - Отсортировать ключи массива в алфавитном порядке (лексикографически, по возрастанию).
    - Сериализовать массив в JSON без пробелов (разделители , и :).

    Тело запроса всегда должно быть JSON-объектом (ассоциативным массивом).

    Обязательными полями являются:
    id - уникальная строка длиной до 130 символов, состоящая только из латинских букв (a-z, A-Z) и цифр (0-9).

    Пустых массивов не бывает.

    Пример запроса

    Исходный ассоциативный массив (не отсортирован):

     {"user_id": 42,"id": "a1b2c3d4e5f6g7h8i9j0..."} 

    Каноническая строка для подписи (после сортировки ключей):

     {"id":"a1b2c3d4e5f6g7h8i9j0...","user_id":42} 

    Алгоритм

    - Сгенерируйте уникальную строку id (100 символов, только латинские буквы и цифры).
    - Подготовьте объект с параметрами, включив обязательный ключ id.
    - Отсортируйте ключи в алфавитном порядке.
    - Преобразуйте в JSON-строку без пробелов.
    - Вычислите HMAC-SHA256 от этой строки, используя API-KEY.
    - Полученный hex-дайджест (в нижнем регистре) поместите в заголовок Api-Sign.

    Пример cURL (bash)

     #!/bin/bash SITE_URL="https://example.com"API_ID="your_api_id"API_KEY="your_api_key"ACTION="get_balance" # Генерация уникального id: 100 символов (hex из 50 случайных байт)REQUEST_ID=$(openssl rand -hex 50) # Тело запроса (уже отсортировано)JSON_BODY="{\"id\":\"$REQUEST_ID\",\"user_id\":42}" # Вычисляем HMAC-SHA256 (требуется openssl)SIGN=$(printf '%s' "$JSON_BODY" | openssl dgst -sha256 -hmac "$API_KEY" -hex | awk '{print $2}') curl -X POST "$SITE_URL/api/v2/$ACTION/" \-H "Content-Type: application/json" \-H "Api-ID: $API_ID" \-H "Api-Sign: $SIGN" \-d "$JSON_BODY" 

    Пример PHP

     $site_url = 'https://example.com';$api_id = 'your_api_id';$api_key = 'your_api_key';$action = 'get_balance'; // Генерация уникального id: 100 символов (hex из 50 случайных байт)$request_id = bin2hex(random_bytes(50)); // Ассоциативный массив параметров$params = ['user_id' => 42,'id' => $request_id,]; // Сортировка ключейksort($params); $json_body = json_encode($params, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);$sign = hash_hmac('sha256', $json_body, $api_key); $url = $site_url . '/api/v2/' . $action . '/'; $headers = ['Content-Type: application/json','Api-ID: ' . $api_id,'Api-Sign: ' . $sign,]; $ch = curl_init($url);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, $json_body);curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$response = curl_exec($ch);curl_close($ch); echo $response; 

    Пример JS

     const SITE_URL = 'https://example.com';const API_ID = 'your_api_id';const API_KEY = 'your_api_key';const ACTION = 'get_balance'; // Генерация уникального id: 100 символов (hex из 50 случайных байт)function generateRequestId() { const bytes = new Uint8Array(50);crypto.getRandomValues(bytes); return Array.from(bytes, b => b.toString(16).padStart(2, '0')).join('');} const requestId = generateRequestId(); // Параметры (ассоциативный массив)const params = {user_id: 42,id: requestId}; // Сортировка ключейconst sortedParams = Object.keys(params).sort().reduce((acc, key) => { acc[key] = params[key]; return acc;}, {}); const jsonBody = JSON.stringify(sortedParams); // Функция HMAC-SHA256 через crypto.subtleasync function hmacSha256(message, secret) {const enc = new TextEncoder();const key = await crypto.subtle.importKey('raw',enc.encode(secret),{ name: 'HMAC', hash: 'SHA-256' },false,['sign']);const signature = await crypto.subtle.sign('HMAC', key, enc.encode(message)); return Array.from(new Uint8Array(signature)).map(b => b.toString(16).padStart(2, '0')).join('');} async function sendRequest() { const sign = await hmacSha256(jsonBody, API_KEY);const url = `${SITE_URL}/api/v2/${ACTION}/`; const response = await fetch(url, {method: 'POST',headers: {'Content-Type': 'application/json','Api-ID': API_ID,'Api-Sign': sign},body: jsonBody}); const data = await response.json();console.log(data);} sendRequest().catch(console.error); 

    Ответ сервера

    Поле Тип Описание
    error integer Код ошибки. 0 - успех, иначе - код ошибки.
    error_text string Текстовое описание кода ошибки (например, "OK", "Invalid signature").
    data any Результат выполнения запроса.

    Пример успешного ответа

     {"error": 0,"error_text": "OK","data": {"user_id": 42,"balance": "1500.75","currency": "USD"}} 

    Пример ошибки

     {"error": 401,"error_text": "Invalid signature","data": ""} 
    Доступные методы
    test
    тестовый метод для проверки работоспособности API
    /api/v2/test/
    параметры
    id
    * уникальная строка из 100 символов, состоящая только из латинских букв (a-z, A-Z) и цифр (0-9).
    результат (data)
    api_id
    Api-ID
    ip
    ваш IP
    user_id
    ID пользователя
    locale
    язык ответа
    request_id
    id запроса

    Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы cookie (узнать подробнее).

    Продолжая работу с сайтом, Вы разрешаете использование cookie-файлов. Вы всегда можете отключить файлы cookie в настройках Вашего браузера.