دليل · posts:write
النشر مع الوسائط
ارفع صورة، وانشر منشورًا يستخدمها، ثم عدّله أو احذفه. النشر يتم على خطوتين: أولًا الوسائط، ثم المنشور.
نطاقات الصلاحية: posts:write (وstories:write للقصص، وposts:read لقراءة المنشورات لاحقًا).
1. ارفع الوسائط#
أرسل الملف بصيغة multipart/form-data في حقل اسمه file. تحتوي الاستجابة على mediaId لاستخدامه في الخطوة التالية.
curl https://api.linework.app/open/v1/media \
-H "Authorization: Bearer $LINEWORK_API_KEY" \
-F "file=@sunset.jpg"
import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("file", new Blob([await readFile("sunset.jpg")], { type: "image/jpeg" }), "sunset.jpg");
const res = await fetch("https://api.linework.app/open/v1/media", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.LINEWORK_API_KEY}` },
body: form, // do not set Content-Type: fetch adds the multipart boundary
});
const { mediaId } = await res.json();
import os, requests
API = "https://api.linework.app/open/v1"
s = requests.Session()
s.headers["Authorization"] = f"Bearer {os.environ['LINEWORK_API_KEY']}"
with open("sunset.jpg", "rb") as f:
r = s.post(API + "/media", files={"file": ("sunset.jpg", f, "image/jpeg")}, timeout=120)
r.raise_for_status()
media_id = r.json()["mediaId"]
{ "mediaId": "m_8f2c1a" }
حدود الوسائط
| النوع | الصيغ | الحجم الأقصى |
|---|---|---|
| الصور | JPEG, PNG, WebP, GIF | 50 MB |
| مقاطع الفيديو | MP4, MOV (QuickTime), WebM | 500 MB |
تفشل الملفات الأكبر حجمًا بالخطأ 413 PAYLOAD_TOO_LARGE؛ والصيغ الأخرى بالخطأ 400 VALIDATION_ERROR. قد تُحذف الوسائط المرفوعة التي لا تُستخدم أبدًا في أي منشور بعد مدة من الزمن.
2. انشر المنشور#
curl https://api.linework.app/open/v1/posts \
-H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "text": "Golden hour on the lake 🌅", "mediaIds": ["m_8f2c1a"] }'
const res = await fetch("https://api.linework.app/open/v1/posts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LINEWORK_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ text: "Golden hour on the lake 🌅", mediaIds: [mediaId] }),
});
const post = await res.json();
console.log(post.id);
r = s.post(API + "/posts", json={"text": "Golden hour on the lake 🌅", "mediaIds": [media_id]}, timeout=30)
r.raise_for_status()
post = r.json()
print(post["id"])
يمكن أن يحتوي المنشور على نص فقط، أو وسائط فقط، أو كليهما. يُحتسب كل منشور ضمن الحصة اليومية البالغة 50 منشورًا لكل حساب (الحصص).
3. التعديل أو الحذف#
# change the text
curl -X PATCH https://api.linework.app/open/v1/posts/1043 \
-H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "text": "Golden hour on Lake Como 🌅" }'
# delete the post
curl -X DELETE https://api.linework.app/open/v1/posts/1043 \
-H "Authorization: Bearer $LINEWORK_API_KEY"
يمكنك تعديل منشوراتك وحذفها فقط. اقرأها لاحقًا عبر GET /posts/{id} أو اعرض قائمتها عبر GET /me/posts (posts:read).
انشر قصة#
تستخدم القصص مسار الرفع نفسه: ارفع عبر POST /media، ثم أنشئ القصة باستخدام mediaId. نطاق الصلاحية stories:write، والحصة اليومية 20 قصة.
curl https://api.linework.app/open/v1/stories \
-H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "mediaId": "m_8f2c1a" }'
ممارسات جيدة#
- انشر محتوى يرغب الناس في رؤيته. يُعدّ الحشو المتكرر أو الآلي رسائل مزعجة (spam) بموجب شروط API.
- إذا انتهت مهلة
POST /posts، فتحقق منGET /me/postsقبل إعادة المحاولة، لتجنّب التكرار. - لا تنشر إلا الوسائط التي تملك حقوقها.