properties.runReport
POST/v1beta/properties/{property_id}:runReportGọi qua 360: POST https://partner.quantri360.com/v1/ga4/v1beta/properties/{property_id}:runReport
Sắp mở. API này đã chạy thật qua 360 và đang được chốt giá — bạn có thể đọc tài liệu và chuẩn bị tích hợp trước.
Mô tả API
Báo cáo GA4 theo chiều (dimension) × chỉ số (metric) trong khoảng ngày — nguồn số liệu website của 360 (phiên, người dùng, nguồn truy cập, sự kiện, thương mại điện tử).
- Chiều
datetrả dạngYYYYMMDD(vd20261019), theo múi giờ của property (metadata.timeZone). - Tiền theo
metadata.currencyCodecủa property. - Hạn mức GA4 tính theo property (token / ngày, / giờ) — báo cáo nhiều chiều tốn nhiều token; xem
propertyQuota. - Tên chiều / chỉ số sai → Google trả 400 kèm tên sai.
Request
Địa chỉ
POST https://partner.quantri360.com/v1/ga4/v1beta/properties/{property_id}:runReport
Xác thực & gian hàng
| Tên | Vị trí | Kiểu | Mẫu | Mô tả |
|---|---|---|---|---|
| Authorization | header | header | Bearer q360_live_ab12cd34_… | Khóa API của brand (tạo ở mục API key). Bắt buộc với mọi request. Brand suy từ key — không truyền mã brand. |
| platform_shop_id | query | string | 123456789 | Property ID GA4 (số) admin brand đã ủy quyền bằng nick Google — lấy ở GET /v1/platforms; phải trùng properties/{property_id} trong đường dẫn. Có thể bỏ (mỗi brand một property). |
Tham số request
| Tên | Vị trí | Kiểu | Bắt buộc | Mẫu | Mô tả |
|---|---|---|---|---|---|
| property_id | path | string | Có | 123456789 | Id property GA4 đã nối với 360 (chỉ số, không có "properties/"). |
| dateRanges | body | object[] | Có | [{"startDate":"2026-10-15","endDate":"2026-10-22"}] | Khoảng ngày: YYYY-MM-DD, hoặc today / yesterday / NdaysAgo. Tối đa 4 khoảng. |
| dimensions | body | object[] | Không | [{"name":"date"},{"name":"sessionDefaultChannelGroup"}] | Chiều phân tích dạng {name} (tối đa 9) — vd date, sessionDefaultChannelGroup, sessionSource, pagePath, deviceCategory, eventName, transactionId. Danh sách đủ: GET …/metadata. |
| metrics | body | object[] | Có | [{"name":"sessions"},{"name":"activeUsers"},{"name":"purchaseRevenue"}] | Chỉ số dạng {name} (tối đa 10) — vd sessions, activeUsers, newUsers, screenPageViews, keyEvents, ecommercePurchases, purchaseRevenue. |
| limit | body | string | Không | 10000 | Số dòng mỗi trang (mặc định 10.000, tối đa 250.000). |
| offset | body | string | Không | 0 | Bỏ qua N dòng đầu — lấy trang kế = offset + limit. |
| dimensionFilter | body | object | Không | Lọc theo chiều (FilterExpression của Google). | |
| orderBys | body | object[] | Không | Sắp xếp. | |
| returnPropertyQuota | body | bool | Không | true | true = kèm propertyQuota (hạn mức token còn lại) trong phản hồi. |
Phân trang
Lặp khi offset + limit < rowCount: gửi lại đúng body, tăng offset.
Ví dụ request
curl -s -X POST "https://partner.quantri360.com/v1/ga4/v1beta/properties/123456789:runReport" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"dateRanges":[{"startDate":"2026-10-15","endDate":"2026-10-22"}],"dimensions":[{"name":"date"},{"name":"sessionDefaultChannelGroup"}],"metrics":[{"name":"sessions"},{"name":"activeUsers"},{"name":"purchaseRevenue"}],"limit":"10000","returnPropertyQuota":true}'
Python
import requests
KEY = "q360_live_..." # khóa API của brand
r = requests.post(
"https://partner.quantri360.com/v1/ga4/v1beta/properties/123456789:runReport",
params={},
json={
"dateRanges": [
{
"startDate": "2026-10-15",
"endDate": "2026-10-22"
}
],
"dimensions": [
{
"name": "date"
},
{
"name": "sessionDefaultChannelGroup"
}
],
"metrics": [
{
"name": "sessions"
},
{
"name": "activeUsers"
},
{
"name": "purchaseRevenue"
}
],
"limit": "10000",
"returnPropertyQuota": True
},
headers={"Authorization": f"Bearer {KEY}"},
timeout=60,
)
print(r.status_code)
print(r.json())Node.js
const KEY = 'q360_live_...'; // khóa API của brand
const url = new URL('https://partner.quantri360.com/v1/ga4/v1beta/properties/123456789:runReport');
for (const [k, v] of Object.entries({})) url.searchParams.set(k, typeof v === 'object' ? JSON.stringify(v) : String(v));
const r = await fetch(url, {
method: 'POST',
headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({"dateRanges":[{"startDate":"2026-10-15","endDate":"2026-10-22"}],"dimensions":[{"name":"date"},{"name":"sessionDefaultChannelGroup"}],"metrics":[{"name":"sessions"},{"name":"activeUsers"},{"name":"purchaseRevenue"}],"limit":"10000","returnPropertyQuota":true}),
});
console.log(r.status, await r.json());PHP
<?php
$key = 'q360_live_...'; // khóa API của brand
$url = 'https://partner.quantri360.com/v1/ga4/v1beta/properties/123456789:runReport' . '?' . http_build_query([]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $key, 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"dateRanges":[{"startDate":"2026-10-15","endDate":"2026-10-22"}],"dimensions":[{"name":"date"},{"name":"sessionDefaultChannelGroup"}],"metrics":[{"name":"sessions"},{"name":"activeUsers"},{"name":"purchaseRevenue"}],"limit":"10000","returnPropertyQuota":true}');
$res = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $status, "\n", $res;Response
Tham số phản hồi (nguyên của Google Analytics 4)
| Tên | Kiểu | Mẫu | Mô tả |
|---|---|---|---|
| dimensionHeaders | object[] | Tên chiều theo thứ tự cột: [{name}]. | |
| metricHeaders | object[] | Tên + kiểu chỉ số: [{name, type}] — TYPE_INTEGER, TYPE_FLOAT, TYPE_CURRENCY, TYPE_SECONDS… | |
| rows | object[] | Dòng dữ liệu. | |
| dimensionValues | object[] | [{"value":"20261019"},{"value":"Paid Social"}] | Giá trị chiều theo thứ tự dimensionHeaders. |
| metricValues | object[] | [{"value":"1572"},{"value":"4855700.0050709993"}] | Giá trị chỉ số — LUÔN là chuỗi, tự đổi sang số. |
| rowCount | int | 76 | Tổng số dòng (để phân trang). |
| metadata | object | {currencyCode, timeZone, dataLossFromOtherRow, subjectToThresholding…} — `subjectToThresholding: true` = Google ẩn bớt số nhỏ để bảo vệ quyền riêng tư. | |
| propertyQuota | object | Khi returnPropertyQuota = true: tokensPerDay / tokensPerHour / concurrentRequests… mỗi mục {consumed, remaining}. |
Bắt đầu dùng
- Đăng ký tài khoản Partner
- Mở loại dữ liệu thuộc nhóm Báo cáo GA4 (Data API) ở trang nền tảng
- Tạo API key (tick kênh Google Analytics 4)
- Gọi theo ví dụ ở trên