sfappAPI 文件

文章

文章物件是部落格的一篇文章。

共通錯誤(validation_failedinsufficient_scopefeature_unavailablenot_found)見 錯誤

端點

方法與路徑 中文名 所需權限
POST /v1/blog/posts 建立文章 write_blog
PATCH /v1/blog/posts/{id} 更新文章 write_blog
GET /v1/blog/posts/{id} 取得文章 read_blog
GET /v1/blog/posts 列出文章 read_blog
POST /v1/blog/posts/{id}/publish 發布或排程 publish_blog
POST /v1/blog/posts/{id}/unpublish 下架文章 publish_blog
DELETE /v1/blog/posts/{id} 刪除文章 write_blog

文章物件

欄位 型別 必填或可為 null 用途
id 整數 必填 識別碼(唯讀)
title 字串 必填 標題
summary 字串 可為 null 摘要
body_html 字串 必填 內文(已過濾 HTML)
cover_image 物件 必填 封面圖 pathurl(唯讀)
status 字串 必填 draftscheduledpublished(唯讀)
published_at 字串 可為 null 發布時間(唯讀)
category_ids 整數[] 必填 分類識別碼
default_category_id 整數 可為 null 預設分類識別碼
view_count 整數 必填 前台瀏覽次數(唯讀)
public_url 字串 可為 null 前台網址(唯讀)
created_at 字串 必填 建立時間(唯讀)
updated_at 字串 必填 更新時間(唯讀)
warnings 字串[] 可省略 寫入時移除的項目(唯讀)

列表回應不含 body_htmlwarnings

POST/v1/blog/posts

標頭 Idempotency-Key(字串,必填)重送沿用同一把鍵,見 慣例。內文:

  • title(字串,必填)標題,前後空白會去除
  • body_html(字串,必填)內文,依白名單過濾,移除項目列在 warnings
  • summarycategory_idsdefault_category_id(可為 null)見文章物件表
  • cover_image_url(字串,可為 null)封面圖網址,見 圖片

上限見 限制。回 201,statusdraft。下表錯誤也適用更新。

錯誤碼 狀態碼 處理動作 可重試
title_charset_unsupported 422 limits.title_allows_emoji
cover_image_not_owned 422 改填上傳回應的 url
content_too_large 413 縮短內文
duplicate_content 409 沿用 details 的文章
idempotency_key_reused 409 換一把新鍵
quota_exceeded 429 quotas.posts_per_day

PATCH/v1/blog/posts/{id}

路徑 id(整數,必填)識別碼。內文欄位與建立文章相同,差異如下:

  • 每個欄位都可省略,至少送一個
  • titlebody_htmlcover_image_url 不接受 null
  • summarydefault_category_id 清空傳 null
  • category_ids 整批覆蓋,清空傳 null 或空陣列

狀態與發布時間改用發布與下架端點。回 200 與文章物件,錯誤同建立文章。

GET/v1/blog/posts/{id}

路徑 id(整數,必填)識別碼。回文章物件,含 warnings

GET/v1/blog/posts

查詢參數:

  • status(字串,可省略)篩選 draftscheduledpublished
  • category_id(整數,可省略)篩選這個分類的文章
  • cursor(字串,可省略)上一頁的 meta.next_cursor,原樣帶回
  • limit(整數,可省略)每頁筆數,1 到 50,預設 20

無分類功能時省略 category_iddata 依建立時間新到舊,meta.next_cursornull 即最後一頁。

POST/v1/blog/posts/{id}/publish

路徑 id(整數,必填)識別碼。內文 published_at(字串,可為 null)發布時間,ISO 8601 且含時區。

省略或給過去時間即立即發布,未來時間即排程。對已發布的文章給未來時間會退回 scheduled。只改時間時再呼叫一次。回 200 與文章物件。

POST/v1/blog/posts/{id}/unpublish

路徑 id(整數,必填)識別碼。沒有請求內文。

已發布或已排程的文章收回成草稿,published_at 一併清空。對草稿呼叫會原樣回傳,回 200。

DELETE/v1/blog/posts/{id}

路徑 id(整數,必填)識別碼。內文 confirmation_token(字串,第二次必填)第一次呼叫取得的確認碼。

刪除無法復原,分兩次送出。第一次不帶內文,回 409 與確認碼。details 另含 expires_in_secondspost.titlepost.status。標題交給人確認後,第二次帶確認碼送出,回 204。確認碼 5 分鐘內有效,綁定這篇文章與金鑰。已發布的文章先下架。

錯誤碼 狀態碼 處理動作 可重試
confirmation_required 409 取出確認碼後送第二次
post_is_published 409 先呼叫下架端點
post_has_product_links 409 請人在後台解除關聯