Riferimento
Esempi di codice
Le chiamate più comuni in curl, Node.js e Python. Scegli un linguaggio una volta: la scelta viene ricordata in tutte le pagine.
Preparazione: un piccolo client#
Poche righe che aggiungono la chiave, inviano JSON e trasformano gli errori in eccezioni. Gli altri esempi di questa pagina le usano.
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
Profili#
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")
Caricare media e pubblicare un post#
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]})
Commentare, mettere like, seguire#
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")
Store: aggiornare il magazzino e spedire un ordine#
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"})
Chat: rispondere in una conversazione#
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!"})
Altro#
- Procedure complete nelle Guide.
- Ogni endpoint e ogni campo nel Riferimento API.
- Importa il file OpenAPI in Postman, Insomnia o nel tuo generatore di codice.