Linework Developers
RU
Получить доступ

Справочник

Примеры кода

Самые распространённые вызовы на 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!"})

Что ещё#