Partner Event API · zero-production-impact
先驗證參考請求,再驗收你的後端
本頁先用瀏覽器完成兩個零汙染參考測試:步驟 1 檢查憑證與請求格式,步驟 2 檢查 mrt_ 測試通道。兩步通過後,下游工程師仍要從自己的後端重跑一次,才代表實際程式碼完成。
你要呼叫的測試 API
瀏覽器 Playground 與下游後端使用同一個正式 endpoint。測試請求必須帶 test: true 與對接包中的 mrt_;每次 API 回應都是該次測試的結果,但瀏覽器參考測試與下游後端驗收必須分開判讀。全程不需要登入租戶後台。
- POST
https://api.meetroas.com/v1/events- 僅驗籤與 schema
https://api.meetroas.com/v1/events/validate
// 在下游後端執行;三個值都由環境變數注入
const crypto = require("node:crypto");
async function main() {
const endpoint = "https://api.meetroas.com/v1/events";
const mrClickId = process.env.MEETROAS_TEST_ATTRIBUTION || "";
if (!/^mrt_[A-Za-z0-9_-]{32}$/.test(mrClickId)) throw new Error("MEETROAS_TEST_ATTRIBUTION must be the mrt_ value from this Key's package");
const body = JSON.stringify({
event_id: "partner-smoke-" + Date.now(),
mr_click_id: mrClickId,
event: "account_registration",
occurred_at: new Date().toISOString(),
test: true
});
const timestamp = String(Math.floor(Date.now() / 1000));
const signature = "v1=" + crypto.createHmac("sha256", process.env.MEETROAS_SECRET)
.update(timestamp + "." + body).digest("hex");
const response = await fetch(endpoint, { method: "POST", headers: {
"content-type": "application/json",
"x-meetroas-key": process.env.MEETROAS_KEY_ID,
"x-meetroas-timestamp": timestamp,
"x-meetroas-signature": signature
}, body });
const result = await response.json();
console.log(response.status, result);
if (![200, 202].includes(response.status) || result.integration_status !== "passed" || result.delivery_readiness !== "not_applicable") process.exit(1);
}
main().catch((error) => { console.error(error); process.exit(1); });驗收狀態
1. 先驗證憑證與請求格式
貼上對接包中的 Key ID 與 Secret,並只保留目標平台真實支援的事件。瀏覽器會傳送參考請求,檢查 HMAC、schema 與安全拒絕行為;全部通過才會開放步驟 2。這個步驟不會寫入測試或正式事件。
資料只保留在這個分頁的記憶體;Secret 不會寫入網址、本機儲存、cookie 或畫面結果。
2. 再驗證 Test Click ID 與測試寫入
從對接包的 15 天 Test URL 開啟本頁時,Test Click ID 會自動填入。步驟 1 通過後,這顆按鈕才會開放;它會由這個瀏覽器傳送測試事件,驗證 mrt_ 歸屬、寫入與冪等,不會執行下游自己的程式碼。
最後:從你的後端完成真正驗收
Playground 兩步通過只證明對接包與 MeetROAS 測試通道可用。請複製上方 Node.js 範例,由下游後端讀取同一組 Key、Secret 與 mrt_,傳送 test: true 請求;收到 HTTP 200/202、integration_status=passed 與 delivery_readiness=not_applicable 後,工程師端才算完成。全程不需要登入租戶後台。
如何判讀
- 步驟 1 通過 — 這組憑證可以正確簽章,schema、事件語義與安全拒絕行為符合契約。
- 步驟 2 通過 — 瀏覽器參考請求可用 mrt_ 寫入 Test Runs,且重複與衝突語義正確;這不代表下游程式碼已經執行。
- 下游後端通過 — 同樣結果由下游自己的後端產生,才代表工程師完成一次性帳號對接。正式 Campaign、Goal Binding 與投手來源設定另行處理。
Playground 只用於整合驗證。正式環境必須由後端 secrets manager 讀取憑證、儲存真實投放產生的 mrc_,並移除 test 欄位。