Ключи и права
Ключ привязан к одному магазину и выбранным правам. Отозвать его можно в любой момент.
Как передавать ключ
В каждом запросе — заголовок Authorization: Bearer oks_…. Без него ответ 401 missing_key, с неверным или отозванным ключом — 401 invalid_key.
Права
| Право | Что открывает |
|---|---|
products:read | товары, разделы, бренды |
products:write | создание и правка товаров, остатков, разделов, брендов; удаление товаров |
orders:read | чтение заказов; в заказе есть контакты покупателя (имя, телефон, почта, адрес) — персональные данные |
orders:write | создание заказов, смена статуса, оплата, заметка менеджера |
customers:read | чтение покупателей (персональные данные, отдельное право) |
Нет нужного права — 403 insufficient_scope. Сколько ключей и запросов разрешено тарифу — в разделе «Лимиты».
Ключ — только для сервера. Запросы из браузера не разрешены (CORS выключен).
Магазин и права ключа
GET/shopлюбой действующий ключ
Название, адрес, тариф и права ключа. Годится как проверка ключа. Нужен любой действующий ключ.
Пример запроса
curl https://api.okeysait.ru/v1/shop \
-H "Authorization: Bearer $OKEANO_KEY"<?php
$ch = curl_init('https://api.okeysait.ru/v1/shop');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.get(
"https://api.okeysait.ru/v1/shop",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/shop", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/shop");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/shop", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"site": "myshop",
"name": "Мой магазин",
"host": "myshop.okeysait.ru",
"url": "https://myshop.okeysait.ru",
"currency": "RUB",
"plan": "free",
"limits": {
"requests_per_minute": 60
},
"key": {
"name": "Склад",
"scopes": [
"products:read",
"products:write"
]
},
"scopes": [
"products:read",
"products:write"
],
"products_count": 12,
"products_limit": 50,
"order_statuses": [
{
"id": 1,
"name": "Новый"
},
{
"id": 2,
"name": "Принят"
}
]
}Другие ответы: 401, 429 — коды ошибок.