stable · guide · 0.1.0
Public audit boundary
Structured fact,不是 business record
Project Audit 是 client-scoped、append-only structured fact:actor reference、action、resource type/reference、outcome、occurred time 與 correlation identifier。It is not a business record,不接受 arbitrary payload、request body、credential、payment-card data 或 document content。
Project Backend 保有完整業務紀錄。MiniCenter audit copy 只支援跨 capability correlation、retention 與授權調查;相同 idempotency key 只能重送完全相同的 fact。
使用官方 Python SDK 提交
Project Credential 只授予 audit:write,且保存在 Project Backend。Project Client 由
credential 決定,不可放進 request body。actor 與 resource 使用 project-owned opaque
reference;不得放 email、姓名、信件內容或 provider payload。
from minicenter import Client
client = Client(
"https://sandbox.minicenter.otus.tw/api/v1",
credential=project_credential,
)
audit = client.request(
"POST",
"/project-audits",
body={
"actor_id": "actor:38000000-0000-4000-8000-000000000010",
"action": "project.membership.changed",
"resource_type": "ProjectMembership",
"resource_id": "membership:38000000-0000-4000-8000-000000000011",
"outcome": "succeeded",
},
idempotency_key="project-membership-change-42",
)
對 uncertain response 重送完全相同的 body 與 idempotency key;成功會回傳相同 Audit ID。 每次 transport attempt 可使用新的 correlation ID,Project Audit 保留首次成功提交的 correlation。 如果 caller 明確提供 correlation header,相同 idempotency key 必須沿用該值。
Access 與 correction
公開 API 不提供 audit timeline、operator investigation 或 operational record 查詢。Platform Account 對自己的 audit-related personal data 可透過 Privacy Request 提出 access/export;append-only fact 不被改寫,correction 會新增可追溯的 correction record。
Internal incident procedure、recovery instruction、provider configuration、security secret、operator identity 與 account-specific timeline 都不屬於 public documentation。需要產品安全協助時使用公開的 Privacy Request 或 legal contact,而不是要求內部操作資料。