Справочник
Примеры кода
Самые распространённые вызовы на curl, Node.js и Python. Выберите язык один раз — выбор запомнится на всех страницах.
Подготовка: минимальный клиент#
Несколько строк, которые добавляют ключ, отправляют JSON и превращают ошибки в исключения. Остальные примеры на этой странице используют этот клиент.
export LINEWORK_API_KEY="lwk_your_key_here"
export API="https://api.linework.app/open/v1"
// linework.mjs — Node.js 18+ (built-in fetch)
const API = "https://api.linework.app/open/v1";
export async function lw(method, path, body) {
const res = await fetch(API + path, {
method,
headers: {
Authorization: `Bearer ${process.env.LINEWORK_API_KEY}`,
...(body && !(body instanceof FormData) ? { "Content-Type": "application/json" } : {}),
},
body: body instanceof FormData ? body : body ? JSON.stringify(body) : undefined,
});
if (res.status === 204) return null;
const data = await res.json();
if (!res.ok) {
const err = new Error(`${res.status} ${data.error?.code}: ${data.error?.message}`);
err.code = data.error?.code;
err.retryAfter = Number(res.headers.get("Retry-After")) || undefined;
throw err;
}
return data;
}
# linework.py — pip install requests
import os
import requests
API = "https://api.linework.app/open/v1"
s = requests.Session()
s.headers["Authorization"] = f"Bearer {os.environ['LINEWORK_API_KEY']}"
class LineworkError(Exception):
def __init__(self, status, code, message):
super().__init__(f"{status} {code}: {message}")
self.status, self.code = status, code
def lw(method, path, **kw):
r = s.request(method, API + path, timeout=60, **kw)
if r.status_code == 204:
return None
data = r.json()
if not r.ok:
e = data.get("error", {})
raise LineworkError(r.status_code, e.get("code"), e.get("message"))
return data
Профили#
curl "$API/me" -H "Authorization: Bearer $LINEWORK_API_KEY"
curl "$API/users/by-username/linework" -H "Authorization: Bearer $LINEWORK_API_KEY"
const me = await lw("GET", "/me");
const user = await lw("GET", "/users/by-username/linework");
me = lw("GET", "/me")
user = lw("GET", "/users/by-username/linework")
Загрузка медиафайла и публикация поста#
MEDIA_ID=$(curl -s "$API/media" -H "Authorization: Bearer $LINEWORK_API_KEY" \
-F "file=@photo.jpg" | sed -E 's/.*"mediaId":"([^"]+)".*/\1/')
curl "$API/posts" -H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"text\": \"Hello Linework!\", \"mediaIds\": [\"$MEDIA_ID\"]}"
import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("file", new Blob([await readFile("photo.jpg")], { type: "image/jpeg" }), "photo.jpg");
const { mediaId } = await lw("POST", "/media", form);
const post = await lw("POST", "/posts", { text: "Hello Linework!", mediaIds: [mediaId] });
with open("photo.jpg", "rb") as f:
media_id = lw("POST", "/media", files={"file": ("photo.jpg", f, "image/jpeg")})["mediaId"]
post = lw("POST", "/posts", json={"text": "Hello Linework!", "mediaIds": [media_id]})
Комментарий, лайк, подписка#
curl "$API/posts/1043/comments" -H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" -d '{"text": "Great shot!"}'
curl -X POST "$API/posts/1043/like" -H "Authorization: Bearer $LINEWORK_API_KEY"
curl -X POST "$API/users/5512/follow" -H "Authorization: Bearer $LINEWORK_API_KEY"
await lw("POST", "/posts/1043/comments", { text: "Great shot!" });
await lw("POST", "/posts/1043/like");
await lw("POST", "/users/5512/follow");
lw("POST", "/posts/1043/comments", json={"text": "Great shot!"})
lw("POST", "/posts/1043/like")
lw("POST", "/users/5512/follow")
Магазин: обновление остатков и отправка заказа#
curl -X PATCH "$API/store/products/7781/stock" -H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" -d '{"stock": 12}'
curl "$API/store/orders/50213/ship" -H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" -d '{"carrier": "BRT", "trackingNumber": "084512345678"}'
await lw("PATCH", "/store/products/7781/stock", { stock: 12 });
await lw("POST", "/store/orders/50213/ship", { carrier: "BRT", trackingNumber: "084512345678" });
lw("PATCH", "/store/products/7781/stock", json={"stock": 12})
lw("POST", "/store/orders/50213/ship", json={"carrier": "BRT", "trackingNumber": "084512345678"})
Чат: ответ в переписке#
curl "$API/conversations?limit=20" -H "Authorization: Bearer $LINEWORK_API_KEY"
curl "$API/conversations/c_3391/messages" -H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" -d '{"text": "Thanks, we are on it!"}'
const convs = await lw("GET", "/conversations?limit=20");
await lw("POST", "/conversations/c_3391/messages", { text: "Thanks, we are on it!" });
convs = lw("GET", "/conversations", params={"limit": 20})
lw("POST", "/conversations/c_3391/messages", json={"text": "Thanks, we are on it!"})
Что ещё#
- Подробные пошаговые руководства — в разделе Руководства.
- Все endpoint и поля — в справочнике API.
- Импортируйте файл OpenAPI в Postman, Insomnia или свой генератор кода.