搜尋資料會在使用時載入。亦可直接瀏覽下方分類。

分析及洞察

讀取私人報表範本版本

以 viewer 或以上角色,按 workspace_id、id 同確切 version 讀取私人報表範本。回傳來源檔案、sourceSha256 同欄位配對,並核對儲存來源完整性;唔會修改範本、產生報表或自動更新平台數據。

POST /analytics-api/reporting/templates/get

Contract 核對日期: · sha256:d6e85a113e8fb367

概覽

以 viewer 或以上角色,按 workspace_id、id 同確切 version 讀取私人報表範本。回傳來源檔案、sourceSha256 同欄位配對,並核對儲存來源完整性;唔會修改範本、產生報表或自動更新平台數據。

HTTP 成功只表示本次操作的回應。背景工作須保留回傳 ID,並讀取同一操作,直至達到文件指定的終態。接受請求、排程成功或客戶端逾時,均不代表已發佈。

驗證及權限

接受的憑證類型
user_session, delegated_oauth, personal_access_token
委派權限
agent:operate
最低工作空間角色
viewer
存取範圍
已登入用戶及獲授權資源範圍
需要所有工作空間同意
否
會改動狀態
否
完成依據
synchronous_http_response

憑證不能擴大持有人的權限。實際操作仍會檢查工作空間成員資格、資源擁有權、已選工作空間及能力授權。Tool profile 只會改變可見工具,不會授予權限。

請求欄位

必填表示在所屬物件及所選分支內必須提供;子欄位必填不代表可選的父物件亦變成必填。以下欄位名稱及規則直接來自 contract。

請求欄位
欄位/分支類型/必填限制
$object父物件內必填
  • additionalProperties: false
workspace_idstring父物件內必填
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
idstring父物件內必填
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
versioninteger父物件內必填
  • minimum: 1
  • maximum: 1000000
完整 JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000
    }
  },
  "required": [
    "workspace_id",
    "id",
    "version"
  ],
  "additionalProperties": false
}

回應及完成條件

成功 HTTP 狀態碼: 200. 完成依據: synchronous_http_response.

HTTP 成功只表示本次操作的回應。背景工作須保留回傳 ID,並讀取同一操作,直至達到文件指定的終態。接受請求、排程成功或客戶端逾時,均不代表已發佈。

必填表示在所屬物件及所選分支內必須提供;子欄位必填不代表可選的父物件亦變成必填。以下欄位名稱及規則直接來自 contract。

回應及完成條件
欄位/分支類型/必填限制
$object父物件內必填—
contractVersionstring父物件內必填
  • const: "analytics-template/v1"
workspaceIdstring父物件內必填
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
idstring父物件內必填
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
versioninteger父物件內必填
  • minimum: 1
  • maximum: 1000000
namestring父物件內必填
  • minLength: 1
  • maxLength: 100
formatstring父物件內必填
  • enum: ["pptx","docx","xlsx"]
sourceBase64string父物件內必填
  • maxLength: 12582912
  • pattern: "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
sourceSha256string父物件內必填
  • pattern: "^[a-f0-9]{64}$"
mappingsobject父物件內必填
  • additionalProperties: {"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"text"},"value":{"type":"string","maxLength":2000}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","const":"selection"},"field":{"type":"string","enum":["accounts","period","timezone","platforms","dataset","reviewed","coverage"]}},"required":["kind","field"]},{"type":"object","properties":{"kind":{"type":"string","const":"metric"},"platform":{"type":"string","enum":["facebook","instagram","threads","youtube"]},"key":{"type":"string","minLength":1,"maxLength":150},"unit":{"type":"string","minLength":1,"maxLength":100},"grain":{"type":"string","enum":["post","account"]},"measurementKind":{"type":"string","enum":["lifetime","snapshot","period","unknown"]},"accountId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"providerResourceId":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}]},"sourcePath":{"type":"string","maxLength":2000},"requestId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["kind","platform","key","unit","grain","measurementKind"]},{"type":"object","properties":{"kind":{"type":"string","const":"formula"},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":1,"maximum":1000000}},"required":["kind","id","version"]},{"type":"object","properties":{"kind":{"type":"string","const":"table"},"source":{"type":"string","enum":["measurements","formulas"]},"limit":{"type":"integer","minimum":1,"maximum":100}},"required":["kind","source","limit"]},{"type":"object","properties":{"kind":{"type":"string","const":"chart"},"source":{"type":"string","const":"publication_by_platform"}},"required":["kind","source"]}]}
mappings.*object可選/陣列項目—
mappings.*oneOf 1object可選/陣列項目—
mappings.*.kindoneOf 1string父物件內必填
  • const: "text"
mappings.*.valueoneOf 1string父物件內必填
  • maxLength: 2000
mappings.*oneOf 2object可選/陣列項目—
mappings.*.kindoneOf 2string父物件內必填
  • const: "selection"
mappings.*.fieldoneOf 2string父物件內必填
  • enum: ["accounts","period","timezone","platforms","dataset","reviewed","coverage"]
mappings.*oneOf 3object可選/陣列項目—
mappings.*.kindoneOf 3string父物件內必填
  • const: "metric"
mappings.*.platformoneOf 3string父物件內必填
  • enum: ["facebook","instagram","threads","youtube"]
mappings.*.keyoneOf 3string父物件內必填
  • minLength: 1
  • maxLength: 150
mappings.*.unitoneOf 3string父物件內必填
  • minLength: 1
  • maxLength: 100
mappings.*.grainoneOf 3string父物件內必填
  • enum: ["post","account"]
mappings.*.measurementKindoneOf 3string父物件內必填
  • enum: ["lifetime","snapshot","period","unknown"]
mappings.*.accountIdoneOf 3string可選/陣列項目
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
mappings.*.providerResourceIdoneOf 3string | null可選/陣列項目—
mappings.*.providerResourceIdoneOf 3 / anyOf 1string可選/陣列項目
  • minLength: 1
  • maxLength: 512
mappings.*.providerResourceIdoneOf 3 / anyOf 2null可選/陣列項目—
mappings.*.sourcePathoneOf 3string可選/陣列項目
  • maxLength: 2000
mappings.*.requestIdoneOf 3string | null可選/陣列項目—
mappings.*.requestIdoneOf 3 / anyOf 1string可選/陣列項目
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
mappings.*.requestIdoneOf 3 / anyOf 2null可選/陣列項目—
mappings.*oneOf 4object可選/陣列項目—
mappings.*.kindoneOf 4string父物件內必填
  • const: "formula"
mappings.*.idoneOf 4string父物件內必填
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
mappings.*.versiononeOf 4integer父物件內必填
  • minimum: 1
  • maximum: 1000000
mappings.*oneOf 5object可選/陣列項目—
mappings.*.kindoneOf 5string父物件內必填
  • const: "table"
mappings.*.sourceoneOf 5string父物件內必填
  • enum: ["measurements","formulas"]
mappings.*.limitoneOf 5integer父物件內必填
  • minimum: 1
  • maximum: 100
mappings.*oneOf 6object可選/陣列項目—
mappings.*.kindoneOf 6string父物件內必填
  • const: "chart"
mappings.*.sourceoneOf 6string父物件內必填
  • const: "publication_by_platform"
createdAtstring父物件內必填
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
完整 JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "contractVersion": {
      "type": "string",
      "const": "analytics-template/v1"
    },
    "workspaceId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "format": {
      "type": "string",
      "enum": [
        "pptx",
        "docx",
        "xlsx"
      ]
    },
    "sourceBase64": {
      "type": "string",
      "maxLength": 12582912,
      "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
    },
    "sourceSha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "mappings": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,63}$"
      },
      "additionalProperties": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "text"
              },
              "value": {
                "type": "string",
                "maxLength": 2000
              }
            },
            "required": [
              "kind",
              "value"
            ]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "selection"
              },
              "field": {
                "type": "string",
                "enum": [
                  "accounts",
                  "period",
                  "timezone",
                  "platforms",
                  "dataset",
                  "reviewed",
                  "coverage"
                ]
              }
            },
            "required": [
              "kind",
              "field"
            ]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "metric"
              },
              "platform": {
                "type": "string",
                "enum": [
                  "facebook",
                  "instagram",
                  "threads",
                  "youtube"
                ]
              },
              "key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 150
              },
              "unit": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "grain": {
                "type": "string",
                "enum": [
                  "post",
                  "account"
                ]
              },
              "measurementKind": {
                "type": "string",
                "enum": [
                  "lifetime",
                  "snapshot",
                  "period",
                  "unknown"
                ]
              },
              "accountId": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "providerResourceId": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "sourcePath": {
                "type": "string",
                "maxLength": 2000
              },
              "requestId": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "kind",
              "platform",
              "key",
              "unit",
              "grain",
              "measurementKind"
            ]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "formula"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "version": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1000000
              }
            },
            "required": [
              "kind",
              "id",
              "version"
            ]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "table"
              },
              "source": {
                "type": "string",
                "enum": [
                  "measurements",
                  "formulas"
                ]
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              }
            },
            "required": [
              "kind",
              "source",
              "limit"
            ]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "chart"
              },
              "source": {
                "type": "string",
                "const": "publication_by_platform"
              }
            },
            "required": [
              "kind",
              "source"
            ]
          }
        ]
      }
    },
    "createdAt": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    }
  },
  "required": [
    "contractVersion",
    "workspaceId",
    "id",
    "version",
    "name",
    "format",
    "sourceBase64",
    "sourceSha256",
    "mappings",
    "createdAt"
  ]
}

錯誤及安全重試

請檢查 HTTP 狀態及實際回應格式。400 驗證錯誤可能回傳 ZodError;handler 錯誤可能採用 error/message/code envelope。請保留可用的 request_id 或 x-request-id,避免記錄憑證。遇到 401/403 時,須先修正存取問題;429 須遵守 Retry-After。寫入結果未明或回傳 5xx 時,請先讀取原有結果,再決定是否重試。只有操作支援時才可重用 idempotency key;並無通用重試或 exactly-once 保證。

問題排解指南

範例

以下虛構值已按 contract 驗證,並非真實帳戶 ID、憑證或發佈紀錄。請以已授權範圍回傳的 ID、已準備完成的素材及已審核排程取代,並在寫入前核對平台資格。此頁不會呼叫 API。

在伺服器環境設定 SOSOAPI_ACCESS_TOKEN,使用此操作接受的憑證。請勿將憑證放入瀏覽器程式。一般 AI Agent 建議透過 sosoapi auth login 使用瀏覽器 OAuth,由 CLI 管理憑證更新。

request.json

{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "id": "11111111-1111-4111-8111-111111111111",
  "version": 1
}

cURL

curl --request POST \
  "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/analytics-api/reporting/templates/get" \
  -H "Authorization: Bearer $SOSOAPI_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @request.json

JavaScript

// Server-side JavaScript. Do not print tokens or credential-bearing responses.
const token = process.env.SOSOAPI_ACCESS_TOKEN;
if (!token) throw new Error("Set an accepted credential for this operation");
const response = await fetch("https://gqeshlawtcexsapabaui.supabase.co/functions/v1/analytics-api/reporting/templates/get", {
  method: "POST",
  headers: { "Content-Type": "application/json", Authorization: "Bearer " + token },
  body: JSON.stringify({
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "id": "11111111-1111-4111-8111-111111111111",
  "version": 1
})
});
const result = await response.json();
// Check response.ok, the operation-specific body and completion state before continuing.

CLI

npx sosoapi api post /analytics-api/reporting/templates/get < request.json

虛構回應範例

{
  "contractVersion": "analytics-template/v1",
  "workspaceId": "11111111-1111-4111-8111-111111111111",
  "id": "11111111-1111-4111-8111-111111111111",
  "version": 1,
  "name": "example",
  "format": "pptx",
  "sourceBase64": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "sourceSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "mappings": {},
  "createdAt": "2099-01-15T09:00:00Z"
}

MCP: sosoapi_get_report_template